diff options
| author | Matthew Sackman <matthew@rabbitmq.com> | 2011-06-25 12:14:26 +0100 |
|---|---|---|
| committer | Matthew Sackman <matthew@rabbitmq.com> | 2011-06-25 12:14:26 +0100 |
| commit | c5b36e1d11a42c63f0108ede22240d946e8979ae (patch) | |
| tree | 7058d52a88e4b4fb7349a43be431fdacef256f57 | |
| parent | dd38990bd1b1e3f11ba71d85546482367068aa29 (diff) | |
| download | rabbitmq-server-git-c5b36e1d11a42c63f0108ede22240d946e8979ae.tar.gz | |
Correct bug. This was introduced in bug 24116.
| -rw-r--r-- | src/rabbit_variable_queue.erl | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl index a167cca0c5..e1c7830771 100644 --- a/src/rabbit_variable_queue.erl +++ b/src/rabbit_variable_queue.erl @@ -576,10 +576,16 @@ dropwhile1(Pred, State) -> in_r(MsgStatus = #msg_status { msg = undefined, index_on_disk = IndexOnDisk }, State = #vqstate { q3 = Q3, q4 = Q4, ram_index_count = RamIndexCount }) -> - true = queue:is_empty(Q4), %% ASSERTION - State #vqstate { - q3 = bpqueue:in_r(IndexOnDisk, MsgStatus, Q3), - ram_index_count = RamIndexCount + one_if(not IndexOnDisk) }; + case queue:is_empty(Q4) of + true -> + State #vqstate { + q3 = bpqueue:in_r(IndexOnDisk, MsgStatus, Q3), + ram_index_count = RamIndexCount + one_if(not IndexOnDisk) }; + false -> + {MsgStatus1, State1 = #vqstate { q4 = Q4a }} = + read_msg(MsgStatus, State), + State1 #vqstate { q4 = queue:in_r(MsgStatus1, Q4a) } + end; in_r(MsgStatus, State = #vqstate { q4 = Q4 }) -> State #vqstate { q4 = queue:in_r(MsgStatus, Q4) }. |
