| 244 | } |
| 245 | |
| 246 | [[noreturn]] static void ImpalaShutdownSignalHandler() { |
| 247 | sigset_t signals; |
| 248 | CHECK_EQ(0, sigemptyset(&signals)); |
| 249 | CHECK_EQ(0, sigaddset(&signals, IMPALA_SHUTDOWN_SIGNAL)); |
| 250 | DCHECK(ExecEnv::GetInstance() != nullptr); |
| 251 | DCHECK(ExecEnv::GetInstance()->impala_server() != nullptr); |
| 252 | ImpalaServer* impala_server = ExecEnv::GetInstance()->impala_server(); |
| 253 | while (true) { |
| 254 | int signal; |
| 255 | int err = sigwait(&signals, &signal); |
| 256 | CHECK(err == 0) << "sigwait(): " << GetStrErrMsg(err) << ": " << err; |
| 257 | CHECK_EQ(IMPALA_SHUTDOWN_SIGNAL, signal); |
| 258 | ShutdownStatusPB shutdown_status; |
| 259 | Status status = impala_server->StartShutdown(-1, &shutdown_status); |
| 260 | if (!status.ok()) { |
| 261 | LOG(ERROR) << "Shutdown signal received but unable to initiate shutdown. Status: " |
| 262 | << status.GetDetail(); |
| 263 | continue; |
| 264 | } |
| 265 | LOG(INFO) << "Shutdown signal received. Current Shutdown Status: " |
| 266 | << ImpalaServer::ShutdownStatusToString(shutdown_status); |
| 267 | } |
| 268 | } |
| 269 | |
| 270 | static void PauseMonitorLoop() { |
| 271 | if (FLAGS_pause_monitor_warn_threshold_ms <= 0) return; |
nothing calls this directly
no test coverage detected