diff options
author | Emile Joubert <emile@rabbitmq.com> | 2012-05-25 14:19:53 +0100 |
---|---|---|
committer | Emile Joubert <emile@rabbitmq.com> | 2012-05-25 14:19:53 +0100 |
commit | b95a2e833fc78dccc688038ebe3a045daa17874a (patch) | |
tree | 06ba37ebdf55346b67be78e608b97dd3fd6c71af | |
parent | f1d74ce57cab7ed65ec3e366308c09f9f24f471a (diff) | |
download | rabbitmq-server-b95a2e833fc78dccc688038ebe3a045daa17874a.tar.gz |
Refrain from discarding updated view when no aliases are removed
-rw-r--r-- | src/gm.erl | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -668,7 +668,7 @@ handle_info({'DOWN', MRef, process, _Pid, _Reason}, {Result, State2} = case alive_view_members(View1) of [Self] -> - {Result1, State1} = maybe_erase_aliases( State ), + {Result1, State1} = maybe_erase_aliases( State, View1 ), {Result1, State1 #state { members_state = blank_member_state(), confirms = purge_confirms(Confirms) }}; @@ -795,7 +795,7 @@ handle_msg({activity, Left, Activity}, confirms = Confirms1 }, Activity3 = activity_finalise(Activity1), ok = maybe_send_activity(Activity3, State1), - {Result, State2} = maybe_erase_aliases(State1), + {Result, State2} = maybe_erase_aliases(State1, View), if_callback_success( Result, fun activity_true/3, fun activity_false/3, Activity3, State2); @@ -1088,10 +1088,10 @@ erase_members_in_group(Members, GroupName) -> maybe_erase_aliases(State = #state { self = Self, group_name = GroupName, - view = View, + view = View0, members_state = MembersState, module = Module, - callback_args = Args }) -> + callback_args = Args }, View) -> #view_member { aliases = Aliases } = fetch_view_member(Self, View), {Erasable, MembersState1} = ?SETS:fold( @@ -1106,10 +1106,10 @@ maybe_erase_aliases(State = #state { self = Self, end, {[], MembersState}, Aliases), State1 = State #state { members_state = MembersState1 }, case Erasable of - [] -> {ok, State1}; + [] -> {ok, State1 #state { view = View }}; _ -> View1 = group_to_view( erase_members_in_group(Erasable, GroupName)), - {callback_view_changed(Args, Module, View, View1), + {callback_view_changed(Args, Module, View0, View1), check_neighbours(State1 #state { view = View1 })} end. |