[Libreoffice-commits] online.git: loolwsd/DocumentBroker.cpp loolwsd/LOOLWSD.cpp

Ashod Nakashian ashod.nakashian at collabora.co.uk
Mon May 9 05:30:16 UTC 2016


 loolwsd/DocumentBroker.cpp |   16 ++++++++++------
 loolwsd/LOOLWSD.cpp        |    5 +----
 2 files changed, 11 insertions(+), 10 deletions(-)

New commits:
commit b06a07f6bc7149ffd497af5634e835f604d97d5f
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Mon May 9 01:11:09 2016 -0400

    loolwsd: auto-save checks modified state and logs decision
    
    Change-Id: I69d32e8c5ceabd46b635aa6c5bb30ade21101fd0
    Reviewed-on: https://gerrit.libreoffice.org/24785
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/loolwsd/DocumentBroker.cpp b/loolwsd/DocumentBroker.cpp
index f0e6173..b51f872 100644
--- a/loolwsd/DocumentBroker.cpp
+++ b/loolwsd/DocumentBroker.cpp
@@ -219,19 +219,23 @@ bool DocumentBroker::save()
 
 bool DocumentBroker::autoSave(const bool force, const size_t waitTimeoutMs)
 {
-    Log::trace("Autosaving [" + _docKey + "].");
-
     std::unique_lock<std::mutex> lock(_mutex);
-    if (_sessions.empty() || _storage == nullptr || !_isLoaded)
+    if (_sessions.empty() || _storage == nullptr || !_isLoaded ||
+        (!_isModified && !force))
     {
         // Nothing to do.
         Log::trace("Nothing to autosave [" + _docKey + "].");
         return true;
     }
 
+    // Remeber the last save time, since this is the predicate.
+    const auto lastSaveTime = _lastSaveTime;
+    Log::trace("Autosaving [" + _docKey + "].");
+
     bool sent = false;
     if (force)
     {
+        Log::trace("Sending forced save command for [" + _docKey + "].");
         sent = sendUnoSave();
     }
     else if (_isModified)
@@ -251,17 +255,17 @@ bool DocumentBroker::autoSave(const bool force, const size_t waitTimeoutMs)
         if (inactivityTimeMs >= IdleSaveDurationMs ||
             timeSinceLastSaveMs >= AutoSaveDurationMs)
         {
+            Log::trace("Sending timed save command for [" + _docKey + "].");
             sent = sendUnoSave();
         }
     }
 
     if (sent && waitTimeoutMs > 0)
     {
-        // Remeber the last save time, since this is the predicate.
-        const auto lastSaveTime = _lastSaveTime;
-
+        Log::trace("Waiting for save event for [" + _docKey + "].");
         if (_saveCV.wait_for(lock, std::chrono::milliseconds(waitTimeoutMs)) == std::cv_status::no_timeout)
         {
+            Log::debug("Successfully persisted document [" + _docKey + "].");
             return true;
         }
 
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 25a3801..48b8d05 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -1641,10 +1641,7 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/)
                         std::unique_lock<std::mutex> docBrokersLock(docBrokersMutex);
                         for (auto& brokerIt : docBrokers)
                         {
-                            if (brokerIt.second->isModified())
-                            {
-                                brokerIt.second->autoSave(false, 0);
-                            }
+                            brokerIt.second->autoSave(false, 0);
                         }
                     }
                     catch (const std::exception& exc)


More information about the Libreoffice-commits mailing list