diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-05-10 11:25:48 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-05-10 12:25:38 +0000 |
commit | 4412aace869986be3a1060f78f367841353d3384 (patch) | |
tree | f4b5e1f6da5eaf1563f3b2fd64779800acfd5796 /searchlib | |
parent | 840d4e0578dc627b75bcd0050f1b253e84cc30ed (diff) |
Simplify the supervisor responsibility
Diffstat (limited to 'searchlib')
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 |