[Libreoffice-commits] online.git: wsd/DocumentBroker.cpp
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Thu Apr 13 03:54:37 UTC 2017
wsd/DocumentBroker.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
New commits:
commit ed51fafecef9424a71cca73edf8bb428d835f372
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Wed Apr 12 21:19:51 2017 -0400
wsd: DocBroker is Alive if not flagged to stop
There is a race between creating and adding
a DocBroker into the DocBrokers container
and cleanupDocBrokers is invoked (on timer)
before it had a chance to start its poll
thread. This is exceedingly rare, but it
has happened.
We check that_stop==false flag when deciding
isAlive such that cleanDocBrokers will
not remove it before its thread had
a chance to run (which would happen
after adding it and creating the
ClientSession).
Also, no point in checking isAlive from
the polling thread itself (of course it is
alive).
Change-Id: If54fe2b5fce0697ee0e2f38f1662c71105e29347
Reviewed-on: https://gerrit.libreoffice.org/36500
Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
Tested-by: Ashod Nakashian <ashnakash at gmail.com>
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index 3cac2e70..e0c8b05b 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -242,7 +242,7 @@ void DocumentBroker::pollThread()
// If all sessions have been removed, no reason to linger.
if ((isLoaded() || _markToDestroy) && notSaving &&
- (_sessions.empty() || !isAlive() || idle))
+ (_sessions.empty() || idle))
{
LOG_INF("Terminating " << (idle ? "idle" : "dead") <<
" DocumentBroker for docKey [" << getDocKey() << "].");
@@ -292,8 +292,8 @@ void DocumentBroker::pollThread()
bool DocumentBroker::isAlive() const
{
- if (_poll->isAlive())
- return true; // Polling thread still running.
+ if (!_stop || _poll->isAlive())
+ return true; // Polling thread not started or still running.
// Shouldn't have live child process outside of the polling thread.
return _childProcess && _childProcess->isAlive();
More information about the Libreoffice-commits
mailing list