[Libreoffice-commits] online.git: loolwsd/LOOLBroker.cpp loolwsd/LOOLKit.cpp
Henry Castro
hcastro at collabora.com
Fri Jan 8 15:05:07 PST 2016
loolwsd/LOOLBroker.cpp | 37 ++++++++++++++++++++++++++++++++++++-
loolwsd/LOOLKit.cpp | 4 ++--
2 files changed, 38 insertions(+), 3 deletions(-)
New commits:
commit 584e68e6d1ff0c5e45eadf6dd8987f1c6714831e
Author: Henry Castro <hcastro at collabora.com>
Date: Fri Jan 8 19:02:09 2016 -0400
loolwsd: remove expired session URL cached
diff --git a/loolwsd/LOOLBroker.cpp b/loolwsd/LOOLBroker.cpp
index dd90a47..5fdd28b 100644
--- a/loolwsd/LOOLBroker.cpp
+++ b/loolwsd/LOOLBroker.cpp
@@ -68,6 +68,7 @@ static int readerChild = -1;
static int readerBroker = -1;
static std::atomic<unsigned> forkCounter;
+static std::atomic<std::chrono::seconds> maintenance;
static unsigned int childCounter = 0;
static unsigned int numPreSpawnedChildren = 0;
@@ -236,6 +237,35 @@ public:
return sendMessage(_childProcesses[nPID], aMessage);
}
+ void verifyChilds()
+ {
+ std::string aMessage;
+ bool bError = false;
+
+ // sanity cache
+ for (auto it =_cacheURL.cbegin(); it != _cacheURL.cend(); )
+ {
+ aMessage = "search " + it->first + "\r\n";
+ if (sendMessage(_childProcesses[it->second], aMessage) < 0)
+ {
+ bError = true;
+ break;
+ }
+
+ if (!isOKResponse(it->second))
+ {
+ Log::debug() << "Removed expired Kit [" + std::to_string(it->second) + "] hosts URL [" + it->first + "] -> " << Log::end;
+ _cacheURL.erase(it++);
+ continue;
+ }
+
+ it++;
+ }
+
+ if (bError)
+ _cacheURL.clear();
+ }
+
Process::PID searchURL(const std::string& aURL)
{
const std::string aMessage = "search " + aURL + "\r\n";
@@ -404,6 +434,11 @@ public:
pStart++;
forkMutex.lock();
+ if (maintenance.load() > std::chrono::seconds(10))
+ {
+ maintenance = std::chrono::seconds::zero();
+ verifyChilds();
+ }
handleInput(aMessage);
aMessage.clear();
forkMutex.unlock();
@@ -819,7 +854,7 @@ int main(int argc, char** argv)
{
timeoutCounter = 0;
sleep(MAINTENANCE_INTERVAL);
- // TODO. lokit processes maintance
+ maintenance.store( ++maintenance.load() );
}
}
diff --git a/loolwsd/LOOLKit.cpp b/loolwsd/LOOLKit.cpp
index c46c260..32c8f4d 100644
--- a/loolwsd/LOOLKit.cpp
+++ b/loolwsd/LOOLKit.cpp
@@ -738,7 +738,7 @@ void lokit_main(const std::string &loSubPath, const std::string& jailId, const s
}
else
{
- aResponse += ( pDocument->getURL() == tokens[1] ? "ok \r\n" : "no \r\n");
+ aResponse += (pDocument->getURL() == tokens[1] ? "ok \r\n" : "no \r\n");
}
}
else if (tokens[0] == "thread")
@@ -746,7 +746,7 @@ void lokit_main(const std::string &loSubPath, const std::string& jailId, const s
const std::string& sessionId = tokens[1];
const std::string& url = tokens[2];
- if ( !pDocument->hasConnections() || (pDocument->getURL() == url))
+ if (!pDocument->hasConnections() || pDocument->getURL() == url)
{
Log::debug("Thread request for session [" + sessionId + "], url: [" + url + "].");
pDocument->createSession(sessionId, url);
More information about the Libreoffice-commits
mailing list