diff --git a/storage-manager/CMakeLists.txt b/storage-manager/CMakeLists.txt index dbd7bb9fd..ab41c4833 100755 --- a/storage-manager/CMakeLists.txt +++ b/storage-manager/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 2.8.12) project(storagemanager) -include_directories(include ${CMAKE_BINARY_DIR}/include) +include_directories(include ${CMAKE_BINARY_DIR}/include ${ENGINE_UTILS_COMMON_INCLUDE}) set(storagemanager_SRCS src/AppendTask.cpp @@ -34,6 +34,7 @@ set(storagemanager_SRCS src/Utilities.cpp src/Ownership.cpp src/PrefixCache.cpp + ../utils/common/crashtrace.cpp ) option(SM_TRACE "Enable some tracing output" OFF) diff --git a/storage-manager/src/main.cpp b/storage-manager/src/main.cpp index 7d7d6d387..e8d68390c 100644 --- a/storage-manager/src/main.cpp +++ b/storage-manager/src/main.cpp @@ -34,6 +34,7 @@ using namespace std; #include "Cache.h" #include "Synchronizer.h" #include "Replicator.h" +#include "crashtrace.h" using namespace storagemanager; @@ -58,7 +59,10 @@ void printKPIs(int sig) void shutdownSM(int sig) { if (!signalCaught) + { (SessionManager::get())->shutdownSM(sig); + fatalHandler(sig); + } signalCaught = true; } @@ -74,12 +78,15 @@ int main(int argc, char** argv) struct sigaction sa; memset(&sa, 0, sizeof(sa)); - for (int i=1; i shutdownSignals{ SIGHUP, SIGINT, SIGQUIT, SIGILL, + SIGTRAP, SIGABRT, SIGBUS, SIGFPE, + SIGSEGV, SIGALRM, SIGTERM, SIGXCPU, + SIGXFSZ, SIGVTALRM, SIGPROF, SIGPOLL, + SIGPWR, SIGSYS}; + sa.sa_handler = shutdownSM; + for (int sig : shutdownSignals) + sigaction(sig, &sa, NULL); + sa.sa_handler = SIG_IGN; sigaction(SIGPIPE, &sa, NULL);