From 2d018d38a5ebc340ec5f907dd2b11186552923ab Mon Sep 17 00:00:00 2001 From: Michael Meeks Date: Mon, 15 Apr 2024 16:58:45 +0100 Subject: [PATCH] bgsave: add unit testing hooks for after bgsave fork & pre exit. Signed-off-by: Michael Meeks Change-Id: I35a2ec185762138dc85db39df3e7644c60acfddc --- common/Unit.hpp | 4 ++++ kit/Kit.cpp | 2 ++ kit/KitWebSocket.cpp | 1 + 3 files changed, 7 insertions(+) diff --git a/common/Unit.hpp b/common/Unit.hpp index d24bf0a9bf..90fea519ba 100644 --- a/common/Unit.hpp +++ b/common/Unit.hpp @@ -524,6 +524,10 @@ public: /// Post fork hook - just before we init the child kit virtual void postFork(); + /// Called just after and before bg save process events + virtual void postBackgroundSaveFork() {} + virtual void preBackgroundSaveExit() {} + /// Kit got a message virtual bool filterKitMessage(WebSocketHandler *, std::string &/* message */ ) { diff --git a/kit/Kit.cpp b/kit/Kit.cpp index 52c8f362d1..8a6bdae47a 100644 --- a/kit/Kit.cpp +++ b/kit/Kit.cpp @@ -1425,6 +1425,8 @@ bool Document::forkToSave(const std::function &childSave, int viewId) childSocket.reset(); // now we just have a single socket to our parent + UnitKit::get().postBackgroundSaveFork(); + // Hard drop our previous connections to coolwsd and shared wakeups.x KitSocketPoll::cleanupChildProcess(); diff --git a/kit/KitWebSocket.cpp b/kit/KitWebSocket.cpp index 8f4ca2e8d7..d5553ef5de 100644 --- a/kit/KitWebSocket.cpp +++ b/kit/KitWebSocket.cpp @@ -209,6 +209,7 @@ void BgSaveChildWebSocketHandler::handleMessage(const std::vector& data) void BgSaveChildWebSocketHandler::onDisconnect() { LOG_TRC("Disconnected background web socket to parent kit"); + UnitKit::get().preBackgroundSaveExit(); Util::forcedExit(EX_OK); }