diff --git a/fairmq/plugins/Control.cxx b/fairmq/plugins/Control.cxx index 028d89fb..1a186c76 100644 --- a/fairmq/plugins/Control.cxx +++ b/fairmq/plugins/Control.cxx @@ -23,6 +23,7 @@ namespace { std::atomic gLastSignal(0); std::atomic gSignalCount(0); + std::atomic gSigtermRequested(false); extern "C" auto sigint_handler(int signal) -> void { @@ -36,6 +37,8 @@ namespace extern "C" auto sigterm_handler(int signal) -> void { + ++gSignalCount; + gSigtermRequested = true; gLastSignal = signal; } } @@ -395,7 +398,7 @@ auto Control::SignalHandler() -> void this_thread::sleep_for(chrono::milliseconds(100)); } - if (!fPluginShutdownRequested) { + if (!fPluginShutdownRequested || gSigtermRequested) { LOG(info) << "Received device shutdown request (signal " << gLastSignal << ")."; LOG(info) << "Waiting for graceful device shutdown. Hit Ctrl-C again to abort immediately.";