diff options
| author | Dan Engelbrecht <[email protected]> | 2023-09-20 16:08:36 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-09-20 22:08:36 +0200 |
| commit | b29a0e1ec1e93e5acd97b8a78563268de38809f9 (patch) | |
| tree | d2dab69594dfb465186a339c32f2e5746b607aab /src/zenserver/zenserver.cpp | |
| parent | added info verb to vfs command help text (diff) | |
| download | zen-b29a0e1ec1e93e5acd97b8a78563268de38809f9.tar.xz zen-b29a0e1ec1e93e5acd97b8a78563268de38809f9.zip | |
controlled zenserver shutdown (#413)
* Do controlled shutdown of zenserver catching any exception thrown during shutdown
Diffstat (limited to 'src/zenserver/zenserver.cpp')
| -rw-r--r-- | src/zenserver/zenserver.cpp | 56 |
1 files changed, 36 insertions, 20 deletions
diff --git a/src/zenserver/zenserver.cpp b/src/zenserver/zenserver.cpp index 1f37e336f..921e3038d 100644 --- a/src/zenserver/zenserver.cpp +++ b/src/zenserver/zenserver.cpp @@ -226,14 +226,7 @@ namespace utils { class ZenServer : public IHttpStatusProvider { public: - ~ZenServer() - { - m_IoContext.stop(); - if (m_IoRunner.joinable()) - { - m_IoRunner.join(); - } - } + ~ZenServer() {} int Initialize(const ZenServerOptions& ServerOptions, ZenServerState::ZenServerEntry* ServerEntry) { @@ -503,18 +496,7 @@ public: ZEN_INFO(ZEN_APP_NAME " exiting"); - m_IoContext.stop(); - if (m_IoRunner.joinable()) - { - m_IoRunner.join(); - } - Flush(); - - if (m_JobQueue) - { - m_JobQueue->Stop(); - } } void RequestExit(int ExitCode) @@ -531,11 +513,45 @@ public: ZEN_INFO(ZEN_APP_NAME " cleaning up"); try { - m_GcScheduler.Shutdown(); + m_IoContext.stop(); + if (m_IoRunner.joinable()) + { + m_IoRunner.join(); + } + if (m_Http) { m_Http->Close(); } + if (m_JobQueue) + { + m_JobQueue->Stop(); + } + + m_GcScheduler.Shutdown(); + m_AdminService.reset(); + m_VfsService.reset(); + m_ObjStoreService.reset(); + m_FrontendService.reset(); + + m_StructuredCacheService.reset(); + m_UpstreamService.reset(); + m_UpstreamCache.reset(); + m_CacheStore = {}; + +#if ZEN_WITH_COMPUTE_SERVICES + m_HttpFunctionService.reset(); +#endif // ZEN_WITH_COMPUTE_SERVICES + + m_HttpProjectService.reset(); + m_ProjectStore = {}; + m_CidService.reset(); + m_CidStore.reset(); + m_AuthService.reset(); + m_AuthMgr.reset(); + m_WebSocket.reset(); + m_Http = {}; + m_JobQueue.reset(); } catch (std::exception& Ex) { |