@@ -128,15 +128,15 @@ connect_dest(State = #{dest := Dest = #{resource_decl := {M, F, MFArgs},
128128 State #{dest => Dest #{current => #{queue_states => QState ,
129129 delivery_id => 1 ,
130130 vhost => VHost },
131- unconfirmed => rabbit_confirms :init (),
131+ unconfirmed => rabbit_shovel_confirms :init (),
132132 rejected => [],
133133 rejected_count => 0 ,
134134 confirmed => [],
135135 confirmed_count => 0 }};
136136 _ ->
137137 State #{dest => Dest #{current => #{queue_states => QState ,
138138 vhost => VHost },
139- unconfirmed => rabbit_confirms :init (),
139+ unconfirmed => rabbit_shovel_confirms :init (),
140140 confirmed => [],
141141 confirmed_count => 0 ,
142142 rejected => [],
@@ -361,8 +361,8 @@ forward(Tag, Msg0, #{dest := #{current := #{queue_states := QState} = Current} =
361361 {#{}, State0 }
362362 end ,
363363 Msg = set_annotations (Msg0 , Dest ),
364- QNames = route (Msg , Dest ),
365- Queues = rabbit_amqqueue :lookup_many (QNames ),
364+ RoutedQNames = route (Msg , Dest ),
365+ Queues = rabbit_amqqueue :lookup_many (RoutedQNames ),
366366 case rabbit_queue_type :deliver (Queues , Msg , Options , QState ) of
367367 {ok , QState1 , Actions } ->
368368 State1 = State #{dest => Dest1 #{current => Current1 #{queue_states => QState1 }}},
@@ -374,12 +374,15 @@ forward(Tag, Msg0, #{dest := #{current := #{queue_states := QState} = Current} =
374374 on_publish ->
375375 rabbit_shovel_behaviour :decr_remaining (
376376 1 ,
377- record_confirms ([{Tag , none }], State2 ));
377+ record_confirms ([{Tag , Tag }], State2 ));
378378 _ ->
379379 rabbit_shovel_behaviour :decr_remaining (1 , State2 )
380380 end ),
381381 MsgSeqNo = maps :get (correlation , Options , undefined ),
382- State4 = process_routing_confirm (MsgSeqNo , QNames , State3 ),
382+ QNames = lists :map (fun ({QName , _ }) -> QName ;
383+ (QName ) -> QName
384+ end , RoutedQNames ),
385+ State4 = process_routing_confirm (MsgSeqNo , Tag , QNames , State3 ),
383386 send_confirms_and_nacks (handle_dest_queue_actions (Actions , State4 ));
384387 {error , Reason } ->
385388 exit ({shutdown , Reason })
@@ -470,7 +473,7 @@ handle_dest_queue_actions(Actions, State) ->
470473 {U , Rej } =
471474 lists :foldr (
472475 fun (SeqNo , {U1 , Acc }) ->
473- case rabbit_confirms :reject (SeqNo , U1 ) of
476+ case rabbit_shovel_confirms :reject (SeqNo , U1 ) of
474477 {ok , MX , U2 } ->
475478 {U2 , [MX | Acc ]};
476479 {error , not_found } ->
@@ -736,15 +739,14 @@ handle_credit_reply({credit_reply, CTag, DeliveryCount, Credit, _Available, _Dra
736739 at_least_one_credit_req_in_flight => false }}
737740 end .
738741
739- process_routing_confirm (undefined , _ , State ) ->
742+ process_routing_confirm (undefined , _ , _ , State ) ->
740743 State ;
741- process_routing_confirm (MsgSeqNo , [], State )
744+ process_routing_confirm (MsgSeqNo , Tag , [], State )
742745 when is_integer (MsgSeqNo ) ->
743- record_confirms ([{MsgSeqNo , none }], State );
744- process_routing_confirm (MsgSeqNo , QRefs , #{dest := Dst = #{unconfirmed := Unconfirmed }} = State ) when is_integer (MsgSeqNo ) ->
745- XName = rabbit_misc :r (<<" /" >>, exchange , <<>>),
746+ record_confirms ([{MsgSeqNo , Tag }], State );
747+ process_routing_confirm (MsgSeqNo , Tag , QRefs , #{dest := Dst = #{unconfirmed := Unconfirmed }} = State ) when is_integer (MsgSeqNo ) ->
746748 State #{dest => Dst #{unconfirmed =>
747- rabbit_confirms :insert (MsgSeqNo , QRefs , XName , Unconfirmed )}}.
749+ rabbit_shovel_confirms :insert (MsgSeqNo , QRefs , Tag , Unconfirmed )}}.
748750
749751record_confirms ([], State ) ->
750752 State ;
@@ -765,7 +767,7 @@ record_rejects(MXs, State = #{dest := Dst = #{rejected := R,
765767 rejected_count => RC + Num }}).
766768
767769confirm (MsgSeqNos , QRef , State = #{dest := Dst = #{unconfirmed := UC }}) ->
768- {ConfirmMXs , UC1 } = rabbit_confirms :confirm (MsgSeqNos , QRef , UC ),
770+ {ConfirmMXs , UC1 } = rabbit_shovel_confirms :confirm (MsgSeqNos , QRef , UC ),
769771 record_confirms (ConfirmMXs , State #{dest => Dst #{unconfirmed => UC1 }}).
770772
771773send_nacks ([], _ , State ) ->
@@ -789,9 +791,9 @@ send_confirms(Cs, Rs, State) ->
789791coalesce_and_send (MsgSeqNos , NegativeMsgSeqNos , MkMsgFun ,
790792 State = #{dest := #{unconfirmed := UC }}) ->
791793 SMsgSeqNos = lists :usort (MsgSeqNos ),
792- UnconfirmedCutoff = case rabbit_confirms :is_empty (UC ) of
794+ UnconfirmedCutoff = case rabbit_shovel_confirms :is_empty (UC ) of
793795 true -> lists :last (SMsgSeqNos ) + 1 ;
794- false -> rabbit_confirms :smallest (UC )
796+ false -> rabbit_shovel_confirms :smallest (UC )
795797 end ,
796798 Cutoff = lists :min ([UnconfirmedCutoff | NegativeMsgSeqNos ]),
797799 {Ms , Ss } = lists :splitwith (fun (X ) -> X < Cutoff end , SMsgSeqNos ),
@@ -810,15 +812,15 @@ send_confirms_and_nacks(State = #{dest := #{confirmed := [],
810812send_confirms_and_nacks (State = #{dest := Dst = #{confirmed := C ,
811813 rejected := R }}) ->
812814 Confirms = lists :append (C ),
813- ConfirmMsgSeqNos = [MsgSeqNo || {MsgSeqNo , _ } <- Confirms ],
815+ ConfirmTags = [Tag || {_ , Tag } <- Confirms ],
814816 Rejects = lists :append (R ),
815- RejectMsgSeqNos = [MsgSeqNo || {MsgSeqNo , _ } <- Rejects ],
817+ RejectTags = [Tag || {_ , Tag } <- Rejects ],
816818 State1 = #{dest := Dst2 }
817- = send_confirms (ConfirmMsgSeqNos ,
818- RejectMsgSeqNos ,
819+ = send_confirms (ConfirmTags ,
820+ RejectTags ,
819821 State #{dest => Dst #{confirmed => [],
820822 confirmed_count => 0 }}),
821- send_nacks (RejectMsgSeqNos ,
822- ConfirmMsgSeqNos ,
823+ send_nacks (RejectTags ,
824+ ConfirmTags ,
823825 State1 #{dest => Dst2 #{rejected => [],
824826 rejected_count => 0 }}).
0 commit comments