Local shovels: optimisation

This commit is contained in:
Diana Parra Corbacho 2025-08-13 14:13:12 +02:00
parent edf0e3c1ff
commit 02fcbc0dc5
1 changed files with 5 additions and 5 deletions

View File

@ -579,8 +579,7 @@ settle(Op, DeliveryTag, Multiple,
consumer_tag := CTag, consumer_tag := CTag,
unacked_message_q := UAMQ0} unacked_message_q := UAMQ0}
} = Src} = State0) -> } = Src} = State0) ->
{Acked, UAMQ} = collect_acks(UAMQ0, DeliveryTag, Multiple), {MsgIds, UAMQ} = collect_acks(UAMQ0, DeliveryTag, Multiple),
MsgIds = [Ack#pending_ack.msg_id || Ack <- Acked],
case rabbit_queue_type:settle(QRef, Op, CTag, MsgIds, QState0) of case rabbit_queue_type:settle(QRef, Op, CTag, MsgIds, QState0) of
{ok, QState1, Actions} -> {ok, QState1, Actions} ->
State = State0#{source => Src#{current => Current#{queue_states => QState1, State = State0#{source => Src#{current => Current#{queue_states => QState1,
@ -603,10 +602,11 @@ collect_acks(UAMQ, DeliveryTag, Multiple) ->
collect_acks(AcknowledgedAcc, RemainingAcc, UAMQ, DeliveryTag, Multiple) -> collect_acks(AcknowledgedAcc, RemainingAcc, UAMQ, DeliveryTag, Multiple) ->
case ?QUEUE:out(UAMQ) of case ?QUEUE:out(UAMQ) of
{{value, UnackedMsg = #pending_ack{delivery_tag = CurrentDT}}, {{value, UnackedMsg = #pending_ack{delivery_tag = CurrentDT,
msg_id = Id}},
UAMQTail} -> UAMQTail} ->
if CurrentDT == DeliveryTag -> if CurrentDT == DeliveryTag ->
{[UnackedMsg | AcknowledgedAcc], {[Id | AcknowledgedAcc],
case RemainingAcc of case RemainingAcc of
[] -> UAMQTail; [] -> UAMQTail;
_ -> ?QUEUE:join( _ -> ?QUEUE:join(
@ -614,7 +614,7 @@ collect_acks(AcknowledgedAcc, RemainingAcc, UAMQ, DeliveryTag, Multiple) ->
UAMQTail) UAMQTail)
end}; end};
Multiple -> Multiple ->
collect_acks([UnackedMsg | AcknowledgedAcc], RemainingAcc, collect_acks([Id | AcknowledgedAcc], RemainingAcc,
UAMQTail, DeliveryTag, Multiple); UAMQTail, DeliveryTag, Multiple);
true -> true ->
collect_acks(AcknowledgedAcc, [UnackedMsg | RemainingAcc], collect_acks(AcknowledgedAcc, [UnackedMsg | RemainingAcc],