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
commit9b61963c76fc05aa4209960e7a24c9bc334cd9ce (patch)
treeb579bd9f44b9bd5322003aad02472ac3571c55ae
parent97f271b98959bddb9d30761b31c694df15a1ecf5 (diff)
downloadrabbitmq-server-git-9b61963c76fc05aa4209960e7a24c9bc334cd9ce.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 e0fbaf77df..ef5dd1038f 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}) ->