diff --git a/src/daemons/GraphDaemon.cpp b/src/daemons/GraphDaemon.cpp index 0b76f558120..d4dc69d9994 100644 --- a/src/daemons/GraphDaemon.cpp +++ b/src/daemons/GraphDaemon.cpp @@ -30,8 +30,8 @@ using nebula::fs::FileUtils; using nebula::graph::GraphService; using nebula::network::NetworkUtils; -static void signalHandler(int sig); -static Status setupSignalHandler(); +static void signalHandler(nebula::graph::GraphServer *gServer, int sig); +static Status setupSignalHandler(nebula::graph::GraphServer *gServer); static void printHelp(const char *prog); #if defined(__x86_64__) extern Status setupBreakpad(); @@ -40,8 +40,6 @@ extern Status setupBreakpad(); DECLARE_string(flagfile); DECLARE_bool(containerized); -std::unique_ptr gServer; - int main(int argc, char *argv[]) { google::SetVersionString(nebula::versionString()); if (argc == 1) { @@ -153,15 +151,15 @@ int main(int argc, char *argv[]) { } LOG(INFO) << "Number of worker threads: " << FLAGS_num_worker_threads; + std::unique_ptr gServer = + std::make_unique(localhost); // Setup the signal handlers - status = setupSignalHandler(); + status = setupSignalHandler(gServer.get()); if (!status.ok()) { LOG(ERROR) << status; return EXIT_FAILURE; } - gServer = std::make_unique(localhost); - if (!gServer->start()) { LOG(ERROR) << "The graph server start failed"; return EXIT_FAILURE; @@ -172,13 +170,14 @@ int main(int argc, char *argv[]) { return EXIT_SUCCESS; } -Status setupSignalHandler() { - return nebula::SignalHandler::install( - {SIGINT, SIGTERM}, - [](nebula::SignalHandler::GeneralSignalInfo *info) { signalHandler(info->sig()); }); +Status setupSignalHandler(nebula::graph::GraphServer *gServer) { + return nebula::SignalHandler::install({SIGINT, SIGTERM}, + [gServer](nebula::SignalHandler::GeneralSignalInfo *info) { + signalHandler(gServer, info->sig()); + }); } -void signalHandler(int sig) { +void signalHandler(nebula::graph::GraphServer *gServer, int sig) { switch (sig) { case SIGINT: case SIGTERM: diff --git a/src/daemons/MetaDaemon.cpp b/src/daemons/MetaDaemon.cpp index 211a88d17d0..cb75a3d36e4 100644 --- a/src/daemons/MetaDaemon.cpp +++ b/src/daemons/MetaDaemon.cpp @@ -53,12 +53,11 @@ DEFINE_int32(meta_http_thread_num, 3, "Number of meta daemon's http thread"); DEFINE_string(pid_file, "pids/nebula-metad.pid", "File to hold the process id"); DEFINE_bool(daemonize, true, "Whether run as a daemon process"); -static std::unique_ptr gServer; static std::unique_ptr gKVStore; -static void signalHandler(int sig); +static void signalHandler(apache::thrift::ThriftServer* gMetaServer, int sig); static void waitForStop(); -static Status setupSignalHandler(); +static Status setupSignalHandler(apache::thrift::ThriftServer* gMetaServer); #if defined(__x86_64__) extern Status setupBreakpad(); #endif @@ -189,8 +188,10 @@ int main(int argc, char* argv[]) { } } + std::unique_ptr gMetaServer = + std::make_unique(); // Setup the signal handlers - status = setupSignalHandler(); + status = setupSignalHandler(gMetaServer.get()); if (!status.ok()) { LOG(ERROR) << status; return EXIT_FAILURE; @@ -215,14 +216,13 @@ int main(int argc, char* argv[]) { std::make_shared(gKVStore.get(), metaClusterId()); LOG(INFO) << "The meta daemon start on " << localhost; try { - gServer = std::make_unique(); - gServer->setPort(FLAGS_port); - gServer->setIdleTimeout(std::chrono::seconds(0)); // No idle timeout on client connection - gServer->setInterface(std::move(handler)); + gMetaServer->setPort(FLAGS_port); + gMetaServer->setIdleTimeout(std::chrono::seconds(0)); // No idle timeout on client connection + gMetaServer->setInterface(std::move(handler)); if (FLAGS_enable_ssl || FLAGS_enable_meta_ssl) { - gServer->setSSLConfig(nebula::sslContextConfig()); + gMetaServer->setSSLConfig(nebula::sslContextConfig()); } - gServer->serve(); // Will wait until the server shuts down + gMetaServer->serve(); // Will wait until the server shuts down waitForStop(); } catch (const std::exception& e) { LOG(ERROR) << "Exception thrown: " << e.what(); @@ -233,19 +233,20 @@ int main(int argc, char* argv[]) { return EXIT_SUCCESS; } -Status setupSignalHandler() { +Status setupSignalHandler(apache::thrift::ThriftServer* gMetaServer) { return nebula::SignalHandler::install( - {SIGINT, SIGTERM}, - [](nebula::SignalHandler::GeneralSignalInfo* info) { signalHandler(info->sig()); }); + {SIGINT, SIGTERM}, [gMetaServer](nebula::SignalHandler::GeneralSignalInfo* info) { + signalHandler(gMetaServer, info->sig()); + }); } -void signalHandler(int sig) { +void signalHandler(apache::thrift::ThriftServer* gMetaServer, int sig) { switch (sig) { case SIGINT: case SIGTERM: FLOG_INFO("Signal %d(%s) received, stopping this server", sig, ::strsignal(sig)); - if (gServer) { - gServer->stop(); + if (gMetaServer) { + gMetaServer->stop(); } break; default: diff --git a/src/daemons/StorageDaemon.cpp b/src/daemons/StorageDaemon.cpp index e40625b531d..aa65b7daf2f 100644 --- a/src/daemons/StorageDaemon.cpp +++ b/src/daemons/StorageDaemon.cpp @@ -45,14 +45,12 @@ using nebula::Status; using nebula::StatusOr; using nebula::network::NetworkUtils; -static void signalHandler(int sig); -static Status setupSignalHandler(); +static void signalHandler(nebula::storage::StorageServer *gStorageServer, int sig); +static Status setupSignalHandler(nebula::storage::StorageServer *gStorageServer); #if defined(__x86_64__) extern Status setupBreakpad(); #endif -std::unique_ptr gStorageServer; - int main(int argc, char *argv[]) { google::SetVersionString(nebula::versionString()); // Detect if the server has already been started @@ -150,8 +148,11 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } + std::unique_ptr gStorageServer = + std::make_unique( + localhost, metaAddrsRet.value(), paths, FLAGS_wal_path, FLAGS_listener_path); // Setup the signal handlers - status = setupSignalHandler(); + status = setupSignalHandler(gStorageServer.get()); if (!status.ok()) { LOG(ERROR) << status; return EXIT_FAILURE; @@ -172,8 +173,6 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } - gStorageServer = std::make_unique( - localhost, metaAddrsRet.value(), paths, FLAGS_wal_path, FLAGS_listener_path); if (!gStorageServer->start()) { LOG(ERROR) << "Storage server start failed"; gStorageServer->stop(); @@ -185,13 +184,14 @@ int main(int argc, char *argv[]) { return EXIT_SUCCESS; } -Status setupSignalHandler() { +Status setupSignalHandler(nebula::storage::StorageServer *gStorageServer) { return nebula::SignalHandler::install( - {SIGINT, SIGTERM}, - [](nebula::SignalHandler::GeneralSignalInfo *info) { signalHandler(info->sig()); }); + {SIGINT, SIGTERM}, [gStorageServer](nebula::SignalHandler::GeneralSignalInfo *info) { + signalHandler(gStorageServer, info->sig()); + }); } -void signalHandler(int sig) { +void signalHandler(nebula::storage::StorageServer *gStorageServer, int sig) { switch (sig) { case SIGINT: case SIGTERM: