summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2010-10-13 14:36:50 +0100
committerMatthew Sackman <matthew@rabbitmq.com>2010-10-13 14:36:50 +0100
commitd6b780f02a700e341295dd17013d3de37c460e13 (patch)
treecb3d7428c78681322e69665f1c319cc6451e1d4d /src
parent2520f4c9992529f7203bad1431d4159a630b512d (diff)
downloadrabbitmq-server-git-d6b780f02a700e341295dd17013d3de37c460e13.tar.gz
This was clearly never tested with > 1 queue: we must be able to cope with both delete_from =/= undefined andalso dict:size > 1; finally, do the erase first, and then we can test for size == 0, which is a little more obvious
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_queue_collector.erl9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/rabbit_queue_collector.erl b/src/rabbit_queue_collector.erl
index e5215660c1..6ac402c8c4 100644
--- a/src/rabbit_queue_collector.erl
+++ b/src/rabbit_queue_collector.erl
@@ -93,11 +93,12 @@ handle_cast(Msg, State) ->
handle_info({'DOWN', MonitorRef, process, _DownPid, _Reason},
State = #state{queues = Queues, delete_from = Deleting}) ->
- case {Deleting, dict:size(Queues)} of
- {undefined, _} -> ok;
- {_, 1} -> gen_server:reply(Deleting, ok)
+ Queues1 = dict:erase(MonitorRef, Queues),
+ case Deleting =/= undefined andalso dict:size(Queues1) =:= 0 of
+ true -> gen_server:reply(Deleting, ok);
+ false -> ok
end,
- {noreply, State#state{queues = dict:erase(MonitorRef, Queues)}}.
+ {noreply, State#state{queues = Queues1}}.
terminate(_Reason, _State) ->
ok.