summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2014-07-15 10:32:46 +0100
committerSimon MacMullen <simon@rabbitmq.com>2014-07-15 10:32:46 +0100
commitd4c113d3e387ae561283a79a61023325b4034985 (patch)
tree7045ac590e818472fe17e8144091dd890832b454
parentff4aa4ef90cd60d86210ec0ea4444393072a434f (diff)
downloadrabbitmq-server-bug26286.tar.gz
Improve self-documentingness.bug26286
-rw-r--r--src/gm.erl13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/gm.erl b/src/gm.erl
index 5863ebc4..3113f449 100644
--- a/src/gm.erl
+++ b/src/gm.erl
@@ -619,13 +619,22 @@ handle_call({add_on_right, NewMember}, _From,
members_state = MembersState1 }),
handle_callback_result({Result, {ok, Group}, State1}).
+%% add_on_right causes a catchup to be sent immediately from the left,
+%% so we can never see this from the left neighbour. However, it's
+%% possible for the right neighbour to send us a check_neighbours
+%% immediately before that. We can't possibly handle it, but if we're
+%% in this state we know a catchup is coming imminently anyway. So
+%% just ignore it.
+handle_cast({?TAG, _ReqVer, check_neighbours},
+ State = #state { members_state = undefined }) ->
+ noreply(State);
+
handle_cast({?TAG, ReqVer, Msg},
State = #state { view = View,
members_state = MembersState,
group_name = GroupName }) ->
{Result, State1} =
- case needs_view_update(
- ReqVer, View) andalso MembersState =/= undefined of
+ case needs_view_update(ReqVer, View) of
true -> View1 = group_to_view(dirty_read_group(GroupName)),
MemberState1 = remove_erased_members(MembersState, View1),
change_view(View1, State #state {