summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2014-04-23 18:37:13 +0100
committerMatthias Radestock <matthias@rabbitmq.com>2014-04-23 18:37:13 +0100
commit2e865618ac8c764b9c1765f49bd058764015cf9b (patch)
tree1983e7ab42cc48f60b00b8b1b6422ae996af7404
parentdbd5a1f0e252aca4eb22173772bec3d5b827fc17 (diff)
downloadrabbitmq-server-bug26084.tar.gz
blank members_state before maybe_erase_aliasesbug26084
thus reverting b01e5808866d We are the only member left. So our usual alias erasure condition of "acks = pubs" needs to go since otherwise erasure could be deferred indefintely, waiting for acks to arrive that never will. Blanking the members_state effectively sets acks = pubs for all aliases, thus enabling their unconditional erasure.
-rw-r--r--src/gm.erl13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/gm.erl b/src/gm.erl
index acc94447..0c0ac349 100644
--- a/src/gm.erl
+++ b/src/gm.erl
@@ -711,13 +711,12 @@ handle_info({'DOWN', MRef, process, _Pid, Reason},
Member, GroupName, TxnFun)),
handle_callback_result(
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)
+ [Self] -> maybe_erase_aliases(
+ State #state {
+ members_state = blank_member_state(),
+ confirms = purge_confirms(Confirms) },
+ View1);
+ _ -> change_view(View1, State)
end)
end.