From e86d65f1f5eb85087ce529921f1ff848cb010230 Mon Sep 17 00:00:00 2001 From: Diana Corbacho Date: Tue, 16 Aug 2016 16:31:12 +0100 Subject: [PATCH 1/2] Discard any unexpected messages, such as late replies from gen_server --- src/gm.erl | 5 ++++- test/gm_SUITE.erl | 11 ++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/gm.erl b/src/gm.erl index 176e14537f2d..4add10063ae3 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 f5ccf75b7032..e4c68a257a91 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)). From 878b6a00ad9ade9adb0c400df6541e63f74b9ede Mon Sep 17 00:00:00 2001 From: Michael Klishin Date: Tue, 16 Aug 2016 19:10:37 +0300 Subject: [PATCH 2/2] Typo --- src/gm.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gm.erl b/src/gm.erl index 4add10063ae3..492117d17fe7 100644 --- a/src/gm.erl +++ b/src/gm.erl @@ -759,7 +759,7 @@ handle_info({'DOWN', MRef, process, _Pid, Reason}, {stop, normal, State} end; handle_info(_, State) -> - %% Discard any unexpected message, such as late replies from neighbour_call/2 + %% Discard any unexpected messages, such as late replies from neighbour_call/2 noreply(State). terminate(Reason, #state { module = Module, callback_args = Args }) ->