summaryrefslogtreecommitdiffstats
path: root/wsd/DocumentBroker.cpp
diff options
context:
space:
mode:
authorAshod Nakashian <ashod.nakashian@collabora.co.uk>2022-01-31 18:59:50 -0500
committerAshod Nakashian <Ashod@users.noreply.github.com>2022-02-08 20:46:01 -0500
commit2f19b8bdef04a7e60c7498891798607098564f21 (patch)
tree50b38c36cdce7630d11b6174e007085b37a09c85 /wsd/DocumentBroker.cpp
parentwsd: reuse autoSaveAndStop for consistentcy (diff)
downloadonline-2f19b8bdef04a7e60c7498891798607098564f21.tar.gz
online-2f19b8bdef04a7e60c7498891798607098564f21.zip
wsd: merge unloading logic and centralize
Change-Id: Idfae52b5f76ef26795a57af646eef7c4a0e44b0b Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
Diffstat (limited to 'wsd/DocumentBroker.cpp')
-rw-r--r--wsd/DocumentBroker.cpp55
1 files changed, 28 insertions, 27 deletions
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index eb18819f77..2bbb975c85 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -359,7 +359,34 @@ void DocumentBroker::pollThread()
// Nothing more to do until the save is complete.
continue;
}
- else if (SigUtil::getShutdownRequestFlag() || _docState.isCloseRequested())
+
+#if !MOBILEAPP
+ // Remove idle documents after 1 hour.
+ if (isLoaded() && getIdleTimeSecs() >= IdleDocTimeoutSecs)
+ {
+ autoSaveAndStop("idle");
+ }
+ else
+#endif
+ if (_sessions.empty() && (isLoaded() || _docState.isMarkedToDestroy()))
+ {
+ if (!isLoaded())
+ {
+ // Nothing to do; no sessions, not loaded, marked to destroy.
+ stop("dead");
+ }
+ else if (_saveManager.isSaving() || isAsyncUploading())
+ {
+ LOG_DBG("Don't terminate dead DocumentBroker: async saving in progress for "
+ "docKey ["
+ << getDocKey() << "].");
+ continue;
+ }
+
+ autoSaveAndStop("dead");
+ }
+ else if (_docState.isUnloadRequested() || SigUtil::getShutdownRequestFlag() ||
+ _docState.isCloseRequested())
{
const std::string reason =
SigUtil::getShutdownRequestFlag()
@@ -408,33 +435,7 @@ void DocumentBroker::pollThread()
lastClipboardHashUpdateTime = now;
}
-
- // Remove idle documents after 1 hour.
- if (isLoaded() && getIdleTimeSecs() >= IdleDocTimeoutSecs)
- {
- autoSaveAndStop("idle");
- }
- else
#endif
- if (_sessions.empty() && (isLoaded() || _docState.isMarkedToDestroy()))
- {
- if (!isLoaded())
- {
- // Nothing to do; no sessions, not loaded, marked to destroy.
- stop("dead");
- }
- else if (_saveManager.isSaving() || isAsyncUploading())
- {
- LOG_DBG("Don't terminate dead DocumentBroker: async saving in progress for docKey [" << getDocKey() << "].");
- continue;
- }
-
- autoSaveAndStop("dead");
- }
- else if (_docState.isUnloadRequested())
- {
- autoSaveAndStop("unloading");
- }
}
LOG_INF("Finished polling doc [" << _docKey << "]. stop: " << _stop << ", continuePolling: " <<