summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2013-06-21 11:26:15 +0100
committerSimon MacMullen <simon@rabbitmq.com>2013-06-21 11:26:15 +0100
commit0c3f3e71f9d41361f8afcd903c54db18a5d8385e (patch)
treeb579bd9f44b9bd5322003aad02472ac3571c55ae
parent2a1a5da1bc937b537f356c5b67866679a84d2652 (diff)
downloadrabbitmq-server-0c3f3e71f9d41361f8afcd903c54db18a5d8385e.tar.gz
Don't persist gm_pids; by definition when all we have is the rabbit_durable_queue record the cluster has gone down completely so there can't be any pids. Fixes gm_pids leak. Since we're here, fix a similar but less severe leak in sync_slave_pids. (Less severe because rabbit_mirror_queue_misc:store_updated_slaves/1 has the effect of cleaning it up periodically. But it's still wrong.)
-rw-r--r--src/rabbit_amqqueue.erl5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl
index e0fbaf77..ef5dd103 100644
--- a/src/rabbit_amqqueue.erl
+++ b/src/rabbit_amqqueue.erl
@@ -282,7 +282,10 @@ update(Name, Fun) ->
end.
store_queue(Q = #amqqueue{durable = true}) ->
- ok = mnesia:write(rabbit_durable_queue, Q#amqqueue{slave_pids = []}, write),
+ ok = mnesia:write(rabbit_durable_queue,
+ Q#amqqueue{slave_pids = [],
+ sync_slave_pids = [],
+ gm_pids = []}, write),
ok = mnesia:write(rabbit_queue, Q, write),
ok;
store_queue(Q = #amqqueue{durable = false}) ->