mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-25 09:50:48 +00:00
BaseDaemon: terminate on double SIGINT
This commit is contained in:
parent
a8ed51ac37
commit
3fd4ac0e8b
@ -191,5 +191,6 @@ protected:
|
|||||||
|
|
||||||
std::mutex signal_handler_mutex;
|
std::mutex signal_handler_mutex;
|
||||||
std::condition_variable signal_event;
|
std::condition_variable signal_event;
|
||||||
size_t terminate_signals_counter = 0;
|
std::atomic_size_t terminate_signals_counter{0};
|
||||||
|
std::atomic_size_t sigint_signals_counter{0};
|
||||||
};
|
};
|
||||||
|
@ -909,6 +909,7 @@ void BaseDaemon::handleSignal(int signal_id)
|
|||||||
std::unique_lock<std::mutex> lock(signal_handler_mutex);
|
std::unique_lock<std::mutex> lock(signal_handler_mutex);
|
||||||
{
|
{
|
||||||
++terminate_signals_counter;
|
++terminate_signals_counter;
|
||||||
|
sigint_signals_counter += signal_id == SIGINT;
|
||||||
signal_event.notify_all();
|
signal_event.notify_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -921,9 +922,13 @@ void BaseDaemon::handleSignal(int signal_id)
|
|||||||
void BaseDaemon::onInterruptSignals(int signal_id)
|
void BaseDaemon::onInterruptSignals(int signal_id)
|
||||||
{
|
{
|
||||||
is_cancelled = true;
|
is_cancelled = true;
|
||||||
LOG_INFO(&logger(),
|
LOG_INFO(&logger(), "Received termination signal (" << strsignal(signal_id) << ")");
|
||||||
"Received termination signal (" << strsignal(signal_id) << ")."
|
|
||||||
" Terminate is requested " << terminate_signals_counter << " times.");
|
if (sigint_signals_counter >= 2)
|
||||||
|
{
|
||||||
|
LOG_INFO(&logger(), "Received second signal Interrupt. Immediately terminate.");
|
||||||
|
kill();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user