summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2019-03-12 15:41:54 +0100
committerSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2020-04-14 08:23:49 +0200
commitdab5603fc6bdb9ffbc576c9ae693724484f31b37 (patch)
tree6ee32529158edf44841c7a8f21b853ab291c39d2
parenttdf#123482 - cleanup convert-to folder more reliably. (diff)
downloadonline-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.cpp16
-rw-r--r--wsd/DocumentBroker.hpp8
-rw-r--r--wsd/LOOLWSD.cpp5
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;