diff options
| author | Matthias Radestock <matthias@rabbitmq.com> | 2014-04-23 11:26:57 +0100 |
|---|---|---|
| committer | Matthias Radestock <matthias@rabbitmq.com> | 2014-04-23 11:26:57 +0100 |
| commit | fc49043962f29e1968d9697448e1cccbddb28934 (patch) | |
| tree | 9aaeaa7e8bf07fe4d90735165eee5b9a5d9ac19f | |
| parent | bbf2de0254c8db4236845e8a6d4e2cb651cdd88e (diff) | |
| download | rabbitmq-server-git-fc49043962f29e1968d9697448e1cccbddb28934.tar.gz | |
don't erase aliases quite so eagerly on DOWN
since that can result in completely forgetting about a member when
there are still acks making their way around the right.
| -rw-r--r-- | src/gm.erl | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/gm.erl b/src/gm.erl index 5e9ed460fa..acc9444706 100644 --- a/src/gm.erl +++ b/src/gm.erl @@ -709,15 +709,16 @@ handle_info({'DOWN', MRef, process, _Pid, Reason}, _ -> View1 = group_to_view(record_dead_member_in_group( Member, GroupName, TxnFun)), - {Result, State1} = maybe_erase_aliases(State, View1), handle_callback_result( - {Result, - case alive_view_members(View1) of - [Self] -> State1 #state { - members_state = blank_member_state(), - confirms = purge_confirms(Confirms) }; - _ -> State1 - end}) + case alive_view_members(View1) of + [Self] -> + {Result, State1} = maybe_erase_aliases(State, View1), + {Result, State1 #state { + members_state = blank_member_state(), + confirms = purge_confirms(Confirms) }}; + _ -> + change_view(View1, State) + end) end. |
