[Libreoffice-commits] online.git: loolwsd/LOOLForKit.cpp loolwsd/LOOLWSD.cpp
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Sun Apr 10 03:28:44 UTC 2016
loolwsd/LOOLForKit.cpp | 11 +++++++++--
loolwsd/LOOLWSD.cpp | 12 ++++++++----
2 files changed, 17 insertions(+), 6 deletions(-)
New commits:
commit 6a907a7a7f70a1ab3d8d99643decb419d684c43f
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat Apr 9 16:53:33 2016 -0400
loolwsd: preFork is done once by ForKit already and sanity check count
Change-Id: I8ee843e35198ef88bdf191c11a2a738fae6e6c30
Reviewed-on: https://gerrit.libreoffice.org/23947
Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
Tested-by: Ashod Nakashian <ashnakash at gmail.com>
diff --git a/loolwsd/LOOLForKit.cpp b/loolwsd/LOOLForKit.cpp
index 66f313c..e5ff99b 100644
--- a/loolwsd/LOOLForKit.cpp
+++ b/loolwsd/LOOLForKit.cpp
@@ -71,8 +71,15 @@ private:
if (tokens[0] == "spawn" && tokens.count() == 2)
{
const auto count = std::stoi(tokens[1]);
- Log::info("Spawning " + tokens[1] + " children on request.");
- ForkCounter = count;
+ if (count > 0)
+ {
+ Log::info("Spawning " + tokens[1] + " children per request.");
+ ForkCounter = count;
+ }
+ else
+ {
+ Log::warn("Cannot spawn " + std::to_string(count) + " children as requested.");
+ }
}
}
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index b70d110..9dd8755 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -152,13 +152,16 @@ static std::condition_variable newChildrenCV;
static std::map<std::string, std::shared_ptr<DocumentBroker>> docBrokers;
static std::mutex docBrokersMutex;
-static void forkChildren(int number)
+static void forkChildren(const int number)
{
assert(!newChildrenMutex.try_lock()); // check it is held.
- const std::string aMessage = "spawn " + std::to_string(number) + "\n";
- Log::debug("MasterToForKit: " + aMessage.substr(0, aMessage.length() - 1));
- IoUtil::writeFIFO(LOOLWSD::ForKitWritePipe, aMessage);
+ if (number > 0)
+ {
+ const std::string aMessage = "spawn " + std::to_string(number) + "\n";
+ Log::debug("MasterToForKit: " + aMessage.substr(0, aMessage.length() - 1));
+ IoUtil::writeFIFO(LOOLWSD::ForKitWritePipe, aMessage);
+ }
}
static void preForkChildren()
@@ -166,6 +169,7 @@ static void preForkChildren()
std::unique_lock<std::mutex> lock(newChildrenMutex);
int numPreSpawn = LOOLWSD::NumPreSpawnedChildren;
UnitWSD::get().preSpawnCount(numPreSpawn);
+ --numPreSpawn; // ForKit always spawns one child at startup.
forkChildren(numPreSpawn);
}
More information about the Libreoffice-commits
mailing list