From ffd96d0315a196be32784d70bd427fbc363677e7 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Fri, 6 Nov 2020 11:53:02 +0400 Subject: [PATCH] A preparatory patch for MCOL-4170 Refactor services/systemd units to finish their bootstrap ... Moving signal initialization code into separate functions. --- ddlproc/ddlproc.cpp | 36 +++++++++++++--------- dmlproc/dmlproc.cpp | 37 +++++++++++++---------- storage-manager/src/main.cpp | 51 ++++++++++++++++++-------------- versioning/BRM/masternode.cpp | 39 ++++++++++++++---------- versioning/BRM/slavenode.cpp | 37 +++++++++++++---------- writeengine/server/we_server.cpp | 35 +++++++++++++--------- 6 files changed, 139 insertions(+), 96 deletions(-) diff --git a/ddlproc/ddlproc.cpp b/ddlproc/ddlproc.cpp index b8b231cb2..8d75dd5c5 100644 --- a/ddlproc/ddlproc.cpp +++ b/ddlproc/ddlproc.cpp @@ -94,6 +94,26 @@ void added_a_pm(int) } } + +static void setupSignalHandlers() +{ +#ifndef _MSC_VER + /* set up some signal handlers */ + struct sigaction ign; + memset(&ign, 0, sizeof(ign)); + ign.sa_handler = added_a_pm; + sigaction(SIGHUP, &ign, 0); + ign.sa_handler = SIG_IGN; + sigaction(SIGPIPE, &ign, 0); + memset(&ign, 0, sizeof(ign)); + ign.sa_handler = fatalHandler; + sigaction(SIGSEGV, &ign, 0); + sigaction(SIGABRT, &ign, 0); + sigaction(SIGFPE, &ign, 0); +#endif +} + + int main(int argc, char* argv[]) { // Set locale language @@ -126,20 +146,8 @@ int main(int argc, char* argv[]) ResourceManager* rm = ResourceManager::instance(); Dec = DistributedEngineComm::instance(rm); -#ifndef _MSC_VER - /* set up some signal handlers */ - struct sigaction ign; - memset(&ign, 0, sizeof(ign)); - ign.sa_handler = added_a_pm; - sigaction(SIGHUP, &ign, 0); - ign.sa_handler = SIG_IGN; - sigaction(SIGPIPE, &ign, 0); - memset(&ign, 0, sizeof(ign)); - ign.sa_handler = fatalHandler; - sigaction(SIGSEGV, &ign, 0); - sigaction(SIGABRT, &ign, 0); - sigaction(SIGFPE, &ign, 0); -#endif + + setupSignalHandlers(); ddlprocessor::DDLProcessor ddlprocessor(1, 20); diff --git a/dmlproc/dmlproc.cpp b/dmlproc/dmlproc.cpp index 617023973..149da4d54 100644 --- a/dmlproc/dmlproc.cpp +++ b/dmlproc/dmlproc.cpp @@ -509,6 +509,27 @@ int8_t setupCwd() } } // Namewspace + +static void setupSignalHandlers() +{ +#ifndef _MSC_VER + /* set up some signal handlers */ + struct sigaction ign; + memset(&ign, 0, sizeof(ign)); + ign.sa_handler = added_a_pm; + sigaction(SIGHUP, &ign, 0); + ign.sa_handler = SIG_IGN; + sigaction(SIGPIPE, &ign, 0); + + memset(&ign, 0, sizeof(ign)); + ign.sa_handler = fatalHandler; + sigaction(SIGSEGV, &ign, 0); + sigaction(SIGABRT, &ign, 0); + sigaction(SIGFPE, &ign, 0); +#endif +} + + int main(int argc, char* argv[]) { BRM::DBRM dbrm; @@ -694,21 +715,7 @@ int main(int argc, char* argv[]) Dec = DistributedEngineComm::instance(rm); -#ifndef _MSC_VER - /* set up some signal handlers */ - struct sigaction ign; - memset(&ign, 0, sizeof(ign)); - ign.sa_handler = added_a_pm; - sigaction(SIGHUP, &ign, 0); - ign.sa_handler = SIG_IGN; - sigaction(SIGPIPE, &ign, 0); - - memset(&ign, 0, sizeof(ign)); - ign.sa_handler = fatalHandler; - sigaction(SIGSEGV, &ign, 0); - sigaction(SIGABRT, &ign, 0); - sigaction(SIGFPE, &ign, 0); -#endif + setupSignalHandlers(); dmlserver.start(); diff --git a/storage-manager/src/main.cpp b/storage-manager/src/main.cpp index 9dd8d0470..63f09923f 100644 --- a/storage-manager/src/main.cpp +++ b/storage-manager/src/main.cpp @@ -74,29 +74,9 @@ void coreSM(int sig) signalCaught = true; } -int main(int argc, char** argv) + +static void setupSignalHandlers() { - - SMLogging* logger = SMLogging::get(); - IOCoordinator* ioc = NULL; - Cache* cache = NULL; - Synchronizer* sync = NULL; - Replicator* rep = NULL; - - /* Instantiate objects to have them verify config settings before continuing */ - try - { - ioc = IOCoordinator::get(); - cache = Cache::get(); - sync = Synchronizer::get(); - rep = Replicator::get(); - } - catch (exception &e) - { - logger->log(LOG_INFO, "StorageManager init FAIL: %s", e.what()); - return -1; - } - struct sigaction sa; memset(&sa, 0, sizeof(sa)); @@ -123,6 +103,33 @@ int main(int argc, char** argv) sa.sa_handler = printKPIs; sigaction(SIGUSR2, &sa, NULL); +} + + +int main(int argc, char** argv) +{ + + SMLogging* logger = SMLogging::get(); + IOCoordinator* ioc = NULL; + Cache* cache = NULL; + Synchronizer* sync = NULL; + Replicator* rep = NULL; + + /* Instantiate objects to have them verify config settings before continuing */ + try + { + ioc = IOCoordinator::get(); + cache = Cache::get(); + sync = Synchronizer::get(); + rep = Replicator::get(); + } + catch (exception &e) + { + logger->log(LOG_INFO, "StorageManager init FAIL: %s", e.what()); + return -1; + } + + setupSignalHandlers(); int ret = 0; diff --git a/versioning/BRM/masternode.cpp b/versioning/BRM/masternode.cpp index a358a04ae..e9826e367 100644 --- a/versioning/BRM/masternode.cpp +++ b/versioning/BRM/masternode.cpp @@ -100,6 +100,28 @@ void reload(int num) } */ + +static void setupSignalHandlers() +{ + /* XXXPAT: we might want to install signal handlers for every signal */ + + signal(SIGINT, stop); + signal(SIGTERM, stop); +#ifndef _MSC_VER + signal(SIGHUP, SIG_IGN); + signal(SIGUSR1, restart); + signal(SIGPIPE, SIG_IGN); +#endif + struct sigaction ign; + + memset(&ign, 0, sizeof(ign)); + ign.sa_handler = fatalHandler; + sigaction(SIGSEGV, &ign, 0); + sigaction(SIGABRT, &ign, 0); + sigaction(SIGFPE, &ign, 0); +} + + int main(int argc, char** argv) { // Set locale language @@ -130,22 +152,7 @@ int main(int argc, char** argv) (void)config::Config::makeConfig(); - /* XXXPAT: we might want to install signal handlers for every signal */ - - signal(SIGINT, stop); - signal(SIGTERM, stop); -#ifndef _MSC_VER - signal(SIGHUP, SIG_IGN); - signal(SIGUSR1, restart); - signal(SIGPIPE, SIG_IGN); -#endif - struct sigaction ign; - - memset(&ign, 0, sizeof(ign)); - ign.sa_handler = fatalHandler; - sigaction(SIGSEGV, &ign, 0); - sigaction(SIGABRT, &ign, 0); - sigaction(SIGFPE, &ign, 0); + setupSignalHandlers(); idbdatafile::IDBPolicy::configIDBPolicy(); diff --git a/versioning/BRM/slavenode.cpp b/versioning/BRM/slavenode.cpp index d862a1b44..86fed3f8c 100644 --- a/versioning/BRM/slavenode.cpp +++ b/versioning/BRM/slavenode.cpp @@ -76,6 +76,27 @@ void reset(int sig) comm->reset(); } + +static void setupSignalHandlers() +{ +#ifdef SIGHUP + signal(SIGHUP, reset); +#endif + signal(SIGINT, stop); + signal(SIGTERM, stop); +#ifdef SIGPIPE + signal(SIGPIPE, SIG_IGN); +#endif + + struct sigaction ign; + memset(&ign, 0, sizeof(ign)); + ign.sa_handler = fatalHandler; + sigaction(SIGSEGV, &ign, 0); + sigaction(SIGABRT, &ign, 0); + sigaction(SIGFPE, &ign, 0); +} + + int main(int argc, char** argv) { // Set locale language @@ -118,21 +139,7 @@ int main(int argc, char** argv) exit(1); } -#ifdef SIGHUP - signal(SIGHUP, reset); -#endif - signal(SIGINT, stop); - signal(SIGTERM, stop); -#ifdef SIGPIPE - signal(SIGPIPE, SIG_IGN); -#endif - - struct sigaction ign; - memset(&ign, 0, sizeof(ign)); - ign.sa_handler = fatalHandler; - sigaction(SIGSEGV, &ign, 0); - sigaction(SIGABRT, &ign, 0); - sigaction(SIGFPE, &ign, 0); + setupSignalHandlers(); if (!(argc >= 3 && (arg = argv[2]) == "fg")) err = fork(); diff --git a/writeengine/server/we_server.cpp b/writeengine/server/we_server.cpp index 1dda4bf0a..321a7ba0f 100644 --- a/writeengine/server/we_server.cpp +++ b/writeengine/server/we_server.cpp @@ -102,6 +102,26 @@ int setupResources() return 0; } + +static void setupSignalHandlers() +{ +#ifndef _MSC_VER + struct sigaction sa; + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = added_a_pm; + sigaction(SIGHUP, &sa, 0); + sa.sa_handler = SIG_IGN; + sigaction(SIGPIPE, &sa, 0); + + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = fatalHandler; + sigaction(SIGSEGV, &sa, 0); + sigaction(SIGABRT, &sa, 0); + sigaction(SIGFPE, &sa, 0); +#endif +} + + int main(int argc, char** argv) { // Set locale language @@ -142,20 +162,7 @@ int main(int argc, char** argv) } } -#ifndef _MSC_VER - struct sigaction sa; - memset(&sa, 0, sizeof(sa)); - sa.sa_handler = added_a_pm; - sigaction(SIGHUP, &sa, 0); - sa.sa_handler = SIG_IGN; - sigaction(SIGPIPE, &sa, 0); - - memset(&sa, 0, sizeof(sa)); - sa.sa_handler = fatalHandler; - sigaction(SIGSEGV, &sa, 0); - sigaction(SIGABRT, &sa, 0); - sigaction(SIGFPE, &sa, 0); -#endif + setupSignalHandlers(); // Init WriteEngine Wrapper (including Config Columnstore.xml cache) WriteEngine::WriteEngineWrapper::init( WriteEngine::SUBSYSTEM_ID_WE_SRV );