diff options
-rw-r--r-- | src/gm.erl | 7 | ||||
-rw-r--r-- | src/rabbit_mirror_queue_coordinator.erl | 2 |
2 files changed, 8 insertions, 1 deletions
@@ -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; |