@@ -809,19 +809,24 @@ delete(Q, _IfUnused, _IfEmpty, ActingUser) when ?amqqueue_is_quorum(Q) ->
809809 ok = force_delete_queue (Servers )
810810 end ,
811811 notify_decorators (QName , shutdown ),
812- ok = delete_queue_data (Q , ActingUser ),
813- _ = erpc :call (LeaderNode , rabbit_core_metrics , queue_deleted , [QName ],
814- ? RPC_TIMEOUT ),
815- {ok , ReadyMsgs };
812+ case delete_queue_data (Q , ActingUser ) of
813+ ok ->
814+ _ = erpc :call (LeaderNode , rabbit_core_metrics , queue_deleted , [QName ],
815+ ? RPC_TIMEOUT ),
816+ {ok , ReadyMsgs };
817+ {error , timeout } ->
818+ {protocol_error , internal_error ,
819+ " The operation to delete queue ~ts from the metadata "
820+ " store timed out" , [rabbit_misc :rs (QName )]}
821+ end ;
816822 {error , {no_more_servers_to_try , Errs }} ->
817823 case lists :all (fun ({{error , noproc }, _ }) -> true ;
818824 (_ ) -> false
819825 end , Errs ) of
820826 true ->
821827 % % If all ra nodes were already down, the delete
822828 % % has succeed
823- delete_queue_data (Q , ActingUser ),
824- {ok , ReadyMsgs };
829+ ok ;
825830 false ->
826831 % % attempt forced deletion of all servers
827832 rabbit_log :warning (
@@ -830,9 +835,15 @@ delete(Q, _IfUnused, _IfEmpty, ActingUser) when ?amqqueue_is_quorum(Q) ->
830835 " Attempting force delete." ,
831836 [rabbit_misc :rs (QName ), Errs ]),
832837 ok = force_delete_queue (Servers ),
833- notify_decorators (QName , shutdown ),
834- delete_queue_data (Q , ActingUser ),
835- {ok , ReadyMsgs }
838+ notify_decorators (QName , shutdown )
839+ end ,
840+ case delete_queue_data (Q , ActingUser ) of
841+ ok ->
842+ {ok , ReadyMsgs };
843+ {error , timeout } ->
844+ {protocol_error , internal_error ,
845+ " The operation to delete queue ~ts from the metadata "
846+ " store timed out" , [rabbit_misc :rs (QName )]}
836847 end
837848 end .
838849
@@ -850,9 +861,13 @@ force_delete_queue(Servers) ->
850861 end || S <- Servers ],
851862 ok .
852863
864+ - spec delete_queue_data (Queue , ActingUser ) -> Ret when
865+ Queue :: amqqueue :amqqueue (),
866+ ActingUser :: rabbit_types :username (),
867+ Ret :: ok | {error , timeout }.
868+
853869delete_queue_data (Queue , ActingUser ) ->
854- _ = rabbit_amqqueue :internal_delete (Queue , ActingUser ),
855- ok .
870+ rabbit_amqqueue :internal_delete (Queue , ActingUser ).
856871
857872
858873delete_immediately (Queue ) ->
0 commit comments