net/Socket.cpp | 5 ----- net/Socket.hpp | 31 +------------------------------ wsd/DocumentBroker.cpp | 16 ++-------------- wsd/DocumentBroker.hpp | 3 --- 4 files changed, 3 insertions(+), 52 deletions(-)
New commits: commit 7d8477f5118d6f7fdc9b9a2b9be0fbe3dedc2b18 Author: Jan Holesovsky <[email protected]> AuthorDate: Wed Apr 8 14:33:24 2020 +0200 Commit: Tor Lillqvist <[email protected]> CommitDate: Thu Apr 9 13:27:29 2020 +0200 Revert "wsd: minimize wait when DocBroker terminates" With the change that is reverted here, the editing session on Android returns without proper cleanup which leads to occassional hangs when the user tries to open a new editing session quickly. Also, in the iOS app, with the change that is reverted, when closing the document we never get the LOK_CALLBACK_UNO_COMMAND_RESULT for the .uno:Save and thus we never get to save it properly from the system's point of view. This reverts commit a73590d81f4cf910568aa49f73e78abfb412eab7. Change-Id: Ia77fe2fd9b59d30c343ca1e10f69d5a434bc3628 Reviewed-on: https://gerrit.libreoffice.org/c/online/+/91915 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Michael Meeks <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/online/+/91965 Reviewed-by: Tor Lillqvist <[email protected]> diff --git a/net/Socket.cpp b/net/Socket.cpp index cb19c99cd..5bb1fa250 100644 --- a/net/Socket.cpp +++ b/net/Socket.cpp @@ -200,11 +200,6 @@ void SocketPoll::wakeupWorld() wakeup(fd); } -bool ProtocolHandlerInterface::hasPendingWork() const -{ - return _msgHandler && _msgHandler->hasQueuedMessages(); -} - #if !MOBILEAPP void SocketPoll::insertNewWebSocketSync( diff --git a/net/Socket.hpp b/net/Socket.hpp index fd0a5278d..ab56e5d10 100644 --- a/net/Socket.hpp +++ b/net/Socket.hpp @@ -162,9 +162,6 @@ public: std::chrono::steady_clock::time_point now, int events) = 0; - /// Is all data sent, so tha we can shutdown ? - virtual bool hasPendingWork() const { return false; } - /// manage latency issues around packet aggregation void setNoDelay() { @@ -293,7 +290,7 @@ public: } /// Asserts in the debug builds, otherwise just logs. - void assertCorrectThread() const + void assertCorrectThread() { if (InhibitThreadChecks) return; @@ -395,9 +392,6 @@ public: _msgHandler = msgHandler; } - /// Do we have something to send ? - virtual bool hasPendingWork() const; - /// Clear all external references virtual void dispose() { _msgHandler.reset(); } @@ -779,21 +773,6 @@ public: return _pollSockets.size(); } - bool hasPendingWork() const - { - assertCorrectThread(); - - if (_newCallbacks.size() > 0 || - _newSockets.size() > 0) - return true; - - for (auto &i : _pollSockets) - if (i->hasPendingWork()) - return true; - - return false; - } - const std::string& name() const { return _name; } /// Start the polling thread (if desired) @@ -952,14 +931,6 @@ public: return events; } - bool hasPendingWork() const override - { - assertCorrectThread(); - if (!_outBuffer.empty() || !_inBuffer.empty()) - return true; - return _socketHandler && _socketHandler->hasPendingWork(); - } - /// Send data to the socket peer. void send(const char* data, const int len, const bool flush = true) { diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp index 0c28b94bd..02f6d2a2b 100644 --- a/wsd/DocumentBroker.cpp +++ b/wsd/DocumentBroker.cpp @@ -448,14 +448,14 @@ void DocumentBroker::pollThread() << ", TerminationFlag: " << SigUtil::getTerminationFlag() << ". Terminating child with reason: [" << _closeReason << "]."); const auto flushStartTime = std::chrono::steady_clock::now(); - while (_poll->hasPendingWork() || hasDisconnectingSessions()) + while (_poll->getSocketCount()) { const auto now = std::chrono::steady_clock::now(); const int elapsedMs = std::chrono::duration_cast<std::chrono::milliseconds>(now - flushStartTime).count(); if (elapsedMs > flushTimeoutMs) break; - _poll->poll(std::min(flushTimeoutMs - elapsedMs, POLL_TIMEOUT_MS / 10)); + _poll->poll(std::min(flushTimeoutMs - elapsedMs, POLL_TIMEOUT_MS / 5)); } LOG_INF("Finished flushing socket for doc [" << _docKey << "]. stop: " << _stop << ", continuePolling: " << @@ -480,18 +480,6 @@ void DocumentBroker::pollThread() LOG_INF("Finished docBroker polling thread for docKey [" << _docKey << "]."); } -bool DocumentBroker::hasDisconnectingSessions() const -{ - for (const auto& pair : _sessions) - { - const std::shared_ptr<ClientSession> &session = pair.second; - // need to wait around to fetch clipboards from disconnecting sessions. - if (session->inWaitDisconnected()) - return true; - } - return false; -} - bool DocumentBroker::isAlive() const { if (!_stop || _poll->isAlive()) diff --git a/wsd/DocumentBroker.hpp b/wsd/DocumentBroker.hpp index 251e97bba..136167f15 100644 --- a/wsd/DocumentBroker.hpp +++ b/wsd/DocumentBroker.hpp @@ -328,9 +328,6 @@ private: /// Starts the Kit <-> DocumentBroker shutdown handshake void disconnectSessionInternal(const std::string& id); - /// Are any of our sessions still dis-connecting ? - bool hasDisconnectingSessions() const; - /// Forward a message from child session to its respective client session. bool forwardToClient(const std::shared_ptr<Message>& payload); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
