rabbit_channel: Ignore DOWN message from monitored process if it exited normally

[Why]
It happens in CI from time to time and it was crashing the channel
process. There is always a `channel.close` method pending in the
channel mailbox.

[How]
For now, log something and ignore the DOWN message. The channel will
exit after handling the pending `channel.close` method anyway.
This commit is contained in:
Jean-Sébastien Pédron 2025-02-13 18:33:40 +01:00
parent 09f1ab47b7
commit 8945b75322
No known key found for this signature in database
GPG Key ID: 39E99761A5FD94CC
1 changed files with 6 additions and 0 deletions

View File

@ -36,6 +36,8 @@
%% When a queue is declared as exclusive on a channel, the channel
%% will notify queue collector of that queue.
-include_lib("kernel/include/logger.hrl").
-include_lib("rabbit_common/include/rabbit_framing.hrl").
-include_lib("rabbit_common/include/rabbit.hrl").
-include_lib("rabbit_common/include/rabbit_misc.hrl").
@ -729,6 +731,10 @@ handle_info({{'DOWN', QName}, _MRef, process, QPid, Reason},
handle_eol(QRef, State)
end;
handle_info({'DOWN', _MRef, process, Pid, normal}, State) ->
?LOG_DEBUG("Process ~0p monitored by channel ~0p exited", [Pid, self()]),
{noreply, State};
handle_info({'EXIT', _Pid, Reason}, State) ->
{stop, Reason, State};