summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiana Corbacho <diana@rabbitmq.com>2016-08-16 16:31:12 +0100
committerDiana Corbacho <diana@rabbitmq.com>2016-08-16 16:31:12 +0100
commite86d65f1f5eb85087ce529921f1ff848cb010230 (patch)
treecc4de4ba7c42d53ea9ca7ed2e481925fc04692fb
parent4d4144eb920464c60d57896dd2fdeb034714913b (diff)
downloadrabbitmq-server-git-e86d65f1f5eb85087ce529921f1ff848cb010230.tar.gz
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..4add10063a 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 message, 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)).