summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2009-11-30 18:29:35 +0000
committerMatthew Sackman <matthew@lshift.net>2009-11-30 18:29:35 +0000
commit7cae3cf57979f5b8643e03c285a5a0c4f1d585cf (patch)
treeffbe23ccf74298c0cf34be241a3031a8bb25a000
parent5214d9b04817e87a7cfbb2ae1a1b44276a4789a9 (diff)
downloadrabbitmq-server-git-7cae3cf57979f5b8643e03c285a5a0c4f1d585cf.tar.gz
Only pull in one segment at a time from γ into q3
-rw-r--r--src/rabbit_variable_queue.erl17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl
index 6fc89cb4cf..0a5909a055 100644
--- a/src/rabbit_variable_queue.erl
+++ b/src/rabbit_variable_queue.erl
@@ -702,8 +702,10 @@ test_keep_msg_in_ram(SeqId, #vqstate { target_ram_msg_count = TargetRamMsgCount,
msg;
_ ->
case queue:is_empty(Q1) of
- true -> index;
- false -> msg %% can push out elders to disk
+ true -> index;
+ %% Can push out elders (in q1) to disk. This may also
+ %% result in the msg itself going to disk and q2/q3.
+ false -> msg
end
end.
@@ -857,12 +859,11 @@ maybe_gammas_to_betas(State =
q2 = queue:new(),
q3 = queue:join(Q3a, Q2) };
N when N > 0 ->
- maybe_gammas_to_betas(
- State1 #vqstate {
- q3 = Q3a,
- gamma = #gamma { start_seq_id = Gamma1SeqId,
- count = N,
- end_seq_id = GammaSeqIdEnd } })
+ State1 #vqstate {
+ q3 = Q3a,
+ gamma = #gamma { start_seq_id = Gamma1SeqId,
+ count = N,
+ end_seq_id = GammaSeqIdEnd } }
end
end.