From 62daba4126d576ac0f3d2600a058258b753d123f Mon Sep 17 00:00:00 2001 From: Diana Parra Corbacho Date: Thu, 2 Oct 2025 13:55:24 +0200 Subject: [PATCH] Local shovel: ensure no more messages are published with delete-after once the limit is reached --- deps/rabbitmq_shovel/src/rabbit_local_shovel.erl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/deps/rabbitmq_shovel/src/rabbit_local_shovel.erl b/deps/rabbitmq_shovel/src/rabbit_local_shovel.erl index 924e20b235b9..22d824c639b6 100644 --- a/deps/rabbitmq_shovel/src/rabbit_local_shovel.erl +++ b/deps/rabbitmq_shovel/src/rabbit_local_shovel.erl @@ -369,6 +369,12 @@ ack(DeliveryTag, Multiple, State) -> nack(DeliveryTag, Multiple, State) -> maybe_grant_credit(settle(requeue, DeliveryTag, Multiple, State)). +forward(_, _, #{source := #{remaining_unacked := 0}} = State) -> + %% We are in on-confirm mode, and are autodelete. We have + %% published all the messages we need to; we just wait for acks to + %% come back. So drop subsequent messages on the floor to be + %% requeued later + State; forward(Tag, Msg0, #{dest := #{current := #{queue_states := QState} = Current} = Dest, ack_mode := AckMode} = State0) -> {Options, #{dest := #{current := Current1} = Dest1} = State} =