Skip to content

Commit

Permalink
fix service crash
Browse files Browse the repository at this point in the history
  • Loading branch information
czpmango committed Jan 1, 2022
1 parent 8be18dc commit 5ba52bd
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 39 deletions.
23 changes: 11 additions & 12 deletions src/daemons/GraphDaemon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -40,8 +40,6 @@ extern Status setupBreakpad();
DECLARE_string(flagfile);
DECLARE_bool(containerized);

std::unique_ptr<nebula::graph::GraphServer> gServer;

int main(int argc, char *argv[]) {
google::SetVersionString(nebula::versionString());
if (argc == 1) {
Expand Down Expand Up @@ -153,15 +151,15 @@ int main(int argc, char *argv[]) {
}
LOG(INFO) << "Number of worker threads: " << FLAGS_num_worker_threads;

std::unique_ptr<nebula::graph::GraphServer> gServer =
std::make_unique<nebula::graph::GraphServer>(localhost);
// Setup the signal handlers
status = setupSignalHandler();
status = setupSignalHandler(gServer.get());
if (!status.ok()) {
LOG(ERROR) << status;
return EXIT_FAILURE;
}

gServer = std::make_unique<nebula::graph::GraphServer>(localhost);

if (!gServer->start()) {
LOG(ERROR) << "The graph server start failed";
return EXIT_FAILURE;
Expand All @@ -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 *gServe, int sig) {
switch (sig) {
case SIGINT:
case SIGTERM:
Expand Down
33 changes: 17 additions & 16 deletions src/daemons/MetaDaemon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<apache::thrift::ThriftServer> gServer;
static std::unique_ptr<nebula::kvstore::KVStore> 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
Expand Down Expand Up @@ -189,8 +188,10 @@ int main(int argc, char* argv[]) {
}
}

std::unique_ptr<apache::thrift::ThriftServer> gMetaServer =
std::make_unique<apache::thrift::ThriftServer>();
// Setup the signal handlers
status = setupSignalHandler();
status = setupSignalHandler(gMetaServer.get());
if (!status.ok()) {
LOG(ERROR) << status;
return EXIT_FAILURE;
Expand All @@ -215,14 +216,13 @@ int main(int argc, char* argv[]) {
std::make_shared<nebula::meta::MetaServiceHandler>(gKVStore.get(), metaClusterId());
LOG(INFO) << "The meta daemon start on " << localhost;
try {
gServer = std::make_unique<apache::thrift::ThriftServer>();
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();
Expand All @@ -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:
Expand Down
22 changes: 11 additions & 11 deletions src/daemons/StorageDaemon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<nebula::storage::StorageServer> gStorageServer;

int main(int argc, char *argv[]) {
google::SetVersionString(nebula::versionString());
// Detect if the server has already been started
Expand Down Expand Up @@ -150,8 +148,11 @@ int main(int argc, char *argv[]) {
return EXIT_FAILURE;
}

std::unique_ptr<nebula::storage::StorageServer> gStorageServer =
std::make_unique<nebula::storage::StorageServer>(
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;
Expand All @@ -172,8 +173,6 @@ int main(int argc, char *argv[]) {
return EXIT_FAILURE;
}

gStorageServer = std::make_unique<nebula::storage::StorageServer>(
localhost, metaAddrsRet.value(), paths, FLAGS_wal_path, FLAGS_listener_path);
if (!gStorageServer->start()) {
LOG(ERROR) << "Storage server start failed";
gStorageServer->stop();
Expand All @@ -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:
Expand Down

0 comments on commit 5ba52bd

Please sign in to comment.