wsd/LOOLWSD.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-)
New commits: commit 818329d66eadf38f99baa5d3dcc57d28f473483a Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Sun Jan 15 12:41:45 2017 -0500 wsd: update outstanding forks only on successfull write Change-Id: I312b3f860d98a31e8a28742915df32eb7e737037 Reviewed-on: https://gerrit.libreoffice.org/33131 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp index e7d4ee7..47a2fdc 100644 --- a/wsd/LOOLWSD.cpp +++ b/wsd/LOOLWSD.cpp @@ -324,11 +324,12 @@ static bool forkChildren(const int number) const std::string aMessage = "spawn " + std::to_string(number) + "\n"; LOG_DBG("MasterToForKit: " << aMessage.substr(0, aMessage.length() - 1)); - - OutstandingForks += number; - IoUtil::writeToPipe(LOOLWSD::ForKitWritePipe, aMessage); - LastForkRequestTime = std::chrono::steady_clock::now(); - return true; + if (IoUtil::writeToPipe(LOOLWSD::ForKitWritePipe, aMessage) > 0) + { + OutstandingForks += number; + LastForkRequestTime = std::chrono::steady_clock::now(); + return true; + } } return false; @@ -367,10 +368,12 @@ static bool rebalanceChildren(int balance) const auto duration = (std::chrono::steady_clock::now() - LastForkRequestTime); const auto durationMs = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count(); - if (durationMs >= CHILD_TIMEOUT_MS) + if (OutstandingForks > 0 && durationMs >= CHILD_TIMEOUT_MS) { // Children taking too long to spawn. // Forget we had requested any, and request anew. + LOG_WRN("ForKit not responsive for " << durationMs << " ms forking " << + OutstandingForks << " children. Resetting."); OutstandingForks = 0; } @@ -381,8 +384,8 @@ static bool rebalanceChildren(int balance) if (balance > 0 && (rebalance || OutstandingForks == 0)) { LOG_DBG("prespawnChildren: Have " << available << " spare " << - (available == 1 ? "child" : "children") << - ", forking " << balance << " more."); + (available == 1 ? "child" : "children") << ", and " << + OutstandingForks << " outstanding, forking " << balance << " more."); return forkChildren(balance); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits