diff options
author | Michael Meeks <michael.meeks@collabora.com> | 2019-03-12 15:41:54 +0100 |
---|---|---|
committer | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2020-04-14 08:23:49 +0200 |
commit | dab5603fc6bdb9ffbc576c9ae693724484f31b37 (patch) | |
tree | 6ee32529158edf44841c7a8f21b853ab291c39d2 | |
parent | tdf#123482 - cleanup convert-to folder more reliably. (diff) | |
download | online-dab5603fc6bdb9ffbc576c9ae693724484f31b37.tar.gz online-dab5603fc6bdb9ffbc576c9ae693724484f31b37.zip |
Don't count convert-to connections vs. the document count.
Change-Id: I350905fb98c503ae8f22a377e4af5cbcb9f3c52d
(cherry picked from commit d8bb92cdcf83216ae5a56b8602cbd9f7c72b4975)
-rw-r--r-- | wsd/DocumentBroker.cpp | 16 | ||||
-rw-r--r-- | wsd/DocumentBroker.hpp | 8 | ||||
-rw-r--r-- | wsd/LOOLWSD.cpp | 5 |
3 files changed, 23 insertions, 6 deletions
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp index 2d00ac5687..86524325f4 100644 --- a/wsd/DocumentBroker.cpp +++ b/wsd/DocumentBroker.cpp @@ -1862,8 +1862,24 @@ void DocumentBroker::getIOStats(uint64_t &sent, uint64_t &recv) } } +static std::atomic<size_t> NumConverters; + +size_t ConvertToBroker::getInstanceCount() +{ + return NumConverters; +} + +ConvertToBroker::ConvertToBroker(const std::string& uri, + const Poco::URI& uriPublic, + const std::string& docKey) + : DocumentBroker(uri, uriPublic, docKey) +{ + NumConverters++; +} + ConvertToBroker::~ConvertToBroker() { + NumConverters--; if (!_uriOrig.empty()) { // Remove source file and directory diff --git a/wsd/DocumentBroker.hpp b/wsd/DocumentBroker.hpp index ddf5ec10b4..4e628af121 100644 --- a/wsd/DocumentBroker.hpp +++ b/wsd/DocumentBroker.hpp @@ -479,11 +479,11 @@ public: /// Construct DocumentBroker with URI and docKey ConvertToBroker(const std::string& uri, const Poco::URI& uriPublic, - const std::string& docKey) - : DocumentBroker(uri, uriPublic, docKey) - { - } + const std::string& docKey); virtual ~ConvertToBroker(); + + /// How many live conversions are running. + static size_t getInstanceCount(); }; #endif diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp index c8b20552cf..4878e116eb 100644 --- a/wsd/LOOLWSD.cpp +++ b/wsd/LOOLWSD.cpp @@ -254,8 +254,8 @@ inline void shutdownLimitReached(WebSocketHandler& ws) inline void checkSessionLimitsAndWarnClients() { #ifndef MOBILEAPP - - if (DocBrokers.size() > LOOLWSD::MaxDocuments || LOOLWSD::NumConnections >= LOOLWSD::MaxConnections) + size_t docBrokerCount = DocBrokers.size() - ConvertToBroker::getInstanceCount(); + if (docBrokerCount > LOOLWSD::MaxDocuments || LOOLWSD::NumConnections >= LOOLWSD::MaxConnections) { const std::string info = Poco::format(PAYLOAD_INFO_LIMIT_REACHED, LOOLWSD::MaxDocuments, LOOLWSD::MaxConnections); LOG_INF("Sending client 'limitreached' message: " << info); @@ -2931,6 +2931,7 @@ public: << "[ " << DocBrokers.size() << " ]:\n"; for (auto &i : DocBrokers) i.second->dumpState(os); + os << "Converter count: " << ConvertToBroker::getInstanceCount() << "\n"; Socket::InhibitThreadChecks = false; SocketPoll::InhibitThreadChecks = false; |