aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/zenserver.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2023-09-20 16:08:36 -0400
committerGitHub <[email protected]>2023-09-20 22:08:36 +0200
commitb29a0e1ec1e93e5acd97b8a78563268de38809f9 (patch)
treed2dab69594dfb465186a339c32f2e5746b607aab /src/zenserver/zenserver.cpp
parentadded info verb to vfs command help text (diff)
downloadzen-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.cpp56
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)
{