summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2016-08-16 19:11:32 +0300
committerMichael Klishin <michael@clojurewerkz.org>2016-08-16 19:11:32 +0300
commit9f1c12f8ab553aab2da435f82a805da8b08c9149 (patch)
tree2944223369fc20cf0ec1588a3ec4a7cf4216669b
parentccb5972bc3e75a2295a26899879b9dbdfbb736ed (diff)
parentb02d325f21e643710d0e86bbdcf4206c38182516 (diff)
downloadrabbitmq-server-git-9f1c12f8ab553aab2da435f82a805da8b08c9149.tar.gz
Merge branch 'stable'
-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 3554f01d56..985b5bfa6d 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)).