summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gm.erl7
-rw-r--r--src/rabbit_mirror_queue_coordinator.erl2
2 files changed, 8 insertions, 1 deletions
diff --git a/src/gm.erl b/src/gm.erl
index 6c09e664..92246cae 100644
--- a/src/gm.erl
+++ b/src/gm.erl
@@ -975,7 +975,12 @@ store_view_member(VMember = #view_member { id = Id }, {Ver, View}) ->
with_view_member(Fun, View, Id) ->
store_view_member(Fun(fetch_view_member(Id, View)), View).
-fetch_view_member(Id, {_Ver, View}) -> ?DICT:fetch(Id, View).
+fetch_view_member(Id, {_Ver, View}) ->
+ case ?DICT:find(Id, View) of
+ {ok, M} -> M;
+ error -> timer:sleep(1000),
+ exit(normal)
+ end.
find_view_member(Id, {_Ver, View}) -> ?DICT:find(Id, View).
diff --git a/src/rabbit_mirror_queue_coordinator.erl b/src/rabbit_mirror_queue_coordinator.erl
index 3d460528..546fe8b7 100644
--- a/src/rabbit_mirror_queue_coordinator.erl
+++ b/src/rabbit_mirror_queue_coordinator.erl
@@ -357,6 +357,8 @@ handle_cast({gm_deaths, DeadGMPids},
rabbit_mirror_queue_misc:report_deaths(MPid, true, QueueName,
DeadPids),
noreply(State);
+ {ok, MPid2, DeadPids} ->
+ {stop, normal, State};
{error, not_found} ->
{stop, normal, State}
end;