Don't prioritise DOWNs from the left. Also explain why we prioritise in various ways.
This commit is contained in:
parent
045bad63a1
commit
c40e02dcf6
15
src/gm.erl
15
src/gm.erl
|
@ -732,8 +732,21 @@ code_change(_OldVsn, State, _Extra) ->
|
|||
|
||||
prioritise_info(flush, _Len, _State) ->
|
||||
1;
|
||||
%% DOWN messages should not overtake initial catchups; if they do we
|
||||
%% will receive a DOWN we do not know what to do with.
|
||||
prioritise_info({'DOWN', _MRef, process, _Pid, _Reason}, _Len,
|
||||
#state { members_state = MS }) when MS /= undefined ->
|
||||
#state { members_state = undefined }) ->
|
||||
0;
|
||||
%% We should not prioritise DOWN messages from our left since
|
||||
%% otherwise the DOWN can overtake any last activity from the left,
|
||||
%% causing that activity to be lost.
|
||||
prioritise_info({'DOWN', _MRef, process, LeftPid, _Reason}, _Len,
|
||||
#state { left = {{_LeftVer, LeftPid}, _MRef2} }) ->
|
||||
0;
|
||||
%% But prioritise all other DOWNs - we want to make sure we are not
|
||||
%% sending activity into the void for too long because our right is
|
||||
%% down but we don't know it.
|
||||
prioritise_info({'DOWN', MRef, process, Pid, _Reason}, _Len, _State) ->
|
||||
1;
|
||||
prioritise_info(_, _Len, _State) ->
|
||||
0.
|
||||
|
|
Loading…
Reference in New Issue