summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2013-10-28 15:04:45 +0000
committerSimon MacMullen <simon@rabbitmq.com>2013-10-28 15:04:45 +0000
commitfd453187fae59481b49f3768a6595f502264d7ad (patch)
treebd4990eef19ef07be9a73dff2ed5bf1e487ca2dd
parent3777b5c641be257d62d9a4c1a7736bb6aed1c436 (diff)
downloadrabbitmq-server-fd453187fae59481b49f3768a6595f502264d7ad.tar.gz
We can get down_from_gm twice in a row, don't blow up if we do.
-rw-r--r--src/rabbit_mirror_queue_slave.erl5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/rabbit_mirror_queue_slave.erl b/src/rabbit_mirror_queue_slave.erl
index b1a86493..331b6434 100644
--- a/src/rabbit_mirror_queue_slave.erl
+++ b/src/rabbit_mirror_queue_slave.erl
@@ -663,8 +663,13 @@ confirm_sender_death(Pid) ->
ok.
forget_sender(_, running) -> false;
+forget_sender(down_from_gm, down_from_gm) -> false; %% [1]
forget_sender(Down1, Down2) when Down1 =/= Down2 -> true.
+%% [1] If another slave goes through confirm_sender_death/1 before we
+%% do we can get two GM sender_death messages in a row for the same
+%% channel - don't treeat that as anything special.
+
%% Record and process lifetime events from channels. Forget all about a channel
%% only when down notifications are received from both the channel and from gm.
maybe_forget_sender(ChPid, ChState, State = #state { sender_queues = SQ,