aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@yahooinc.com>2023-02-20 11:39:12 +0000
committerHåvard Pettersen <havardpe@yahooinc.com>2023-02-20 12:33:29 +0000
commitd9b2cc5dd6aa9210241efeac249be84772377b35 (patch)
treea78022b7588a4deba71544c79dd6efaa53792f94 /searchlib
parenta5d5a7dd7bab499554691fa59e08b3771b5e32d3 (diff)
remove document::Runnable
use std::thread directly instead
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/transactionlog/translogclient_test.cpp1
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp15
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/translogserver.h11
-rw-r--r--searchlib/src/vespa/searchlib/util/runnable.h1
4 files changed, 15 insertions, 13 deletions
diff --git a/searchlib/src/tests/transactionlog/translogclient_test.cpp b/searchlib/src/tests/transactionlog/translogclient_test.cpp
index af214c34be8..a1a42b592b2 100644
--- a/searchlib/src/tests/transactionlog/translogclient_test.cpp
+++ b/searchlib/src/tests/transactionlog/translogclient_test.cpp
@@ -11,6 +11,7 @@
#include <vespa/vespalib/util/destructor_callbacks.h>
#include <vespa/fnet/transport.h>
#include <vespa/fastos/file.h>
+#include <vespa/fastos/thread.h>
#include <thread>
#include <vespa/log/log.h>
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp b/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp
index 98a9568e4e8..c96b0cdcd61 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp
@@ -99,7 +99,7 @@ TransLogServer::TransLogServer(FNET_Transport & transport, const vespalib::strin
_baseDir(baseDir),
_domainConfig(cfg),
_executor(maxThreads, CpuUsage::wrap(tls_executor, CpuUsage::Category::WRITE)),
- _threadPool(std::make_unique<FastOS_ThreadPool>()),
+ _thread(),
_supervisor(std::make_unique<FRT_Supervisor>(&transport)),
_domains(),
_reqQ(),
@@ -143,25 +143,24 @@ TransLogServer::TransLogServer(FNET_Transport & transport, const vespalib::strin
} else {
throw std::runtime_error(make_string("Failed creating tls base dir %s r(%d), e(%d). Requires manual intervention.", _baseDir.c_str(), retval, errno));
}
- start(*_threadPool);
+ _thread = std::thread([this](){run();});
}
TransLogServer::~TransLogServer()
{
- _closed = true;
- stop();
- join();
+ request_stop();
+ _thread.join();
_executor.sync();
_executor.shutdown();
_executor.sync();
}
-bool
-TransLogServer::onStop()
+void
+TransLogServer::request_stop()
{
+ _closed = true;
LOG(info, "Stopping TLS");
_reqQ.push(nullptr);
- return true;
}
void
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogserver.h b/searchlib/src/vespa/searchlib/transactionlog/translogserver.h
index f7ea80c9248..2c5fbf51a08 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/translogserver.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/translogserver.h
@@ -2,7 +2,6 @@
#pragma once
#include "domainconfig.h"
-#include <vespa/vespalib/util/document_runnable.h>
#include <vespa/vespalib/util/threadstackexecutor.h>
#include <vespa/document/util/queue.h>
#include <vespa/fnet/frt/invokable.h>
@@ -18,7 +17,7 @@ namespace search::transactionlog {
class TransLogServerExplorer;
class Domain;
-class TransLogServer : private FRT_Invokable, public document::Runnable, public WriterFactory
+class TransLogServer : private FRT_Invokable, public WriterFactory
{
public:
friend class TransLogServerExplorer;
@@ -36,8 +35,8 @@ public:
TransLogServer & setDomainConfig(const DomainConfig & cfg);
private:
- bool onStop() override;
- void run() override;
+ void request_stop();
+ void run();
void exportRPC(FRT_Supervisor & supervisor);
void relayToThreadRPC(FRT_RPCRequest *req);
@@ -63,11 +62,13 @@ private:
using ReadGuard = std::shared_lock<std::shared_mutex>;
using WriteGuard = std::unique_lock<std::shared_mutex>;
+ bool running() const { return !_closed.load(std::memory_order_relaxed); }
+
vespalib::string _name;
vespalib::string _baseDir;
DomainConfig _domainConfig;
vespalib::ThreadStackExecutor _executor;
- std::unique_ptr<FastOS_ThreadPool> _threadPool;
+ std::thread _thread;
std::unique_ptr<FRT_Supervisor> _supervisor;
DomainList _domains;
mutable std::shared_mutex _domainMutex;; // Protects _domains
diff --git a/searchlib/src/vespa/searchlib/util/runnable.h b/searchlib/src/vespa/searchlib/util/runnable.h
index e268b13e09a..4b353209762 100644
--- a/searchlib/src/vespa/searchlib/util/runnable.h
+++ b/searchlib/src/vespa/searchlib/util/runnable.h
@@ -4,6 +4,7 @@
#include <mutex>
#include <condition_variable>
+#include <vespa/fastos/thread.h>
namespace search {