Skip to content

Commit b4d18c4

Browse files
committed
sync delete
1 parent 109ca11 commit b4d18c4

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

deps/rabbit/src/rabbit_amqqueue_process.erl

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
393412
terminated_by({terminated_by, auto_delete}) ->
394413
?INTERNAL_USER;
395414
terminated_by({terminated_by, ActingUser}) ->

0 commit comments

Comments
 (0)