diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2014-06-23 19:53:42 +0100 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2014-06-23 19:53:42 +0100 |
| commit | 93f42fbe153e37851c5cd4014e1d752734a4317d (patch) | |
| tree | 1eb6f3452332225ed6d8d82be0074ca6dd1ee213 /src/gm.erl | |
| parent | 16c680b78c0e6f02cf7b06b37cd762216beb4327 (diff) | |
| download | rabbitmq-server-git-93f42fbe153e37851c5cd4014e1d752734a4317d.tar.gz | |
Add instrumenting for monitors and Mnesia transactions. It actually all seems to work now.
Diffstat (limited to 'src/gm.erl')
| -rw-r--r-- | src/gm.erl | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/gm.erl b/src/gm.erl index fd8da7da27..7790b8d0a4 100644 --- a/src/gm.erl +++ b/src/gm.erl @@ -388,6 +388,9 @@ -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3, prioritise_info/3]). +%% For INSTR_MOD callbacks +-export([call/3, cast/2, monitor/1, demonitor/1]). + -ifndef(use_specs). -export([behaviour_info/1]). -endif. @@ -1192,7 +1195,7 @@ ensure_neighbour(Ver, Self, {Self, undefined}, RealNeighbour) -> ensure_neighbour(_Ver, _Self, {RealNeighbour, MRef}, RealNeighbour) -> {RealNeighbour, MRef}; ensure_neighbour(Ver, Self, {RealNeighbour, MRef}, Neighbour) -> - true = erlang:demonitor(MRef), + true = ?INSTR_MOD:demonitor(MRef), Msg = {?TAG, Ver, check_neighbours}, ok = neighbour_cast(RealNeighbour, Msg), ok = case Neighbour of @@ -1202,7 +1205,7 @@ ensure_neighbour(Ver, Self, {RealNeighbour, MRef}, Neighbour) -> {Neighbour, maybe_monitor(Neighbour, Self)}. maybe_monitor( Self, Self) -> undefined; -maybe_monitor(Other, _Self) -> erlang:monitor(process, get_pid(Other)). +maybe_monitor(Other, _Self) -> ?INSTR_MOD:monitor(get_pid(Other)). check_neighbours(State = #state { self = Self, left = Left, @@ -1461,3 +1464,12 @@ last_pub( [], LP) -> LP; last_pub(List, LP) -> {PubNum, _Msg} = lists:last(List), true = PubNum > LP, %% ASSERTION PubNum. + +%% --------------------------------------------------------------------------- + +%% Uninstrumented versions + +call(Pid, Msg, Timeout) -> gen_server2:call(Pid, Msg, Timeout). +cast(Pid, Msg) -> gen_server2:cast(Pid, Msg). +monitor(Pid) -> erlang:monitor(process, Pid). +demonitor(MRef) -> erlang:demonitor(MRef). |
