Remove unnecessary branch. Also, assertion of q3's emptiness is unnecessary as the rest of the code works perfectly well even if q3 isn't empty

This commit is contained in:
Matthew Sackman 2010-10-22 12:53:46 +01:00
parent 226d9285b9
commit bbae6be610
1 changed files with 32 additions and 37 deletions

View File

@ -1298,44 +1298,39 @@ maybe_deltas_to_betas(State = #vqstate {
q3 = Q3, q3 = Q3,
index_state = IndexState, index_state = IndexState,
transient_threshold = TransientThreshold }) -> transient_threshold = TransientThreshold }) ->
case bpqueue:is_empty(Q3) of #delta { start_seq_id = DeltaSeqId,
false -> count = DeltaCount,
State; end_seq_id = DeltaSeqIdEnd } = Delta,
true -> DeltaSeqId1 =
#delta { start_seq_id = DeltaSeqId, lists:min([rabbit_queue_index:next_segment_boundary(DeltaSeqId),
count = DeltaCount, DeltaSeqIdEnd]),
end_seq_id = DeltaSeqIdEnd } = Delta, {List, IndexState1} =
DeltaSeqId1 = rabbit_queue_index:read(DeltaSeqId, DeltaSeqId1, IndexState),
lists:min([rabbit_queue_index:next_segment_boundary(DeltaSeqId), {Q3a, IndexState2} =
DeltaSeqIdEnd]), betas_from_index_entries(List, TransientThreshold, IndexState1),
{List, IndexState1} = State1 = State #vqstate { index_state = IndexState2 },
rabbit_queue_index:read(DeltaSeqId, DeltaSeqId1, IndexState), case bpqueue:len(Q3a) of
{Q3a, IndexState2} = betas_from_index_entries( 0 ->
List, TransientThreshold, IndexState1), %% we ignored every message in the segment due to it being
State1 = State #vqstate { index_state = IndexState2 }, %% transient and below the threshold
case bpqueue:len(Q3a) of maybe_deltas_to_betas(
State1 #vqstate {
delta = Delta #delta { start_seq_id = DeltaSeqId1 }});
Q3aLen ->
Q3b = bpqueue:join(Q3, Q3a),
case DeltaCount - Q3aLen of
0 -> 0 ->
%% we ignored every message in the segment due to %% delta is now empty, but it wasn't before, so
%% it being transient and below the threshold %% can now join q2 onto q3
maybe_deltas_to_betas( State1 #vqstate { q2 = bpqueue:new(),
State1 #vqstate { delta = ?BLANK_DELTA,
delta = Delta #delta { start_seq_id = DeltaSeqId1 }}); q3 = bpqueue:join(Q3b, Q2) };
Q3aLen -> N when N > 0 ->
Q3b = bpqueue:join(Q3, Q3a), Delta1 = #delta { start_seq_id = DeltaSeqId1,
case DeltaCount - Q3aLen of count = N,
0 -> end_seq_id = DeltaSeqIdEnd },
%% delta is now empty, but it wasn't State1 #vqstate { delta = Delta1,
%% before, so can now join q2 onto q3 q3 = Q3b }
State1 #vqstate { q2 = bpqueue:new(),
delta = ?BLANK_DELTA,
q3 = bpqueue:join(Q3b, Q2) };
N when N > 0 ->
Delta1 = #delta { start_seq_id = DeltaSeqId1,
count = N,
end_seq_id = DeltaSeqIdEnd },
State1 #vqstate { delta = Delta1,
q3 = Q3b }
end
end end
end. end.