common/FileUtil.cpp | 5 +++-- common/FileUtil.hpp | 4 ++-- loleaflet/Makefile.am | 2 ++ wsd/LOOLWSD.cpp | 8 ++++++-- 4 files changed, 13 insertions(+), 6 deletions(-)
New commits: commit 62a666c06a9b1398bac67a72b14e1c221e71dfd4 Author: Pranav Kant <[email protected]> Date: Wed Jan 4 11:59:45 2017 +0530 wsd: better handling of low storage situation There is no way to let the user of document currently being opened, in case of failure, know that disk is low on space. We check the disk space when forking children after which we try to alert all users but this would end up doing nothing for current document because document broker is not registered at this time (we iterate through doc brokers when alerting). Another conditional disk check is performed just before opening the document but this is performed only if last disk check was performed greater than 60 seconds which would never be the case because document open is always preceded by a child fork (when rebalancing children). Lets not cache the disk check when forking the children to prevent above mentioned situation while still minimizing the number of disk checks performed. Change-Id: Id3add998f94e23f9f8c144f09e5efe9f0b63821c diff --git a/common/FileUtil.cpp b/common/FileUtil.cpp index afe2634..0127c1a 100644 --- a/common/FileUtil.cpp +++ b/common/FileUtil.cpp @@ -158,7 +158,7 @@ namespace FileUtil } } - std::string checkDiskSpaceOnRegisteredFileSystems() + std::string checkDiskSpaceOnRegisteredFileSystems(const bool cacheLastCheck) { std::lock_guard<std::mutex> lock(fsmutex); @@ -169,7 +169,8 @@ namespace FileUtil if (std::chrono::duration_cast<std::chrono::seconds>(now - lastCheck).count() < 60) return std::string(); - lastCheck = now; + if (cacheLastCheck) + lastCheck = now; for (auto& i: filesystems) { diff --git a/common/FileUtil.hpp b/common/FileUtil.hpp index e0e9487..e018691 100644 --- a/common/FileUtil.hpp +++ b/common/FileUtil.hpp @@ -50,8 +50,8 @@ namespace FileUtil // Perform the check. If the free space on any of the registered file systems is below 5%, call // 'alertAllUsers("internal", "diskfull")'. The check will be made no more often than once a - // minute. - std::string checkDiskSpaceOnRegisteredFileSystems(); + // minute if cacheLastCheck is set to true. + std::string checkDiskSpaceOnRegisteredFileSystems(const bool cacheLastCheck = true); // Check disk space on a specific file system, the one where 'path' is located. This does not // add that file system to the list used by 'registerFileSystemForDiskSpaceChecks'. If the free diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp index 9895a76..1eed34d 100644 --- a/wsd/LOOLWSD.cpp +++ b/wsd/LOOLWSD.cpp @@ -314,7 +314,7 @@ static bool forkChildren(const int number) if (number > 0) { - const std::string fs = FileUtil::checkDiskSpaceOnRegisteredFileSystems(); + const std::string fs = FileUtil::checkDiskSpaceOnRegisteredFileSystems(false); if (!fs.empty()) { LOG_WRN("File system of " << fs << " dangerously low on disk space"); @@ -1027,7 +1027,11 @@ private: if (!fs.empty()) { LOG_WRN("File system of [" << fs << "] is dangerously low on disk space."); - Util::alertAllUsers("error: cmd=internal kind=diskfull"); + const std::string diskfullMsg = "error: cmd=internal kind=diskfull"; + // Alert the session currently being opened + ws->sendFrame(diskfullMsg.data(), diskfullMsg.size()); + // Alert all other existing sessions also + Util::alertAllUsers(diskfullMsg); } LOOLWSD::dumpEventTrace(docBroker->getJailId(), id, "NewSession: " + uri); commit fe1fe65e44509d84ef28a6455ebb7b8dd4551eee Author: Pranav Kant <[email protected]> Date: Wed Jan 4 09:54:55 2017 +0530 Include loleaflet files to source archive Change-Id: Ia7583786fd5a709e56f3319fac25e554465ab3df diff --git a/loleaflet/Makefile.am b/loleaflet/Makefile.am index fa454c3..ade8fee 100644 --- a/loleaflet/Makefile.am +++ b/loleaflet/Makefile.am @@ -10,6 +10,8 @@ DRAW_VERSION=0.2.4 MINIFY=false +EXTRA_DIST = $(shell git ls-files) + .PHONY: build build: node_modules rm -rf dist/plugins/draw-$(DRAW_VERSION) && mkdir -p dist/plugins/draw-$(DRAW_VERSION) _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
