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 | aba864887da7a261a8054c438215fe0cb4f1513d (patch) | |
| tree | 06ba37ebdf55346b67be78e608b97dd3fd6c71af /src | |
| parent | e8f50568f840e9f9c2ec4971f1115e883b54dc44 (diff) | |
| download | rabbitmq-server-git-aba864887da7a261a8054c438215fe0cb4f1513d.tar.gz | |
Refrain from discarding updated view when no aliases are removed
Diffstat (limited to 'src')
| -rw-r--r-- | src/gm.erl | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/gm.erl b/src/gm.erl index 8cdb0a3ed8..5b952da9f8 100644 --- a/src/gm.erl +++ b/src/gm.erl @@ -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. |
