summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@novemberain.com>2016-08-16 19:11:02 +0300
committerGitHub <noreply@github.com>2016-08-16 19:11:02 +0300
commitb02d325f21e643710d0e86bbdcf4206c38182516 (patch)
tree237442b2a4ad238bfbf2d05cbd2adc01ed32920a
parent4d4144eb920464c60d57896dd2fdeb034714913b (diff)
parent878b6a00ad9ade9adb0c400df6541e63f74b9ede (diff)
downloadrabbitmq-server-git-b02d325f21e643710d0e86bbdcf4206c38182516.tar.gz
Merge pull request #923 from rabbitmq/rabbitmq-server-922
Discard any unexpected messages, such as late replies from gen_server
-rw-r--r--src/gm.erl5
-rw-r--r--test/gm_SUITE.erl11
2 files changed, 14 insertions, 2 deletions
diff --git a/src/gm.erl b/src/gm.erl
index 176e14537f..492117d17f 100644
--- a/src/gm.erl
+++ b/src/gm.erl
@@ -757,7 +757,10 @@ handle_info({'DOWN', MRef, process, _Pid, Reason},
catch
lost_membership ->
{stop, normal, State}
- end.
+ end;
+handle_info(_, State) ->
+ %% Discard any unexpected messages, such as late replies from neighbour_call/2
+ noreply(State).
terminate(Reason, #state { module = Module, callback_args = Args }) ->
Module:handle_terminate(Args, Reason).
diff --git a/test/gm_SUITE.erl b/test/gm_SUITE.erl
index f5ccf75b70..e4c68a257a 100644
--- a/test/gm_SUITE.erl
+++ b/test/gm_SUITE.erl
@@ -38,7 +38,8 @@ all() ->
broadcast,
confirmed_broadcast,
member_death,
- receive_in_order
+ receive_in_order,
+ unexpected_msg
].
init_per_suite(Config) ->
@@ -114,6 +115,14 @@ receive_in_order(_Config) ->
passed
end).
+unexpected_msg(_Config) ->
+ passed = with_two_members(
+ fun(Pid, _) ->
+ Pid ! {make_ref(), old_gen_server_answer},
+ true = erlang:is_process_alive(Pid),
+ passed
+ end).
+
do_broadcast(Fun) ->
with_two_members(broadcast_fun(Fun)).