diff options
| author | Dan Engelbrecht <[email protected]> | 2024-04-24 13:25:32 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2024-04-24 13:25:32 +0200 |
| commit | 8be0f10d5fb575f343d91a2398a6d603eb84a445 (patch) | |
| tree | bea4650f6e83a26069a558a8d3701c0764a3b38f /src/zenserver | |
| parent | bump vcpkg and xmake to latest (#40) (diff) | |
| download | zen-8be0f10d5fb575f343d91a2398a6d603eb84a445.tar.xz zen-8be0f10d5fb575f343d91a2398a6d603eb84a445.zip | |
safer gcv2 on error (#60)
- Bugfix: Harden GCv2 when errors occur and gracefully abort GC operation on error
Diffstat (limited to 'src/zenserver')
| -rw-r--r-- | src/zenserver/projectstore/projectstore.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/zenserver/projectstore/projectstore.cpp b/src/zenserver/projectstore/projectstore.cpp index 27e8b2463..874715818 100644 --- a/src/zenserver/projectstore/projectstore.cpp +++ b/src/zenserver/projectstore/projectstore.cpp @@ -3683,7 +3683,7 @@ public: { } - virtual void CompactStore(GcCtx& Ctx, GcCompactStoreStats& Stats, const std::function<uint64_t()>&) + virtual void CompactStore(GcCtx& Ctx, GcCompactStoreStats& Stats, const std::function<uint64_t()>&) override { ZEN_TRACE_CPU("Store::CompactStore"); @@ -3747,6 +3747,8 @@ public: m_OplogPathsToRemove.clear(); } + virtual std::string GetGcName(GcCtx&) override { return fmt::format("projectstore: '{}'", m_BasePath.string()); } + private: std::filesystem::path m_BasePath; std::vector<std::filesystem::path> m_OplogPathsToRemove; @@ -3902,10 +3904,17 @@ public: virtual ~ProjectStoreReferenceChecker() { - m_OplogLock.reset(); - if (m_OplogCaptureEnabled) + try + { + m_OplogLock.reset(); + if (m_OplogCaptureEnabled) + { + m_Oplog.DisableUpdateCapture(); + } + } + catch (const std::exception& Ex) { - m_Oplog.DisableUpdateCapture(); + ZEN_ERROR("~ProjectStoreReferenceChecker threw exception: '{}'", Ex.what()); } } |