summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2009-10-16 17:48:40 +0100
committerMatthew Sackman <matthew@lshift.net>2009-10-16 17:48:40 +0100
commit5e5f0bce867136740b7989540aab674d4339021f (patch)
tree159835fcb163473350e812662821ab6a3b814818 /src
parent03376e026f7e9705a8c7000f93c515a63a7becc1 (diff)
downloadrabbitmq-server-git-5e5f0bce867136740b7989540aab674d4339021f.tar.gz
empty queues that get deleted should, um, be deleted
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_variable_queue.erl23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl
index ffdb695e40..1b4a0fd468 100644
--- a/src/rabbit_variable_queue.erl
+++ b/src/rabbit_variable_queue.erl
@@ -300,15 +300,18 @@ purge(State) ->
%% needs to delete everything that's been delivered and not ack'd.
delete(State) ->
{_PurgeCount, State1 = #vqstate { index_state = IndexState }} = purge(State),
- case rabbit_queue_index:find_lowest_seq_id_seg_and_next_seq_id(IndexState)
- of
- {N, N} ->
- State1;
- {GammaSeqId, NextSeqId} ->
- {_DeleteCount, IndexState1} =
- delete1(NextSeqId, 0, GammaSeqId, IndexState),
- State1 #vqstate { index_state = IndexState1, len = 0 }
- end.
+ IndexState1 =
+ case rabbit_queue_index:find_lowest_seq_id_seg_and_next_seq_id(
+ IndexState) of
+ {N, N} ->
+ IndexState;
+ {GammaSeqId, NextSeqId} ->
+ {_DeleteCount, IndexState2} =
+ delete1(NextSeqId, 0, GammaSeqId, IndexState),
+ IndexState2
+ end,
+ IndexState3 = rabbit_queue_index:terminate_and_erase(IndexState1),
+ State1 #vqstate { index_state = IndexState3 }.
%% [{Msg, AckTag}]
%% We guarantee that after fetch, only persistent msgs are left on
@@ -385,7 +388,7 @@ persistent_msg_ids(Pubs) ->
delete1(NextSeqId, Count, GammaSeqId, IndexState)
when GammaSeqId >= NextSeqId ->
- {Count, rabbit_queue_index:terminate_and_erase(IndexState)};
+ {Count, IndexState};
delete1(NextSeqId, Count, GammaSeqId, IndexState) ->
Gamma1SeqId = GammaSeqId + rabbit_queue_index:segment_size(),
case rabbit_queue_index:read_segment_entries(GammaSeqId, IndexState) of