@@ -368,10 +368,13 @@ terminate_delete(EmitStats, Reason0, ReplyTo,
368368 % % `node_up' message from `rabbit_node_monitor'. This calls
369369 % % `rabbit_amqqueue:on_node_up/1' which will delete any
370370 % % transient queues.
371- _ = spawn (fun () ->
372- rabbit_amqqueue :internal_delete (
373- Q , ActingUser , Reason0 )
374- end );
371+ Ret = infinite_internal_delete (Q , ActingUser , Reason0 , Len ),
372+ logger :alert (" rabbit_amqqueue:internal_delete: ~p " , [Ret ]),
373+ % _ = spawn(fun() ->
374+ % rabbit_amqqueue:internal_delete(
375+ % Q, ActingUser, Reason0)
376+ % end),
377+ ok ;
375378 _ ->
376379 % % This try-catch block transforms throws to errors since
377380 % % throws are not logged. When mnesia is removed this `try`
@@ -390,6 +393,22 @@ terminate_delete(EmitStats, Reason0, ReplyTo,
390393 BQS1
391394 end .
392395
396+ infinite_internal_delete (Q , ActingUser , Reason , Len ) ->
397+ Reply = try rabbit_amqqueue :internal_delete (Q , ActingUser , Reason ) of
398+ ok ->
399+ {ok , Len };
400+ {error , _ } = Err ->
401+ Err
402+ catch
403+ {error , ReasonE } -> error (ReasonE )
404+ end ,
405+ case Reply of
406+ {error , timeout } ->
407+ infinite_internal_delete (Q , ActingUser , Reason , Len );
408+ _ ->
409+ Reply
410+ end .
411+
393412terminated_by ({terminated_by , auto_delete }) ->
394413 ? INTERNAL_USER ;
395414terminated_by ({terminated_by , ActingUser }) ->
0 commit comments