From a2460861a39d04bd01bcce6f047425d72cb87bd9 Mon Sep 17 00:00:00 2001 From: DarthArgus Date: Sun, 3 Jun 2018 14:04:05 -0500 Subject: [PATCH] it's always nice to be signal aware... using SIGTERM and having all processes know how to cleanly exit when it is received benefits us even when not profiling (kill -1 ) --- .../CommoditiesServer/src/linux/main.cpp | 12 ++++++++++++ .../ConnectionServer/src/linux/main.cpp | 17 +++++++++++++---- .../application/LogServer/src/linux/main.cpp | 19 +++++++++++++++---- .../LoginServer/src/linux/main.cpp | 9 +-------- .../PlanetServer/src/linux/main.cpp | 17 +++++++++++++---- .../TaskManager/src/linux/ProcessSpawner.cpp | 2 +- .../TaskManager/src/linux/main.cpp | 17 +++++++++++++---- .../SwgDatabaseServer/src/linux/main.cpp | 17 +++++++++++++---- .../SwgGameServer/src/linux/main.cpp | 16 ++++++++++++---- 9 files changed, 93 insertions(+), 33 deletions(-) diff --git a/engine/server/application/CommoditiesServer/src/linux/main.cpp b/engine/server/application/CommoditiesServer/src/linux/main.cpp index ce3735d1..1b4bda37 100755 --- a/engine/server/application/CommoditiesServer/src/linux/main.cpp +++ b/engine/server/application/CommoditiesServer/src/linux/main.cpp @@ -3,6 +3,7 @@ // Author: Justin Randall //----------------------------------------------------------------------- +#include #include "FirstCommodityServer.h" @@ -27,10 +28,21 @@ #include "LocalizationManager.h" #include "UnicodeUtils.h" +inline void signalHandler(int s){ + printf("CommoditiesServer terminating, signal %d\n",s); + exit(0); +} + //----------------------------------------------------------------------- int main(int argc, char ** argv) { + struct sigaction sigIntHandler; + sigIntHandler.sa_handler = signalHandler; + sigemptyset(&sigIntHandler.sa_mask); + sigIntHandler.sa_flags = 0; + sigaction(SIGINT, &sigIntHandler, NULL); + SetupSharedThread::install(); SetupSharedDebug::install(1024); diff --git a/engine/server/application/ConnectionServer/src/linux/main.cpp b/engine/server/application/ConnectionServer/src/linux/main.cpp index f002559c..912d7b23 100755 --- a/engine/server/application/ConnectionServer/src/linux/main.cpp +++ b/engine/server/application/ConnectionServer/src/linux/main.cpp @@ -1,3 +1,5 @@ +#include + #include "FirstConnectionServer.h" #include "ConfigConnectionServer.h" #include "ConnectionServer.h" @@ -12,6 +14,11 @@ #include "sharedRandom/SetupSharedRandom.h" #include "sharedThread/SetupSharedThread.h" +inline void signalHandler(int s){ + printf("ConnectionServer terminating, signal %d\n",s); + exit(0); +} + // ====================================================================== void dumpPid(const char * argv) @@ -25,6 +32,12 @@ void dumpPid(const char * argv) int main(int argc, char ** argv) { + struct sigaction sigIntHandler; + sigIntHandler.sa_handler = signalHandler; + sigemptyset(&sigIntHandler.sa_mask); + sigIntHandler.sa_flags = 0; + sigaction(SIGINT, &sigIntHandler, NULL); + SetupSharedThread::install(); SetupSharedDebug::install(1024); @@ -53,10 +66,6 @@ int main(int argc, char ** argv) NetworkHandler::remove(); SetupSharedFoundation::remove(); SetupSharedThread::remove(); - -#ifdef ENABLE_PROFILING - exit(0); -#endif return 0; } diff --git a/engine/server/application/LogServer/src/linux/main.cpp b/engine/server/application/LogServer/src/linux/main.cpp index 5346cbe6..a25bec20 100755 --- a/engine/server/application/LogServer/src/linux/main.cpp +++ b/engine/server/application/LogServer/src/linux/main.cpp @@ -6,6 +6,8 @@ // // ====================================================================== +#include + #include "sharedFoundation/FirstSharedFoundation.h" #include "LogServer.h" @@ -17,10 +19,23 @@ #include "sharedNetworkMessages/SetupSharedNetworkMessages.h" #include "sharedThread/SetupSharedThread.h" +#ifdef ENABLE_PROFILING +inline void signalHandler(int s){ + printf("LogServer terminating, signal %d\n",s); + exit(0); +} +#endif + // ====================================================================== int main(int argc, char **argv) { + struct sigaction sigIntHandler; + sigIntHandler.sa_handler = signalHandler; + sigemptyset(&sigIntHandler.sa_mask); + sigIntHandler.sa_flags = 0; + sigaction(SIGINT, &sigIntHandler, NULL); + SetupSharedThread::install(); SetupSharedDebug::install(1024); @@ -47,10 +62,6 @@ int main(int argc, char **argv) SetupSharedFoundation::remove(); SetupSharedThread::remove(); -#ifdef ENABLE_PROFILING - exit(0); -#endif - return 0; } diff --git a/engine/server/application/LoginServer/src/linux/main.cpp b/engine/server/application/LoginServer/src/linux/main.cpp index 03efc534..7c31ca84 100755 --- a/engine/server/application/LoginServer/src/linux/main.cpp +++ b/engine/server/application/LoginServer/src/linux/main.cpp @@ -1,9 +1,6 @@ -#include "sharedFoundation/FirstSharedFoundation.h" - -#ifdef ENABLE_PROFILING #include -#endif +#include "sharedFoundation/FirstSharedFoundation.h" #include "ConfigLoginServer.h" #include "LoginServer.h" @@ -19,21 +16,17 @@ // ====================================================================== -#ifdef ENABLE_PROFILING inline void signalHandler(int s){ printf("LoginServer terminating, signal %d\n",s); exit(0); } -#endif int main(int argc, char **argv) { -#ifdef ENABLE_PROFILING struct sigaction sigIntHandler; sigIntHandler.sa_handler = signalHandler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0; sigaction(SIGINT, &sigIntHandler, NULL); -#endif SetupSharedThread::install(); SetupSharedDebug::install(1024); diff --git a/engine/server/application/PlanetServer/src/linux/main.cpp b/engine/server/application/PlanetServer/src/linux/main.cpp index 8cdb46bc..52ee1b0b 100755 --- a/engine/server/application/PlanetServer/src/linux/main.cpp +++ b/engine/server/application/PlanetServer/src/linux/main.cpp @@ -1,3 +1,5 @@ +#include + #include "FirstPlanetServer.h" #include "ConfigPlanetServer.h" #include "PlanetServer.h" @@ -14,6 +16,11 @@ #include "sharedThread/SetupSharedThread.h" #include "sharedUtility/SetupSharedUtility.h" +inline void signalHandler(int s){ + printf("PlanetServer terminating, signal %d\n",s); + exit(0); +} + // ====================================================================== void dumpPid(const char * argv) @@ -27,6 +34,12 @@ void dumpPid(const char * argv) int main(int argc, char ** argv) { + struct sigaction sigIntHandler; + sigIntHandler.sa_handler = signalHandler; + sigemptyset(&sigIntHandler.sa_mask); + sigIntHandler.sa_flags = 0; + sigaction(SIGINT, &sigIntHandler, NULL); + // dumpPid(argv[0]); SetupSharedThread::install(); @@ -66,9 +79,5 @@ int main(int argc, char ** argv) SetupSharedFoundation::remove(); SetupSharedThread::remove(); -#ifdef ENABLE_PROFILING - exit(0); -#endif - return 0; } diff --git a/engine/server/application/TaskManager/src/linux/ProcessSpawner.cpp b/engine/server/application/TaskManager/src/linux/ProcessSpawner.cpp index e63ffd6b..f0327e4a 100755 --- a/engine/server/application/TaskManager/src/linux/ProcessSpawner.cpp +++ b/engine/server/application/TaskManager/src/linux/ProcessSpawner.cpp @@ -152,7 +152,7 @@ bool ProcessSpawner::isProcessActive(uint32 pid) void ProcessSpawner::kill(uint32 pid) { - IGNORE_RETURN(::kill(static_cast(pid), SIGKILL)); + IGNORE_RETURN(::kill(static_cast(pid), SIGTERM)); int status; IGNORE_RETURN(waitpid(static_cast(pid), &status, 0)); } diff --git a/engine/server/application/TaskManager/src/linux/main.cpp b/engine/server/application/TaskManager/src/linux/main.cpp index 8ee0052f..f493ac95 100755 --- a/engine/server/application/TaskManager/src/linux/main.cpp +++ b/engine/server/application/TaskManager/src/linux/main.cpp @@ -1,3 +1,5 @@ +#include + #include "sharedFoundation/FirstSharedFoundation.h" #include "ConfigTaskManager.h" @@ -13,10 +15,21 @@ #include "sharedRandom/SetupSharedRandom.h" #include "sharedThread/SetupSharedThread.h" +inline void signalHandler(int s){ + printf("TaskManager terminating, signal %d\n",s); + exit(0); +} + // ====================================================================== int main(int argc, char ** argv) { + struct sigaction sigIntHandler; + sigIntHandler.sa_handler = signalHandler; + sigemptyset(&sigIntHandler.sa_mask); + sigIntHandler.sa_flags = 0; + sigaction(SIGINT, &sigIntHandler, NULL); + SetupSharedThread::install(); SetupSharedDebug::install(1024); @@ -41,9 +54,5 @@ int main(int argc, char ** argv) TaskManager::remove(); SetupSharedFoundation::remove(); -#ifdef ENABLE_PROFILING - exit(0); -#endif - return 0; } diff --git a/game/server/application/SwgDatabaseServer/src/linux/main.cpp b/game/server/application/SwgDatabaseServer/src/linux/main.cpp index 93d348af..e735f624 100755 --- a/game/server/application/SwgDatabaseServer/src/linux/main.cpp +++ b/game/server/application/SwgDatabaseServer/src/linux/main.cpp @@ -1,3 +1,5 @@ +#include + #include "FirstSwgDatabaseServer.h" #include "SwgDatabaseServer/SwgDatabaseServer.h" @@ -19,6 +21,11 @@ #include "swgSharedNetworkMessages/SetupSwgSharedNetworkMessages.h" #include "swgServerNetworkMessages/SetupSwgServerNetworkMessages.h" +inline void signalHandler(int s){ + printf("SwgDatabaseServer terminating, signal %d\n",s); + exit(0); +} + // ====================================================================== void dumpPid(const char * argv) @@ -32,6 +39,12 @@ void dumpPid(const char * argv) int main(int argc, char ** argv) { + struct sigaction sigIntHandler; + sigIntHandler.sa_handler = signalHandler; + sigemptyset(&sigIntHandler.sa_mask); + sigIntHandler.sa_flags = 0; + sigaction(SIGINT, &sigIntHandler, NULL); + // dumpPid(argv[0]); SetupSharedThread::install(); @@ -72,9 +85,5 @@ int main(int argc, char ** argv) SetupSharedFoundation::remove(); SetupSharedThread::remove(); -#ifdef ENABLE_PROFILING - exit(0); -#endif - return 0; } diff --git a/game/server/application/SwgGameServer/src/linux/main.cpp b/game/server/application/SwgGameServer/src/linux/main.cpp index 2510428e..6001bf40 100755 --- a/game/server/application/SwgGameServer/src/linux/main.cpp +++ b/game/server/application/SwgGameServer/src/linux/main.cpp @@ -1,3 +1,5 @@ +#include + #include "FirstSwgGameServer.h" #include "serverGame/GameServer.h" @@ -32,10 +34,20 @@ #include "swgSharedNetworkMessages/SetupSwgSharedNetworkMessages.h" #include "swgServerNetworkMessages/SetupSwgServerNetworkMessages.h" +inline void signalHandler(int s){ + printf("LoginServer terminating, signal %d\n",s); + exit(0); +} + // ====================================================================== int main(int argc, char ** argv) { + struct sigaction sigIntHandler; + sigIntHandler.sa_handler = signalHandler; + sigemptyset(&sigIntHandler.sa_mask); + sigIntHandler.sa_flags = 0; + sigaction(SIGINT, &sigIntHandler, NULL); SetupSharedThread::install(); SetupSharedDebug::install(1024); @@ -136,10 +148,6 @@ int main(int argc, char ** argv) SetupSharedFoundation::remove(); SetupSharedThread::remove (); -#ifdef ENABLE_PROFILING - exit(0); -#endif - return 0; }