diff options
| author | Matthew Sackman <matthew@lshift.net> | 2009-10-16 17:48:40 +0100 |
|---|---|---|
| committer | Matthew Sackman <matthew@lshift.net> | 2009-10-16 17:48:40 +0100 |
| commit | 5e5f0bce867136740b7989540aab674d4339021f (patch) | |
| tree | 159835fcb163473350e812662821ab6a3b814818 /src | |
| parent | 03376e026f7e9705a8c7000f93c515a63a7becc1 (diff) | |
| download | rabbitmq-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.erl | 23 |
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 |
