[Libreoffice-commits] online.git: loolwsd/DocumentBroker.cpp loolwsd/DocumentBroker.hpp loolwsd/MasterProcessSession.cpp
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Sat Apr 30 14:36:50 UTC 2016
loolwsd/DocumentBroker.cpp | 8 +++++---
loolwsd/DocumentBroker.hpp | 3 +++
loolwsd/MasterProcessSession.cpp | 2 ++
3 files changed, 10 insertions(+), 3 deletions(-)
New commits:
commit bdfda58386b7bf8a92ad6e362e8d0687ee8e00ad
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Fri Apr 29 23:07:09 2016 -0400
loolwsd: don't autosave when document not loaded
Change-Id: I44e9c2ad234ee05348b47415add3933c81fce968
Reviewed-on: https://gerrit.libreoffice.org/24525
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 aa110cc..8f50e32 100644
--- a/loolwsd/DocumentBroker.cpp
+++ b/loolwsd/DocumentBroker.cpp
@@ -74,6 +74,7 @@ DocumentBroker::DocumentBroker(const Poco::URI& uriPublic,
_childProcess(childProcess),
_lastSaveTime(std::chrono::steady_clock::now()),
_markToDestroy(false),
+ _isLoaded(false),
_isModified(false)
{
assert(!_docKey.empty());
@@ -195,10 +196,11 @@ bool DocumentBroker::autoSave(const bool force, const size_t waitTimeoutMs)
Log::trace("Autosaving [" + _docKey + "].");
std::unique_lock<std::mutex> lock(_mutex);
- if (_sessions.empty())
+ if (_sessions.empty() || _storage == nullptr || !_isLoaded)
{
- // Shouldn't happen.
- return false;
+ // Nothing to do.
+ Log::trace("Nothing to autosave [" + _docKey + "].");
+ return true;
}
bool sent = false;
diff --git a/loolwsd/DocumentBroker.hpp b/loolwsd/DocumentBroker.hpp
index 3a2e4d5..9bf290b 100644
--- a/loolwsd/DocumentBroker.hpp
+++ b/loolwsd/DocumentBroker.hpp
@@ -151,6 +151,8 @@ public:
/// Loads a document from the public URI into the jail.
bool load(const std::string& jailId);
+ bool isLoaded() const { return _isLoaded; }
+ void setLoaded() { _isLoaded = true; }
/// Save the document to Storage if needs persisting.
bool save();
@@ -226,6 +228,7 @@ private:
std::unique_ptr<StorageBase> _storage;
std::unique_ptr<TileCache> _tileCache;
std::atomic<bool> _markToDestroy;
+ bool _isLoaded;
bool _isModified;
mutable std::mutex _mutex;
std::condition_variable _saveCV;
diff --git a/loolwsd/MasterProcessSession.cpp b/loolwsd/MasterProcessSession.cpp
index c1fa22d..8d07645 100644
--- a/loolwsd/MasterProcessSession.cpp
+++ b/loolwsd/MasterProcessSession.cpp
@@ -200,6 +200,7 @@ bool MasterProcessSession::_handleInput(const char *buffer, int length)
}
else if (tokens[0] == "status:")
{
+ _docBroker->setLoaded();
_docBroker->tileCache().saveTextFile(std::string(buffer, length), "status.txt");
// Forward the status response to the client.
@@ -411,6 +412,7 @@ bool MasterProcessSession::getStatus(const char *buffer, int length)
Log::trace("Dispatching child to handle [getStatus].");
dispatchChild();
}
+
forwardToPeer(buffer, length);
return true;
}
More information about the Libreoffice-commits
mailing list