summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-05-10 11:25:48 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2019-05-10 12:25:38 +0000
commit4412aace869986be3a1060f78f367841353d3384 (patch)
treef4b5e1f6da5eaf1563f3b2fd64779800acfd5796 /searchlib
parent840d4e0578dc627b75bcd0050f1b253e84cc30ed (diff)
Simplify the supervisor responsibility
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/engine/proto_rpc_adapter/proto_rpc_adapter_test.cpp13
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/translogclient.cpp10
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/translogclient.h5
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp12
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/translogserver.h4
5 files changed, 26 insertions, 18 deletions
diff --git a/searchlib/src/tests/engine/proto_rpc_adapter/proto_rpc_adapter_test.cpp b/searchlib/src/tests/engine/proto_rpc_adapter/proto_rpc_adapter_test.cpp
index 60cf1af13a0..6747e4e741e 100644
--- a/searchlib/src/tests/engine/proto_rpc_adapter/proto_rpc_adapter_test.cpp
+++ b/searchlib/src/tests/engine/proto_rpc_adapter/proto_rpc_adapter_test.cpp
@@ -62,23 +62,20 @@ struct MyMonitorServer : MonitorServer {
};
struct ProtoRpcAdapterTest : ::testing::Test {
- FRT_Supervisor orb;
+ fnet::frt::StandaloneFRT server;
MySearchServer search;
MyDocsumServer docsum;
MyMonitorServer monitor;
ProtoRpcAdapter adapter;
ProtoRpcAdapterTest()
- : orb(), adapter(search, docsum, monitor, orb)
+ : server(), adapter(search, docsum, monitor, server.supervisor())
{
- orb.Listen(0);
- orb.Start();
+ server.supervisor().Listen(0);
}
FRT_Target *connect() {
- return orb.GetTarget(orb.GetListenPort());
- }
- ~ProtoRpcAdapterTest() {
- orb.ShutDown(true);
+ return server.supervisor().GetTarget(server.supervisor().GetListenPort());
}
+ ~ProtoRpcAdapterTest() = default;
};
//-----------------------------------------------------------------------------
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogclient.cpp b/searchlib/src/vespa/searchlib/transactionlog/translogclient.cpp
index 767c8b45e10..2c6c1e249f4 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/translogclient.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/translogclient.cpp
@@ -4,6 +4,8 @@
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/target.h>
#include <vespa/fnet/frt/rpcrequest.h>
+#include <vespa/fnet/transport.h>
+#include <vespa/fastos/thread.h>
#include <thread>
#include <vespa/log/log.h>
@@ -47,19 +49,21 @@ TransLogClient::TransLogClient(const vespalib::string & rpcTarget) :
_executor(1, 128 * 1024, translogclient_rpc_callback),
_rpcTarget(rpcTarget),
_sessions(),
- _supervisor(std::make_unique<FRT_Supervisor>()),
+ _threadPool(std::make_unique<FastOS_ThreadPool>(1024*60)),
+ _transport(std::make_unique<FNET_Transport>()),
+ _supervisor(std::make_unique<FRT_Supervisor>(_transport.get())),
_target(NULL)
{
reconnect();
exportRPC(*_supervisor);
- _supervisor->Start();
+ _transport->Start(_threadPool.get());
}
TransLogClient::~TransLogClient()
{
disconnect();
_executor.shutdown().sync();
- _supervisor->ShutDown(true);
+ _transport->ShutDown(true);
}
bool TransLogClient::reconnect()
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogclient.h b/searchlib/src/vespa/searchlib/transactionlog/translogclient.h
index 267d6e3b0ed..38c30cd5b4c 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/translogclient.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/translogclient.h
@@ -10,6 +10,7 @@
#include <map>
#include <vector>
+class FNET_Transport;
class FRT_Supervisor;
class FRT_Target;
@@ -122,7 +123,9 @@ private:
SessionMap _sessions;
//Brute force lock for subscriptions. For multithread safety.
vespalib::Lock _lock;
- std::unique_ptr<FRT_Supervisor> _supervisor;
+ std::unique_ptr<FastOS_ThreadPool> _threadPool;
+ std::unique_ptr<FNET_Transport> _transport;
+ std::unique_ptr<FRT_Supervisor> _supervisor;
FRT_Target * _target;
};
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp b/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp
index 4b3e7bddb07..6d11ab1f5eb 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp
@@ -6,6 +6,7 @@
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/rpcrequest.h>
#include <vespa/fnet/task.h>
+#include <vespa/fnet/transport.h>
#include <fstream>
#include <vespa/log/log.h>
@@ -90,8 +91,9 @@ TransLogServer::TransLogServer(const vespalib::string &name, int listenPort, con
_defaultCrcType(defaultCrcType),
_commitExecutor(maxThreads, 128*1024),
_sessionExecutor(maxThreads, 128*1024),
- _threadPool(8192, 1),
- _supervisor(std::make_unique<FRT_Supervisor>()),
+ _threadPool(std::make_unique<FastOS_ThreadPool>(1024*60)),
+ _transport(std::make_unique<FNET_Transport>()),
+ _supervisor(std::make_unique<FRT_Supervisor>(_transport.get())),
_domains(),
_reqQ(),
_fileHeaderContext(fileHeaderContext)
@@ -119,7 +121,7 @@ TransLogServer::TransLogServer(const vespalib::string &name, int listenPort, con
bool listenOk(false);
for (int i(600); !listenOk && i; i--) {
if (_supervisor->Listen(listenSpec)) {
- _supervisor->Start();
+ _transport->Start(_threadPool.get());
listenOk = true;
} else {
LOG(warning, "Failed listening at port %s trying for %d seconds more.", listenSpec, i);
@@ -135,7 +137,7 @@ TransLogServer::TransLogServer(const vespalib::string &name, int listenPort, con
} 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);
+ start(*_threadPool);
}
TransLogServer::~TransLogServer()
@@ -146,7 +148,7 @@ TransLogServer::~TransLogServer()
_commitExecutor.sync();
_sessionExecutor.shutdown();
_sessionExecutor.sync();
- _supervisor->ShutDown(true);
+ _transport->ShutDown(true);
}
bool
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogserver.h b/searchlib/src/vespa/searchlib/transactionlog/translogserver.h
index 8aedfef6d8d..0d65f36e07d 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/translogserver.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/translogserver.h
@@ -10,6 +10,7 @@
class FRT_Supervisor;
+class FNET_Transport;
namespace search::common { class FileHeaderContext; }
@@ -85,7 +86,8 @@ private:
const DomainPart::Crc _defaultCrcType;
vespalib::ThreadStackExecutor _commitExecutor;
vespalib::ThreadStackExecutor _sessionExecutor;
- FastOS_ThreadPool _threadPool;
+ std::unique_ptr<FastOS_ThreadPool> _threadPool;
+ std::unique_ptr<FNET_Transport> _transport;
std::unique_ptr<FRT_Supervisor> _supervisor;
DomainList _domains;
mutable std::mutex _lock; // Protects _domains