Local shovels: optimisation
This commit is contained in:
parent
edf0e3c1ff
commit
02fcbc0dc5
|
@ -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],
|
||||||
|
|
Loading…
Reference in New Issue