diff --git a/arangod/RestServer/ArangoServer.cpp b/arangod/RestServer/ArangoServer.cpp index cd92352d30..a21eb24d0f 100644 --- a/arangod/RestServer/ArangoServer.cpp +++ b/arangod/RestServer/ArangoServer.cpp @@ -826,6 +826,7 @@ void ArangoServer::buildApplicationServer() { } int ArangoServer::startupServer() { + InitializeWorkMonitor(); TRI_InitializeStatistics(); OperationMode::server_operation_mode_e mode = @@ -1174,12 +1175,6 @@ int ArangoServer::startupServer() { } - // ............................................................................. - // start the work monitor - // ............................................................................. - - InitializeWorkMonitor(); - // ............................................................................. // start the main event loop // ............................................................................. diff --git a/lib/Basics/Common.h b/lib/Basics/Common.h index ad3862dd3f..fe3c75a36a 100644 --- a/lib/Basics/Common.h +++ b/lib/Basics/Common.h @@ -204,6 +204,7 @@ static inline uint32_t TRI_64to32(uint64_t x) { #define FATAL_ERROR_EXIT(...) \ do { \ + std::abort(); \ std::string bt; \ TRI_GetBacktrace(bt); \ if (!bt.empty()) { \ diff --git a/lib/Basics/WorkMonitor.cpp b/lib/Basics/WorkMonitor.cpp index 461c7a38dc..6b163627d6 100644 --- a/lib/Basics/WorkMonitor.cpp +++ b/lib/Basics/WorkMonitor.cpp @@ -601,4 +601,7 @@ void arangodb::InitializeWorkMonitor() { /// @brief stops the work monitor //////////////////////////////////////////////////////////////////////////////// -void arangodb::ShutdownWorkMonitor() { WORK_MONITOR.beginShutdown(); } +void arangodb::ShutdownWorkMonitor() { + WORK_MONITOR_STOPPED.store(true); + WORK_MONITOR.beginShutdown(); +}