[Libreoffice-commits] online.git: loolwsd/DocumentBroker.cpp loolwsd/DocumentBroker.hpp
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Mon Nov 7 06:33:52 UTC 2016
loolwsd/DocumentBroker.cpp | 127 +++++++++++++++++----------------------------
loolwsd/DocumentBroker.hpp | 16 ++---
2 files changed, 58 insertions(+), 85 deletions(-)
New commits:
commit 9bb6d73fdad7b16382a4cf03d6c826e1810cff19
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sun Nov 6 11:59:59 2016 -0500
loolwsd: DocumentBroker logs updated
Change-Id: I64bd10c05a24f1b6716241cf1048af157282fa18
Reviewed-on: https://gerrit.libreoffice.org/30632
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 507362c..cf66a4a 100644
--- a/loolwsd/DocumentBroker.cpp
+++ b/loolwsd/DocumentBroker.cpp
@@ -115,29 +115,6 @@ std::string DocumentBroker::getDocKey(const Poco::URI& uri)
return docKey;
}
-DocumentBroker::DocumentBroker() :
- _uriPublic(),
- _docKey(),
- _childRoot(),
- _cacheRoot(),
- _childProcess(),
- _lastSaveTime(std::chrono::steady_clock::now()),
- _markToDestroy(true),
- _lastEditableSession(true),
- _isLoaded(false),
- _isModified(false),
- _cursorPosX(0),
- _cursorPosY(0),
- _cursorWidth(0),
- _cursorHeight(0),
- _mutex(),
- _saveMutex(),
- _tileVersion(0),
- _debugRenderedTileCount(0)
-{
- Log::info("Empty DocumentBroker (marked to destroy) created.");
-}
-
DocumentBroker::DocumentBroker(const Poco::URI& uriPublic,
const std::string& docKey,
const std::string& childRoot,
@@ -164,8 +141,7 @@ DocumentBroker::DocumentBroker(const Poco::URI& uriPublic,
assert(!_docKey.empty());
assert(!_childRoot.empty());
- LOG_INF("DocumentBroker [" << _uriPublic.toString() <<
- "] created. DocKey: [" << _docKey << "]");
+ LOG_INF("DocumentBroker [" << _uriPublic.toString() << "] created. DocKey: [" << _docKey << "]");
}
DocumentBroker::~DocumentBroker()
@@ -173,8 +149,7 @@ DocumentBroker::~DocumentBroker()
Admin::instance().rmDoc(_docKey);
LOG_INF("~DocumentBroker [" << _uriPublic.toString() <<
- "] destroyed with " << _sessions.size() <<
- " sessions left.");
+ "] destroyed with " << _sessions.size() << " sessions left.");
if (!_sessions.empty())
{
@@ -203,12 +178,12 @@ bool DocumentBroker::load(const std::string& sessionId, const std::string& jailI
auto it = _sessions.find(sessionId);
if (it == _sessions.end())
{
- Log::error("Session with sessionId [" + sessionId + "] not found while loading");
+ LOG_ERR("Session with sessionId [" << sessionId << "] not found while loading");
return false;
}
const Poco::URI& uriPublic = it->second->getPublicUri();
- Log::debug("Loading from URI: " + uriPublic.toString());
+ LOG_DBG("Loading from URI: " << uriPublic.toString());
_jailId = jailId;
@@ -219,7 +194,7 @@ bool DocumentBroker::load(const std::string& sessionId, const std::string& jailI
const auto jailPath = Poco::Path(JAILED_DOCUMENT_ROOT, jailId);
std::string jailRoot = getJailRoot();
- Log::info("jailPath: " + jailPath.toString() + ", jailRoot: " + jailRoot);
+ LOG_INF("jailPath: " << jailPath.toString() << ", jailRoot: " << jailRoot);
if (LOOLWSD::NoCapsForKit)
jailRoot = jailPath.toString() + "/" + getJailRoot();
@@ -229,7 +204,7 @@ bool DocumentBroker::load(const std::string& sessionId, const std::string& jailI
// TODO: Maybe better to pass docKey to storage here instead of uriPublic here because
// uriPublic would be different for each view of the document (due to
// different query params like access token etc.)
- Log::debug("Creating new storage instance for URI [" + uriPublic.toString() + "].");
+ LOG_DBG("Creating new storage instance for URI [" << uriPublic.toString() << "].");
_storage = StorageBase::create(uriPublic, jailRoot, jailPath.toString());
}
@@ -246,7 +221,7 @@ bool DocumentBroker::load(const std::string& sessionId, const std::string& jailI
if (!wopifileinfo._userCanWrite)
{
- Log::debug("Setting the session as readonly");
+ LOG_DBG("Setting the session as readonly");
it->second->setReadOnly();
}
@@ -264,7 +239,7 @@ bool DocumentBroker::load(const std::string& sessionId, const std::string& jailI
username = localfileinfo._username;
}
- Log::debug("Setting username [" + username + "] and userId [" + userid + "] for session [" + sessionId + "]");
+ LOG_DBG("Setting username [" << username << "] and userId [" << userid << "] for session [" << sessionId << "]");
it->second->setUserId(userid);
it->second->setUserName(username);
@@ -272,7 +247,7 @@ bool DocumentBroker::load(const std::string& sessionId, const std::string& jailI
const auto fileInfo = _storage->getFileInfo();
if (!fileInfo.isValid())
{
- Log::error("Invalid fileinfo for URI [" + uriPublic.toString() + "].");
+ LOG_ERR("Invalid fileinfo for URI [" << uriPublic.toString() << "].");
return false;
}
@@ -297,7 +272,7 @@ bool DocumentBroker::load(const std::string& sessionId, const std::string& jailI
// Add the time taken to check file info
callDuration += getInfoCallDuration;
const std::string msg = "stats: wopiloadduration " + std::to_string(callDuration.count());
- Log::trace("Sending to Client [" + msg + "].");
+ LOG_TRC("Sending to Client [" << msg << "].");
it->second->sendTextFrame(msg);
}
@@ -314,7 +289,7 @@ bool DocumentBroker::save(const std::string& sessionId, bool success, const std:
const auto it = _sessions.find(sessionId);
if (it == _sessions.end())
{
- Log::error("Session with sessionId [" + sessionId + "] not found while saving");
+ LOG_ERR("Session with sessionId [" << sessionId << "] not found while saving");
return false;
}
@@ -325,7 +300,7 @@ bool DocumentBroker::save(const std::string& sessionId, bool success, const std:
// notify the waiting thread, if any.
if (!success && result == "unmodified")
{
- Log::debug("Save skipped as document was not modified");
+ LOG_DBG("Save skipped as document was not modified");
_saveCV.notify_all();
return true;
}
@@ -336,14 +311,12 @@ bool DocumentBroker::save(const std::string& sessionId, bool success, const std:
if (!_lastEditableSession && newFileModifiedTime == _lastFileModifiedTime)
{
// Nothing to do.
- Log::debug() << "Skipping unnecessary saving to URI [" << uri
- << "]. File last modified "
- << _lastFileModifiedTime.elapsed() / 1000000
- << " seconds ago." << Log::end;
+ LOG_DBG("Skipping unnecessary saving to URI [" << uri << "]. File last modified " <<
+ _lastFileModifiedTime.elapsed() / 1000000 << " seconds ago.");
return true;
}
- Log::debug("Saving to URI [" + uri + "].");
+ LOG_DBG("Saving to URI [" << uri << "].");
assert(_storage && _tileCache);
if (_storage->saveLocalFileToStorage(uriPublic))
@@ -353,12 +326,12 @@ bool DocumentBroker::save(const std::string& sessionId, bool success, const std:
_lastFileModifiedTime = newFileModifiedTime;
_tileCache->saveLastModified(_lastFileModifiedTime);
_lastSaveTime = std::chrono::steady_clock::now();
- Log::debug("Saved to URI [" + uri + "] and updated tile cache.");
+ LOG_DBG("Saved to URI [" << uri << "] and updated tile cache.");
_saveCV.notify_all();
return true;
}
- Log::error("Failed to save to URI [" + uri + "].");
+ LOG_ERR("Failed to save to URI [" << uri << "].");
return false;
}
@@ -370,18 +343,18 @@ bool DocumentBroker::autoSave(const bool force, const size_t waitTimeoutMs, std:
!_childProcess->isAlive() || (!_isModified && !force))
{
// Nothing to do.
- Log::trace("Nothing to autosave [" + _docKey + "].");
+ LOG_TRC("Nothing to autosave [" << _docKey << "].");
return true;
}
// Remeber the last save time, since this is the predicate.
const auto lastSaveTime = _lastSaveTime;
- Log::trace("Checking to autosave [" + _docKey + "].");
+ LOG_TRC("Checking to autosave [" << _docKey << "].");
bool sent = false;
if (force)
{
- Log::trace("Sending forced save command for [" + _docKey + "].");
+ LOG_TRC("Sending forced save command for [" << _docKey << "].");
sent = sendUnoSave(true);
}
else if (_isModified)
@@ -393,25 +366,25 @@ bool DocumentBroker::autoSave(const bool force, const size_t waitTimeoutMs, std:
inactivityTimeMs = std::min(sessionIt.second->getInactivityMS(), inactivityTimeMs);
}
- Log::trace("Most recent activity was " + std::to_string((int)inactivityTimeMs) + " ms ago.");
+ LOG_TRC("Most recent activity was " << inactivityTimeMs << " ms ago.");
const auto timeSinceLastSaveMs = getTimeSinceLastSaveMs();
- Log::trace("Time since last save is " + std::to_string((int)timeSinceLastSaveMs) + " ms.");
+ LOG_TRC("Time since last save is " << timeSinceLastSaveMs << " ms.");
// Either we've been idle long enough, or it's auto-save time.
if (inactivityTimeMs >= IdleSaveDurationMs ||
timeSinceLastSaveMs >= AutoSaveDurationMs)
{
- Log::trace("Sending timed save command for [" + _docKey + "].");
+ LOG_TRC("Sending timed save command for [" << _docKey << "].");
sent = sendUnoSave(true);
}
}
if (sent && waitTimeoutMs > 0)
{
- Log::trace("Waiting for save event for [" + _docKey + "].");
+ LOG_TRC("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 + "] or document was not modified");
+ LOG_DBG("Successfully persisted document [" << _docKey << "] or document was not modified");
return true;
}
@@ -423,7 +396,7 @@ bool DocumentBroker::autoSave(const bool force, const size_t waitTimeoutMs, std:
bool DocumentBroker::sendUnoSave(const bool dontSaveIfUnmodified)
{
- Log::info("Autosave triggered for doc [" + _docKey + "].");
+ LOG_INF("Autosave triggered for doc [" << _docKey << "].");
Util::assertIsLocked(_mutex);
// Save using session holding the edit-lock (or first if multview).
@@ -460,13 +433,13 @@ bool DocumentBroker::sendUnoSave(const bool dontSaveIfUnmodified)
oss << "}";
const auto saveArgs = oss.str();
- Log::trace(".uno:Save arguments: " + saveArgs);
+ LOG_TRC(".uno:Save arguments: " << saveArgs);
const auto command = "uno .uno:Save " + saveArgs;
forwardToChild(sessionIt.second->getId(), command);
return true;
}
- Log::error("Failed to auto-save doc [" + _docKey + "]: No valid sessions.");
+ LOG_ERR("Failed to auto-save doc [" << _docKey << "]: No valid sessions.");
return false;
}
@@ -491,12 +464,12 @@ size_t DocumentBroker::addSession(std::shared_ptr<ClientSession>& session)
auto ret = _sessions.emplace(id, session);
if (!ret.second)
{
- Log::warn("DocumentBroker: Trying to add already existing session.");
+ LOG_WRN("DocumentBroker: Trying to add already existing session.");
}
if (session->isReadOnly())
{
- Log::debug("Adding a readonly session [" + id + "]");
+ LOG_DBG("Adding a readonly session [" << id << "]");
}
// Below values are recalculated when startDestroy() is called (before destroying the
@@ -509,7 +482,7 @@ size_t DocumentBroker::addSession(std::shared_ptr<ClientSession>& session)
if (!loaded)
{
const auto msg = "Failed to load document with URI [" + session->getPublicUri().toString() + "].";
- Log::error(msg);
+ LOG_ERR(msg);
throw std::runtime_error(msg);
}
}
@@ -531,7 +504,7 @@ size_t DocumentBroker::addSession(std::shared_ptr<ClientSession>& session)
// Connect the prison session to the client.
if (!connectPeers(prisonerSession))
{
- Log::warn("Failed to connect " + session->getName() + " to its peer.");
+ LOG_WRN("Failed to connect " << session->getName() << " to its peer.");
}
return _sessions.size();
@@ -587,7 +560,7 @@ void DocumentBroker::alertAllUsersOfDocument(const std::string& cmd, const std::
bool DocumentBroker::handleInput(const std::vector<char>& payload)
{
const auto msg = LOOLProtocol::getAbbreviatedMessage(payload);
- Log::trace("DocumentBroker got child message: [" + msg + "].");
+ LOG_TRC("DocumentBroker got child message: [" << msg << "].");
LOOLWSD::dumpOutgoingTrace(getJailId(), "0", msg);
@@ -617,7 +590,7 @@ bool DocumentBroker::handleInput(const std::vector<char>& payload)
}
else
{
- Log::error("Unexpected message: [" + msg + "].");
+ LOG_ERR("Unexpected message: [" << msg << "].");
return false;
}
@@ -639,7 +612,7 @@ void DocumentBroker::handleTileRequest(TileDesc& tile,
tile.setVersion(++_tileVersion);
const auto tileMsg = tile.serialize();
- Log::trace() << "Tile request for " << tile.serialize() << Log::end;
+ LOG_TRC("Tile request for " << tile.serialize());
std::unique_ptr<std::fstream> cachedTile = _tileCache->lookupTile(tile);
if (cachedTile)
@@ -671,8 +644,8 @@ void DocumentBroker::handleTileRequest(TileDesc& tile,
tileCache().subscribeToTileRendering(tile, session);
// Forward to child to render.
- Log::debug() << "Sending render request for tile (" << tile.getPart() << ','
- << tile.getTilePosX() << ',' << tile.getTilePosY() << ")." << Log::end;
+ LOG_DBG("Sending render request for tile (" << tile.getPart() << ',' <<
+ tile.getTilePosX() << ',' << tile.getTilePosY() << ").");
const std::string request = "tile " + tile.serialize();
_childProcess->sendTextFrame(request);
_debugRenderedTileCount++;
@@ -683,7 +656,7 @@ void DocumentBroker::handleTileCombinedRequest(TileCombined& tileCombined,
{
std::unique_lock<std::mutex> lock(_mutex);
- Log::trace() << "TileCombined request for " << tileCombined.serialize() << Log::end;
+ LOG_TRC("TileCombined request for " << tileCombined.serialize());
// Satisfy as many tiles from the cache.
std::vector<TileDesc> tiles;
@@ -732,7 +705,7 @@ void DocumentBroker::handleTileCombinedRequest(TileCombined& tileCombined,
// Forward to child to render.
const auto req = newTileCombined.serialize("tilecombine");
- Log::debug() << "Sending residual tilecombine: " << req << Log::end;
+ LOG_DBG("Sending residual tilecombine: " << req);
_childProcess->sendTextFrame(req);
}
}
@@ -744,7 +717,7 @@ void DocumentBroker::cancelTileRequests(const std::shared_ptr<ClientSession>& se
const auto canceltiles = tileCache().cancelTiles(session);
if (!canceltiles.empty())
{
- Log::debug() << "Forwarding canceltiles request: " << canceltiles << Log::end;
+ LOG_DBG("Forwarding canceltiles request: " << canceltiles);
_childProcess->sendTextFrame(canceltiles);
}
}
@@ -752,7 +725,7 @@ void DocumentBroker::cancelTileRequests(const std::shared_ptr<ClientSession>& se
void DocumentBroker::handleTileResponse(const std::vector<char>& payload)
{
const std::string firstLine = getFirstLine(payload);
- Log::debug("Handling tile combined: " + firstLine);
+ LOG_DBG("Handling tile combined: " << firstLine);
try
{
@@ -766,20 +739,20 @@ void DocumentBroker::handleTileResponse(const std::vector<char>& payload)
}
else
{
- Log::debug() << "Render request declined for " << firstLine << Log::end;
+ LOG_DBG("Render request declined for " << firstLine);
// They will get re-issued if we don't forget them.
}
}
catch (const std::exception& exc)
{
- Log::error("Failed to process tile response [" + firstLine + "]: " + exc.what() + ".");
+ LOG_ERR("Failed to process tile response [" << firstLine << "]: " << exc.what() << ".");
}
}
void DocumentBroker::handleTileCombinedResponse(const std::vector<char>& payload)
{
const std::string firstLine = getFirstLine(payload);
- Log::debug("Handling tile combined: " + firstLine);
+ LOG_DBG("Handling tile combined: " << firstLine);
try
{
@@ -797,13 +770,13 @@ void DocumentBroker::handleTileCombinedResponse(const std::vector<char>& payload
}
else
{
- Log::error() << "Render request declined for " << firstLine << Log::end;
+ LOG_ERR("Render request declined for " << firstLine);
// They will get re-issued if we don't forget them.
}
}
catch (const std::exception& exc)
{
- Log::error("Failed to process tile response [" + firstLine + "]: " + exc.what() + ".");
+ LOG_ERR("Failed to process tile response [" << firstLine << "]: " << exc.what() << ".");
}
}
@@ -843,7 +816,7 @@ void DocumentBroker::setModified(const bool value)
bool DocumentBroker::forwardToChild(const std::string& viewId, const std::string& message)
{
- Log::trace() << "Forwarding payload to child [" << viewId << "]: " << message << Log::end;
+ LOG_TRC("Forwarding payload to child [" << viewId << "]: " << message);
const auto it = _sessions.find(viewId);
if (it != _sessions.end())
@@ -854,7 +827,7 @@ bool DocumentBroker::forwardToChild(const std::string& viewId, const std::string
}
else
{
- Log::warn() << "Client session [" << viewId << "] not found to forward message: " << message << Log::end;
+ LOG_WRN("Client session [" << viewId << "] not found to forward message: " << message);
}
return false;
@@ -915,7 +888,7 @@ void DocumentBroker::childSocketTerminated()
if (!_childProcess->isAlive())
{
- Log::error("Child for doc [" + _docKey + "] terminated prematurely.");
+ LOG_ERR("Child for doc [" << _docKey << "] terminated prematurely.");
}
// We could restore the kit if this was unexpected.
@@ -931,7 +904,7 @@ void DocumentBroker::terminateChild(std::unique_lock<std::mutex>& lock)
Util::assertIsLocked(_mutex);
Util::assertIsLocked(lock);
- Log::info() << "Terminating child [" << getPid() << "] of doc [" << _docKey << "]." << Log::end;
+ LOG_INF("Terminating child [" << getPid() << "] of doc [" << _docKey << "].");
assert(_sessions.empty() && "DocumentBroker still has unremoved sessions!");
diff --git a/loolwsd/DocumentBroker.hpp b/loolwsd/DocumentBroker.hpp
index 0075fb6..73b1697 100644
--- a/loolwsd/DocumentBroker.hpp
+++ b/loolwsd/DocumentBroker.hpp
@@ -46,7 +46,7 @@ public:
_stop(false)
{
_thread = std::thread([this]() { this->socketProcessor(); });
- Log::info("ChildProcess ctor [" + std::to_string(_pid) + "].");
+ LOG_INF("ChildProcess ctor [" << _pid << "].");
}
ChildProcess(ChildProcess&& other) = delete;
@@ -55,7 +55,7 @@ public:
~ChildProcess()
{
- Log::debug("~ChildProcess dtor [" + std::to_string(_pid) + "].");
+ LOG_DBG("~ChildProcess dtor [" << _pid << "].");
close(true);
}
@@ -67,7 +67,7 @@ public:
void stop()
{
- Log::debug("Stopping ChildProcess [" + std::to_string(_pid) + "]");
+ LOG_DBG("Stopping ChildProcess [" << _pid << "]");
_stop = true;
}
@@ -75,7 +75,7 @@ public:
{
try
{
- Log::debug("Closing ChildProcess [" + std::to_string(_pid) + "].");
+ LOG_DBG("Closing ChildProcess [" << _pid << "].");
stop();
IoUtil::shutdownWebSocket(_ws);
if (_thread.joinable())
@@ -86,7 +86,7 @@ public:
_ws.reset();
if (_pid != -1)
{
- Log::info("Closing child [" + std::to_string(_pid) + "].");
+ LOG_INF("Closing child [" << _pid << "].");
if (rude && kill(_pid, SIGINT) != 0 && kill(_pid, 0) != 0)
{
Log::syserror("Cannot terminate lokit [" + std::to_string(_pid) + "]. Abandoning.");
@@ -97,7 +97,7 @@ public:
}
catch (const std::exception& ex)
{
- Log::error("Error while closing child process: " + std::string(ex.what()));
+ LOG_ERR("Error while closing child process: " << ex.what());
}
}
@@ -114,8 +114,8 @@ public:
}
catch (const std::exception& exc)
{
- Log::error() << "Failed to send child [" << _pid << "] data ["
- << data << "] due to: " << exc.what() << Log::end;
+ LOG_ERR("Failed to send child [" << _pid << "] data [" <<
+ data << "] due to: " << exc.what());
throw;
}
More information about the Libreoffice-commits
mailing list