diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2013-06-21 11:26:15 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2013-06-21 11:26:15 +0100 |
commit | 0c3f3e71f9d41361f8afcd903c54db18a5d8385e (patch) | |
tree | b579bd9f44b9bd5322003aad02472ac3571c55ae | |
parent | 2a1a5da1bc937b537f356c5b67866679a84d2652 (diff) | |
download | rabbitmq-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.erl | 5 |
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}) -> |