summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2010-04-05 23:08:27 +0100
committerMatthew Sackman <matthew@lshift.net>2010-04-05 23:08:27 +0100
commit69ac8068271a48be671699a330d12fd74c7f2779 (patch)
treecbe958fefde04c3c3175adbe9b9947080ab056ef /src
parentdde6c60b61ce3cf371f76b4422fe991085ed6504 (diff)
downloadrabbitmq-server-git-69ac8068271a48be671699a330d12fd74c7f2779.tar.gz
The walker is run within the msg_store process, which traps exits. Thus need to be careful to unlink and ensure we have received any EXIT message generated
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_queue_index.erl6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/rabbit_queue_index.erl b/src/rabbit_queue_index.erl
index 7227481dce..8ad5558387 100644
--- a/src/rabbit_queue_index.erl
+++ b/src/rabbit_queue_index.erl
@@ -461,7 +461,11 @@ queue_index_walker(DurableQueues) when is_list(DurableQueues) ->
queue_index_walker({[], Gatherer}) ->
case gatherer:fetch(Gatherer) of
- finished -> finished;
+ finished -> unlink(Gatherer),
+ receive {'EXIT', Gatherer, _} -> ok
+ after 0 -> ok
+ end,
+ finished;
{value, {MsgId, Count}} -> {MsgId, Count, {[], Gatherer}}
end;
queue_index_walker({[QueueName | QueueNames], Gatherer}) ->