diff options
| -rw-r--r-- | src/rabbit_tests.erl | 16 | ||||
| -rw-r--r-- | src/rabbit_variable_queue.erl | 8 |
2 files changed, 15 insertions, 9 deletions
diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl index c6c62c0685..13aeb85188 100644 --- a/src/rabbit_tests.erl +++ b/src/rabbit_tests.erl @@ -1871,7 +1871,17 @@ test_queue_recover() -> ok = supervisor:terminate_child(rabbit_sup, rabbit_amqqueue_sup), ok = supervisor:delete_child(rabbit_sup, rabbit_amqqueue_sup), ok = rabbit_amqqueue:start(), - {ok, Count} = rabbit_amqqueue:with_or_die( - QName, - fun (Q1) -> rabbit_amqqueue:delete(Q1, false, false) end), + rabbit_amqqueue:with_or_die( + QName, + fun (Q1 = #amqqueue { pid = QPid1 }) -> + CountMinusOne = Count - 1, + {ok, CountMinusOne, {QName, QPid1, _AckTag, true, _Msg}} = + rabbit_amqqueue:basic_get(Q1, self(), false), + exit(QPid1, shutdown), + VQ1 = rabbit_variable_queue:init(QName, true, true), + {{_Msg1, true, _AckTag1, CountMinusOne}, VQ2} = + rabbit_variable_queue:fetch(true, VQ1), + _VQ3 = rabbit_variable_queue:delete_and_terminate(VQ2), + rabbit_amqqueue:internal_delete(QName) + end), passed. diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl index fca0e80ac9..ff2d57afcd 100644 --- a/src/rabbit_variable_queue.erl +++ b/src/rabbit_variable_queue.erl @@ -840,12 +840,8 @@ permitted_ram_index_count(#vqstate { len = Len, q2 = Q2, q3 = Q3, delta = #delta { count = DeltaCount } }) -> - AlphaBetaLen = Len - DeltaCount, - case AlphaBetaLen == 0 of - true -> infinity; - false -> BetaLen = bpqueue:len(Q2) + bpqueue:len(Q3), - BetaLen - trunc(BetaLen * BetaLen / AlphaBetaLen) - end. + BetaLen = bpqueue:len(Q2) + bpqueue:len(Q3), + BetaLen - trunc(BetaLen * BetaLen / (Len - DeltaCount)). should_force_index_to_disk(State = #vqstate { ram_index_count = RamIndexCount }) -> |
