From 1bb2800fb1bf312689115a7230b1d3ead74d4ac6 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Sun, 20 Feb 2022 21:24:22 +0000 Subject: Use a common FNET_Transport owned by Proton in both SceduledExecutor and TransactionLogServer. This reduces the number of Transport object by 1 per document type and netto 1 in Proton. Each of them contains 2 threads. In addition it uses a common Transport for the RpcFileAcquirer objects used during config fetching. This prevents creating 3 temporary Transport objects on every reconfig. --- config/src/tests/file_acquirer/file_acquirer_test.cpp | 18 +++++++++++++++--- .../src/vespa/config/file_acquirer/file_acquirer.cpp | 15 ++++----------- config/src/vespa/config/file_acquirer/file_acquirer.h | 9 +++------ 3 files changed, 22 insertions(+), 20 deletions(-) (limited to 'config') diff --git a/config/src/tests/file_acquirer/file_acquirer_test.cpp b/config/src/tests/file_acquirer/file_acquirer_test.cpp index f289e42edcb..7daafc37fcf 100644 --- a/config/src/tests/file_acquirer/file_acquirer_test.cpp +++ b/config/src/tests/file_acquirer/file_acquirer_test.cpp @@ -3,12 +3,16 @@ #include #include #include +#include +#include #include using namespace config; struct ServerFixture : FRT_Invokable { fnet::frt::StandaloneFRT server; + FastOS_ThreadPool threadPool; + FNET_Transport transport; FRT_Supervisor &orb; vespalib::string spec; @@ -20,10 +24,16 @@ struct ServerFixture : FRT_Invokable { rb.ReturnDesc("file_path", "actual path to the requested file"); } - ServerFixture() : server(), orb(server.supervisor()) { + ServerFixture() + : server(), + threadPool(64_Ki), + transport(), + orb(server.supervisor()) + { init_rpc(); orb.Listen(0); spec = vespalib::make_string("tcp/localhost:%d", orb.GetListenPort()); + transport.Start(&threadPool); } void RPC_waitFor(FRT_RPCRequest *req) { @@ -36,10 +46,12 @@ struct ServerFixture : FRT_Invokable { } } - ~ServerFixture() = default; + ~ServerFixture() { + transport.ShutDown(true); + } }; -TEST_FF("require that files can be acquired over rpc", ServerFixture(), RpcFileAcquirer(f1.spec)) { +TEST_FF("require that files can be acquired over rpc", ServerFixture(), RpcFileAcquirer(f1.transport, f1.spec)) { EXPECT_EQUAL("my_path", f2.wait_for("my_ref", 60.0)); EXPECT_EQUAL("", f2.wait_for("bogus_ref", 60.0)); } diff --git a/config/src/vespa/config/file_acquirer/file_acquirer.cpp b/config/src/vespa/config/file_acquirer/file_acquirer.cpp index 46782cac9ca..9cf280566e0 100644 --- a/config/src/vespa/config/file_acquirer/file_acquirer.cpp +++ b/config/src/vespa/config/file_acquirer/file_acquirer.cpp @@ -13,14 +13,10 @@ LOG_SETUP(".config.file_acquirer"); namespace config { -RpcFileAcquirer::RpcFileAcquirer(const vespalib::string &spec) - : _threadPool(std::make_unique(60_Ki)), - _transport(std::make_unique()), - _orb(std::make_unique(_transport.get())), +RpcFileAcquirer::RpcFileAcquirer(FNET_Transport & transport, const vespalib::string &spec) + : _orb(std::make_unique(&transport)), _spec(spec) -{ - _transport->Start(_threadPool.get()); -} +{ } vespalib::string RpcFileAcquirer::wait_for(const vespalib::string &file_ref, double timeout_s) @@ -42,9 +38,6 @@ RpcFileAcquirer::wait_for(const vespalib::string &file_ref, double timeout_s) return path; } -RpcFileAcquirer::~RpcFileAcquirer() -{ - _transport->ShutDown(true); -} +RpcFileAcquirer::~RpcFileAcquirer() = default; } // namespace config diff --git a/config/src/vespa/config/file_acquirer/file_acquirer.h b/config/src/vespa/config/file_acquirer/file_acquirer.h index 4088065281d..a6d90fbee15 100644 --- a/config/src/vespa/config/file_acquirer/file_acquirer.h +++ b/config/src/vespa/config/file_acquirer/file_acquirer.h @@ -6,7 +6,6 @@ class FRT_Supervisor; class FNET_Transport; -class FastOS_ThreadPool; namespace config { @@ -26,12 +25,10 @@ struct FileAcquirer { class RpcFileAcquirer : public FileAcquirer { private: - std::unique_ptr _threadPool; - std::unique_ptr _transport; - std::unique_ptr _orb; - vespalib::string _spec; + std::unique_ptr _orb; + vespalib::string _spec; public: - RpcFileAcquirer(const vespalib::string &spec); + RpcFileAcquirer(FNET_Transport & transport, const vespalib::string &spec); vespalib::string wait_for(const vespalib::string &file_ref, double timeout_s) override; ~RpcFileAcquirer() override; }; -- cgit v1.2.3