Skip to content

Commit 1393a45

Browse files
Merge pull request #305 from rabbitmq/rabbitmq-server-304
refactors betas_from_index_entries/7 > betas_from_index_entries/4
2 parents 53d9612 + 8ed0c81 commit 1393a45

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/rabbit_variable_queue.erl

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,7 +1060,7 @@ maybe_write_delivered(false, _SeqId, IndexState) ->
10601060
maybe_write_delivered(true, SeqId, IndexState) ->
10611061
rabbit_queue_index:deliver([SeqId], IndexState).
10621062

1063-
betas_from_index_entries(List, TransientThreshold, RPA, DPA, QPA, DelsAndAcksFun, State) ->
1063+
betas_from_index_entries(List, TransientThreshold, DelsAndAcksFun, State) ->
10641064
{Filtered, Delivers, Acks, RamReadyCount, RamBytes} =
10651065
lists:foldr(
10661066
fun ({_MsgOrId, SeqId, _MsgProps, IsPersistent, IsDelivered} = M,
@@ -1072,9 +1072,7 @@ betas_from_index_entries(List, TransientThreshold, RPA, DPA, QPA, DelsAndAcksFun
10721072
false -> MsgStatus = m(beta_msg_status(M)),
10731073
HaveMsg = msg_in_ram(MsgStatus),
10741074
Size = msg_size(MsgStatus),
1075-
case (gb_trees:is_defined(SeqId, RPA) orelse
1076-
gb_trees:is_defined(SeqId, DPA) orelse
1077-
gb_trees:is_defined(SeqId, QPA)) of
1075+
case is_msg_in_pending_acks(SeqId, State) of
10781076
false -> {?QUEUE:in_r(MsgStatus, Filtered1),
10791077
Delivers1, Acks1,
10801078
RRC + one_if(HaveMsg),
@@ -1089,6 +1087,13 @@ betas_from_index_entries(List, TransientThreshold, RPA, DPA, QPA, DelsAndAcksFun
10891087
%% been stored in the QI, thus the message must have been in
10901088
%% qi_pending_ack, thus it must already have been in RAM.
10911089

1090+
is_msg_in_pending_acks(SeqId, #vqstate { ram_pending_ack = RPA,
1091+
disk_pending_ack = DPA,
1092+
qi_pending_ack = QPA }) ->
1093+
(gb_trees:is_defined(SeqId, RPA) orelse
1094+
gb_trees:is_defined(SeqId, DPA) orelse
1095+
gb_trees:is_defined(SeqId, QPA)).
1096+
10921097
expand_delta(SeqId, ?BLANK_DELTA_PATTERN(X)) ->
10931098
d(#delta { start_seq_id = SeqId, count = 1, end_seq_id = SeqId + 1 });
10941099
expand_delta(SeqId, #delta { start_seq_id = StartSeqId,
@@ -1822,9 +1827,7 @@ next({delta, #delta{start_seq_id = SeqId,
18221827
next({delta, Delta, [], State}, IndexState) ->
18231828
next({delta, Delta, State}, IndexState);
18241829
next({delta, Delta, [{_, SeqId, _, _, _} = M | Rest], State}, IndexState) ->
1825-
case (gb_trees:is_defined(SeqId, State#vqstate.ram_pending_ack) orelse
1826-
gb_trees:is_defined(SeqId, State#vqstate.disk_pending_ack) orelse
1827-
gb_trees:is_defined(SeqId, State#vqstate.qi_pending_ack)) of
1830+
case is_msg_in_pending_acks(SeqId, State) of
18281831
false -> Next = {delta, Delta, Rest, State},
18291832
{value, beta_msg_status(M), false, Next, IndexState};
18301833
true -> next({delta, Delta, Rest, State}, IndexState)
@@ -1996,9 +1999,6 @@ maybe_deltas_to_betas(DelsAndAcksFun,
19961999
index_state = IndexState,
19972000
ram_msg_count = RamMsgCount,
19982001
ram_bytes = RamBytes,
1999-
ram_pending_ack = RPA,
2000-
disk_pending_ack = DPA,
2001-
qi_pending_ack = QPA,
20022002
disk_read_count = DiskReadCount,
20032003
transient_threshold = TransientThreshold }) ->
20042004
#delta { start_seq_id = DeltaSeqId,
@@ -2011,7 +2011,7 @@ maybe_deltas_to_betas(DelsAndAcksFun,
20112011
IndexState),
20122012
{Q3a, RamCountsInc, RamBytesInc, State1} =
20132013
betas_from_index_entries(List, TransientThreshold,
2014-
RPA, DPA, QPA, DelsAndAcksFun,
2014+
DelsAndAcksFun,
20152015
State #vqstate { index_state = IndexState1 }),
20162016
State2 = State1 #vqstate { ram_msg_count = RamMsgCount + RamCountsInc,
20172017
ram_bytes = RamBytes + RamBytesInc,

0 commit comments

Comments
 (0)