diff options
| author | Diana Corbacho <diana@rabbitmq.com> | 2016-08-16 16:31:12 +0100 |
|---|---|---|
| committer | Diana Corbacho <diana@rabbitmq.com> | 2016-08-16 16:31:12 +0100 |
| commit | e86d65f1f5eb85087ce529921f1ff848cb010230 (patch) | |
| tree | cc4de4ba7c42d53ea9ca7ed2e481925fc04692fb | |
| parent | 4d4144eb920464c60d57896dd2fdeb034714913b (diff) | |
| download | rabbitmq-server-git-e86d65f1f5eb85087ce529921f1ff848cb010230.tar.gz | |
Discard any unexpected messages, such as late replies from gen_server
| -rw-r--r-- | src/gm.erl | 5 | ||||
| -rw-r--r-- | test/gm_SUITE.erl | 11 |
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)). |
