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 | a198c3473eb137201054640f6713b5612501f1d5 (patch) | |
tree | 9aaeaa7e8bf07fe4d90735165eee5b9a5d9ac19f | |
parent | 7e4e9d797661ad391279dc37ea1ae3c6d316850a (diff) | |
download | rabbitmq-server-a198c3473eb137201054640f6713b5612501f1d5.tar.gz |
don't erase aliases quite so eagerly on DOWNbug26119
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
@@ -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. |