diff options
author | Luke Bakken <luke@bakken.io> | 2023-02-22 12:35:22 -0800 |
---|---|---|
committer | Luke Bakken <luke@bakken.io> | 2023-02-22 12:35:22 -0800 |
commit | 1901b2a39b24dc04643b5dbd26a52671f7f0dec5 (patch) | |
tree | 7666363f1bb231e37e5108a3c465a84b748b2905 | |
parent | 9918b03b2c41926aa31d405d217f7a5c6e1b2735 (diff) | |
download | rabbitmq-server-git-rabbitmq-server-7253.tar.gz |
Add signal handler for SIGTERMrabbitmq-server-7253
-rw-r--r-- | deps/rabbit/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_sighandler.erl | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/deps/rabbit/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_sighandler.erl b/deps/rabbit/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_sighandler.erl index 3da0109d98..cb707a74a8 100644 --- a/deps/rabbit/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_sighandler.erl +++ b/deps/rabbit/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_sighandler.erl @@ -25,13 +25,17 @@ %% we can't handle SIGCONT, the signal used to resume the %% program. Unfortunately, it makes a SIGTSTP handler less %% useful here. - sigtstp => ignore + sigtstp => ignore, + + %% SIGTERM is triggered by Ctrl+C when Erlang is running in + %% the foreground. This is also the signal used by Docker to + %% stop a running container. + sigterm => stop }). -define(SIGNAL_HANDLED_BY_ERLANG(Signal), Signal =:= sigusr1 orelse - Signal =:= sigquit orelse - Signal =:= sigterm). + Signal =:= sigquit). -define(SERVER, erl_signal_server). @@ -65,14 +69,11 @@ handle_event(Signal, State) when ?SIGNAL_HANDLED_BY_ERLANG(Signal) -> {ok, State}; handle_event(Signal, State) -> case ?SIGNALS_HANDLED_BY_US of - %% The code below can be uncommented if we introduce a signal - %% which should stop RabbitMQ. - % - %#{Signal := stop} -> - % logger:info( - % "~ts received - shutting down", - % [string:uppercase(atom_to_list(Signal))]), - % ok = init:stop(); + #{Signal := stop} -> + logger:info( + "~ts received - shutting down", + [string:uppercase(atom_to_list(Signal))]), + ok = rabbit:stop_and_halt(); _ -> logger:info( "~ts received - unhandled signal", |