summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2014-10-07 16:08:35 +0100
committerSimon MacMullen <simon@rabbitmq.com>2014-10-07 16:08:35 +0100
commit52e4635c2200b2b5acb1874271f00a27fea9f0f9 (patch)
treee70a73f06a7cff1034f62170c4dbcf55fffdf4f6
parentcce2494b91bdf4509e977665620faf759c47582f (diff)
parent5f4fedc084556a377235071c5c2801b27695f651 (diff)
downloadrabbitmq-server-bug25739.tar.gz
Merge in defaultbug25739
-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;