diff options
-rw-r--r-- | config/src/vespa/config/subscription/sourcespec.cpp | 16 | ||||
-rw-r--r-- | config/src/vespa/config/subscription/sourcespec.h | 31 | ||||
-rw-r--r-- | fnet/src/tests/connect/connect_test.cpp | 4 | ||||
-rw-r--r-- | fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp | 2 | ||||
-rw-r--r-- | fnet/src/tests/transport_debugger/transport_debugger_test.cpp | 2 | ||||
-rw-r--r-- | fnet/src/vespa/fnet/frt/supervisor.h | 2 | ||||
-rw-r--r-- | fnet/src/vespa/fnet/transport.cpp | 6 | ||||
-rw-r--r-- | fnet/src/vespa/fnet/transport.h | 11 | ||||
-rw-r--r-- | messagebus/src/vespa/messagebus/network/rpcnetwork.cpp | 4 | ||||
-rw-r--r-- | searchcore/src/apps/proton/proton.cpp | 15 | ||||
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/server/proton.cpp | 25 | ||||
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/server/proton.h | 11 | ||||
-rw-r--r-- | slobrok/src/tests/rpc_mapping_monitor/rpc_mapping_monitor_test.cpp | 9 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/sbenv.cpp | 2 | ||||
-rw-r--r-- | storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp | 2 |
15 files changed, 88 insertions, 54 deletions
diff --git a/config/src/vespa/config/subscription/sourcespec.cpp b/config/src/vespa/config/subscription/sourcespec.cpp index ec70f921179..15f45434056 100644 --- a/config/src/vespa/config/subscription/sourcespec.cpp +++ b/config/src/vespa/config/subscription/sourcespec.cpp @@ -131,6 +131,22 @@ ServerSpec::createSourceFactory(const TimingValues & timingValues) const timingValues, _traceLevel, vespaVersion, _compressionType); } +ConfigServerSpec::ConfigServerSpec(FNET_Transport & transport) + : ServerSpec(), + _transport(transport) +{ +} + +ConfigServerSpec::~ConfigServerSpec() = default; + +std::unique_ptr<SourceFactory> +ConfigServerSpec::createSourceFactory(const TimingValues & timingValues) const +{ + const auto vespaVersion = VespaVersion::getCurrentVersion(); + return std::make_unique<FRTSourceFactory>( + std::make_unique<FRTConnectionPool>(_transport, *this, timingValues), + timingValues, traceLevel(), vespaVersion, compressionType()); +} ConfigSet::ConfigSet() : _builderMap(std::make_unique<BuilderMap>()) diff --git a/config/src/vespa/config/subscription/sourcespec.h b/config/src/vespa/config/subscription/sourcespec.h index 3c23233e3ab..e2bdd1c61ee 100644 --- a/config/src/vespa/config/subscription/sourcespec.h +++ b/config/src/vespa/config/subscription/sourcespec.h @@ -7,6 +7,8 @@ #include <vector> #include <memory> +class FNET_Transport; + namespace config { class ConfigInstance; @@ -22,7 +24,6 @@ typedef vespalib::string SourceSpecKey; class SourceSpec { public: - using SourceFactorySP = std::unique_ptr<SourceFactory>; using UP = std::unique_ptr<SourceSpec>; /// Convenience typedef /** @@ -36,7 +37,7 @@ public: * @param timingValues Timing values to be used for this source. * @return An std::unique_ptr<Source> that can be used to ask for config. */ - virtual SourceFactorySP createSourceFactory(const TimingValues & timingValues) const = 0; + virtual std::unique_ptr<SourceFactory> createSourceFactory(const TimingValues & timingValues) const = 0; virtual ~SourceSpec() = default; }; @@ -54,8 +55,7 @@ public: */ RawSpec(const vespalib::string & config); - // Implements SourceSpec - SourceFactorySP createSourceFactory(const TimingValues & timingValues) const override; + std::unique_ptr<SourceFactory> createSourceFactory(const TimingValues & timingValues) const override; /** * Returns the string representation of this config. @@ -89,8 +89,7 @@ public: */ const vespalib::string & getFileName() const { return _fileName; } - // Implements SourceSpec - SourceFactorySP createSourceFactory(const TimingValues & timingValues) const override; + std::unique_ptr<SourceFactory> createSourceFactory(const TimingValues & timingValues) const override; private: void verifyName(const vespalib::string & fileName); vespalib::string _fileName; @@ -117,8 +116,7 @@ public: */ const vespalib::string & getDirName() const { return _dirName; } - // Implements SourceSpec - SourceFactorySP createSourceFactory(const TimingValues & timingValues) const override; + std::unique_ptr<SourceFactory> createSourceFactory(const TimingValues & timingValues) const override; private: vespalib::string _dirName; }; @@ -154,7 +152,7 @@ public: */ ServerSpec(const vespalib::string & hostSpec); - SourceFactorySP createSourceFactory(const TimingValues & timingValues) const override; + std::unique_ptr<SourceFactory> createSourceFactory(const TimingValues & timingValues) const override; /** * Inspect how many hosts this source refers to. @@ -193,6 +191,18 @@ private: const static int DEFAULT_PROXY_PORT = 19090; }; +/** + * A ServerSpec that allows providing externally supplied transport + */ +class ConfigServerSpec : public config::ServerSpec { +public: + ConfigServerSpec(FNET_Transport & transport); + ~ConfigServerSpec() override; + std::unique_ptr<SourceFactory> createSourceFactory(const TimingValues & timingValues) const override; +private: + FNET_Transport & _transport; +}; + /** @@ -221,8 +231,7 @@ public: */ void addBuilder(const vespalib::string & configId, ConfigInstance * builder); - // Implements SourceSpec - SourceFactorySP createSourceFactory(const TimingValues & timingValues) const override; + std::unique_ptr<SourceFactory> createSourceFactory(const TimingValues & timingValues) const override; private: BuilderMapSP _builderMap; }; diff --git a/fnet/src/tests/connect/connect_test.cpp b/fnet/src/tests/connect/connect_test.cpp index 308981542db..2edb2e694ff 100644 --- a/fnet/src/tests/connect/connect_test.cpp +++ b/fnet/src/tests/connect/connect_test.cpp @@ -98,13 +98,13 @@ struct TransportFixture : FNET_IPacketHandler, FNET_IConnectionCleanupHandler { transport.Start(&pool); } TransportFixture(AsyncResolver::HostResolver::SP host_resolver) - : streamer(nullptr), pool(128_Ki), transport(TransportConfig().resolver(make_resolver(std::move(host_resolver)))), + : streamer(nullptr), pool(128_Ki), transport(fnet::TransportConfig().resolver(make_resolver(std::move(host_resolver)))), conn_lost(), conn_deleted() { transport.Start(&pool); } TransportFixture(CryptoEngine::SP crypto) - : streamer(nullptr), pool(128_Ki), transport(TransportConfig().crypto(std::move(crypto))), + : streamer(nullptr), pool(128_Ki), transport(fnet::TransportConfig().crypto(std::move(crypto))), conn_lost(), conn_deleted() { transport.Start(&pool); diff --git a/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp b/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp index 0fd5029c9b9..b027b80f8ab 100644 --- a/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp +++ b/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp @@ -19,7 +19,7 @@ struct Rpc : FRT_Invokable { FNET_Transport transport; FRT_Supervisor orb; Rpc(CryptoEngine::SP crypto, size_t num_threads, bool drop_empty) - : thread_pool(128_Ki), transport(TransportConfig(num_threads).crypto(std::move(crypto)).drop_empty_buffers(drop_empty)), orb(&transport) {} + : thread_pool(128_Ki), transport(fnet::TransportConfig(num_threads).crypto(std::move(crypto)).drop_empty_buffers(drop_empty)), orb(&transport) {} void start() { ASSERT_TRUE(transport.Start(&thread_pool)); } diff --git a/fnet/src/tests/transport_debugger/transport_debugger_test.cpp b/fnet/src/tests/transport_debugger/transport_debugger_test.cpp index 044f9da5394..a363b1df4c2 100644 --- a/fnet/src/tests/transport_debugger/transport_debugger_test.cpp +++ b/fnet/src/tests/transport_debugger/transport_debugger_test.cpp @@ -18,7 +18,7 @@ vespalib::CryptoEngine::SP tls_crypto = std::make_shared<vespalib::TlsCryptoEngi struct Service : FRT_Invokable { fnet::frt::StandaloneFRT frt; Service(fnet::TimeTools::SP time_tools) - : frt(TransportConfig(4).crypto(tls_crypto).time_tools(time_tools)) + : frt(fnet::TransportConfig(4).crypto(tls_crypto).time_tools(time_tools)) { init_rpc(); ASSERT_TRUE(frt.supervisor().Listen(0)); diff --git a/fnet/src/vespa/fnet/frt/supervisor.h b/fnet/src/vespa/fnet/frt/supervisor.h index 0207adc8adb..a97385adfed 100644 --- a/fnet/src/vespa/fnet/frt/supervisor.h +++ b/fnet/src/vespa/fnet/frt/supervisor.h @@ -10,7 +10,7 @@ #include <vespa/fnet/connection.h> #include <vespa/fnet/simplepacketstreamer.h> -class TransportConfig; +namespace fnet { class TransportConfig; } class FNET_Transport; class FRT_Target; class FastOS_ThreadPool; diff --git a/fnet/src/vespa/fnet/transport.cpp b/fnet/src/vespa/fnet/transport.cpp index a695b95bbac..b4e3443b886 100644 --- a/fnet/src/vespa/fnet/transport.cpp +++ b/fnet/src/vespa/fnet/transport.cpp @@ -98,8 +98,6 @@ TimeTools::make_debug(vespalib::duration event_timeout, return std::make_shared<DebugTimeTools>(event_timeout, std::move(current_time)); } -} // fnet - TransportConfig::TransportConfig(int num_threads) : _config(), _resolver(), @@ -125,7 +123,9 @@ TransportConfig::time_tools() const { return _time_tools ? _time_tools : std::make_shared<DefaultTimeTools>(); } -FNET_Transport::FNET_Transport(const TransportConfig &cfg) +} // fnet + +FNET_Transport::FNET_Transport(const fnet::TransportConfig &cfg) : _async_resolver(cfg.resolver()), _crypto_engine(cfg.crypto()), _time_tools(cfg.time_tools()), diff --git a/fnet/src/vespa/fnet/transport.h b/fnet/src/vespa/fnet/transport.h index 1e8faad9c1d..c3101d37b18 100644 --- a/fnet/src/vespa/fnet/transport.h +++ b/fnet/src/vespa/fnet/transport.h @@ -4,8 +4,6 @@ #include "context.h" #include "config.h" -#include <memory> -#include <vector> #include <vespa/vespalib/net/async_resolver.h> #include <vespa/vespalib/net/crypto_engine.h> #include <vespa/vespalib/util/time.h> @@ -39,7 +37,6 @@ struct TimeTools { std::function<vespalib::steady_time()> current_time); }; -} // fnet class TransportConfig { public: @@ -96,6 +93,8 @@ private: uint32_t _num_threads; }; +} // fnet + /** * This class represents the transport layer and handles a collection * of transport threads. Note: remember to shut down your transport @@ -124,12 +123,12 @@ public: * the current thread become the transport thread. Main may only * be called for single-threaded transports. **/ - explicit FNET_Transport(const TransportConfig &config); + explicit FNET_Transport(const fnet::TransportConfig &config); explicit FNET_Transport(uint32_t num_threads) - : FNET_Transport(TransportConfig(num_threads)) {} + : FNET_Transport(fnet::TransportConfig(num_threads)) {} FNET_Transport() - : FNET_Transport(TransportConfig()) {} + : FNET_Transport(fnet::TransportConfig()) {} ~FNET_Transport(); const FNET_Config & getConfig() const { return _config; } diff --git a/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp b/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp index c33f918a39c..0f7ebeb9a36 100644 --- a/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp +++ b/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp @@ -80,9 +80,9 @@ struct TargetPoolTask : public FNET_Task { } }; -TransportConfig +fnet::TransportConfig toFNETConfig(const RPCNetworkParams & params) { - return TransportConfig(params.getNumNetworkThreads()) + return fnet::TransportConfig(params.getNumNetworkThreads()) .maxInputBufferSize(params.getMaxInputBufferSize()) .maxOutputBufferSize(params.getMaxOutputBufferSize()) .tcpNoDelay(params.getTcpNoDelay()); diff --git a/searchcore/src/apps/proton/proton.cpp b/searchcore/src/apps/proton/proton.cpp index 61536f924a5..552e6688532 100644 --- a/searchcore/src/apps/proton/proton.cpp +++ b/searchcore/src/apps/proton/proton.cpp @@ -5,9 +5,13 @@ #include <vespa/metrics/metricmanager.h> #include <vespa/vespalib/util/signalhandler.h> #include <vespa/vespalib/util/programoptions.h> +#include <vespa/vespalib/util/size_literals.h> #include <vespa/vespalib/io/fileutil.h> #include <vespa/vespalib/util/exceptions.h> #include <vespa/config/common/exceptions.h> +#include <vespa/config/common/configcontext.h> +#include <vespa/fnet/transport.h> +#include <vespa/fastos/thread.h> #include <vespa/fastos/app.h> #include <iostream> #include <thread> @@ -186,8 +190,14 @@ App::Main() LOG(debug, "serviceidentity: '%s'", params.serviceidentity.c_str()); LOG(debug, "subscribeTimeout: '%" PRIu64 "'", params.subscribeTimeout); std::chrono::milliseconds subscribeTimeout(params.subscribeTimeout); - config::ConfigUri identityUri(params.identity); - protonUP = std::make_unique<proton::Proton>(identityUri, _argc > 0 ? _argv[0] : "proton", subscribeTimeout); + FastOS_ThreadPool threadPool(128_Ki); + uint32_t numProcs = std::thread::hardware_concurrency(); + FNET_Transport transport(fnet::TransportConfig(std::max(1u, std::min(4u, numProcs/8)))); + transport.Start(&threadPool); + config::ConfigServerSpec configServerSpec(transport); + config::ConfigUri identityUri(params.identity, std::make_shared<config::ConfigContext>(configServerSpec)); + protonUP = std::make_unique<proton::Proton>(threadPool, transport, identityUri, + _argc > 0 ? _argv[0] : "proton", subscribeTimeout); proton::Proton & proton = *protonUP; proton::BootstrapConfig::SP configSnapshot = proton.init(); if (proton.hasAbortedInit()) { @@ -228,6 +238,7 @@ App::Main() EV_STOPPING("servicelayer", "clean shutdown"); } protonUP.reset(); + transport.ShutDown(true); EV_STOPPING("proton", "clean shutdown"); } } catch (const vespalib::InvalidCommandLineArgumentsException &e) { diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.cpp b/searchcore/src/vespa/searchcore/proton/server/proton.cpp index 0f20b0a7b47..8bd965497a8 100644 --- a/searchcore/src/vespa/searchcore/proton/server/proton.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/proton.cpp @@ -201,9 +201,8 @@ Proton::ProtonFileHeaderContext::setClusterName(const vespalib::string & cluster } -Proton::Proton(const config::ConfigUri & configUri, - const vespalib::string &progName, - vespalib::duration subscribeTimeout) +Proton::Proton(FastOS_ThreadPool & threadPool, FNET_Transport & transport, const config::ConfigUri & configUri, + const vespalib::string &progName, vespalib::duration subscribeTimeout) : IProtonConfigurerOwner(), search::engine::MonitorServer(), IDocumentDBOwner(), @@ -211,8 +210,8 @@ Proton::Proton(const config::ConfigUri & configUri, IPersistenceEngineOwner(), ComponentConfigProducer(), _cpu_util(), - _threadPool(std::make_unique<FastOS_ThreadPool>(128_Ki)), - _transport(std::make_unique<FNET_Transport>(TransportConfig(1))), + _threadPool(threadPool), + _transport(transport), _configUri(configUri), _mutex(), _metricsHook(std::make_unique<MetricsUpdateHook>(*this)), @@ -238,7 +237,7 @@ Proton::Proton(const config::ConfigUri & configUri, _executor(1, 128_Ki), _protonDiskLayout(), _protonConfigurer(_executor, *this, _protonDiskLayout), - _protonConfigFetcher(*_transport, configUri, _protonConfigurer, subscribeTimeout), + _protonConfigFetcher(_transport, configUri, _protonConfigurer, subscribeTimeout), _shared_service(), _compile_cache_executor_binding(), _queryLimiter(), @@ -260,11 +259,10 @@ Proton::init() { assert( ! _initStarted && ! _initComplete ); _initStarted = true; - _transport->Start(_threadPool.get()); - if (_threadPool->NewThread(_clock.getRunnable(), nullptr) == nullptr) { + if (_threadPool.NewThread(_clock.getRunnable(), nullptr) == nullptr) { throw IllegalStateException("Failed starting thread for the cheap clock"); } - _protonConfigFetcher.start(*_threadPool); + _protonConfigFetcher.start(_threadPool); auto configSnapshot = _protonConfigurer.getPendingConfigSnapshot(); assert(configSnapshot); auto bootstrapConfig = configSnapshot->getBootstrapConfig(); @@ -282,7 +280,7 @@ Proton::init(const BootstrapConfig::SP & configSnapshot) setBucketCheckSumType(protonConfig); setFS4Compression(protonConfig); - _shared_service = std::make_unique<SharedThreadingService>(SharedThreadingServiceConfig::make(protonConfig, hwInfo.cpu()), *_transport); + _shared_service = std::make_unique<SharedThreadingService>(SharedThreadingServiceConfig::make(protonConfig, hwInfo.cpu()), _transport); _diskMemUsageSampler = std::make_unique<DiskMemUsageSampler>(_shared_service->transport(), protonConfig.basedir, diskMemUsageSamplerConfig(protonConfig, hwInfo)); @@ -314,10 +312,10 @@ Proton::init(const BootstrapConfig::SP & configSnapshot) strategy = std::make_shared<SimpleFlush>(); break; } - _protonDiskLayout = std::make_unique<ProtonDiskLayout>(*_transport, protonConfig.basedir, protonConfig.tlsspec); + _protonDiskLayout = std::make_unique<ProtonDiskLayout>(_transport, protonConfig.basedir, protonConfig.tlsspec); vespalib::chdir(protonConfig.basedir); vespalib::alloc::MmapFileAllocatorFactory::instance().setup(protonConfig.basedir + "/swapdirs"); - _tls->start(*_transport, hwInfo.cpu().cores()); + _tls->start(_transport, hwInfo.cpu().cores()); _flushEngine = std::make_unique<FlushEngine>(std::make_shared<flushengine::TlsStatsFactory>(_tls->getTransLogServer()), strategy, flush.maxconcurrent, vespalib::from_s(flush.idleinterval)); _metricsEngine->addExternalMetrics(_summaryEngine->getMetrics()); @@ -479,7 +477,6 @@ Proton::~Proton() _compile_cache_executor_binding.reset(); _shared_service.reset(); _clock.stop(); - _transport->ShutDown(true); LOG(debug, "Explicit destructor done"); } @@ -602,7 +599,7 @@ Proton::addDocumentDB(const document::DocumentType &docType, vespalib::string db_dir = config.basedir + "/documents/" + docTypeName.toString(); vespalib::mkdir(db_dir, false); // Assume parent is created. - auto config_store = std::make_unique<FileConfigManager>(*_transport, db_dir + "/config", + auto config_store = std::make_unique<FileConfigManager>(_transport, db_dir + "/config", documentDBConfig->getConfigId(), docTypeName.getName()); config_store->setProtonConfig(bootstrapConfig->getProtonConfigSP()); if (!initializeThreads) { diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.h b/searchcore/src/vespa/searchcore/proton/server/proton.h index 0490b1e00b7..73b8ae83ef2 100644 --- a/searchcore/src/vespa/searchcore/proton/server/proton.h +++ b/searchcore/src/vespa/searchcore/proton/server/proton.h @@ -82,8 +82,8 @@ private: }; vespalib::CpuUtil _cpu_util; - std::unique_ptr<FastOS_ThreadPool> _threadPool; - std::unique_ptr<FNET_Transport> _transport; + FastOS_ThreadPool & _threadPool; + FNET_Transport & _transport; const config::ConfigUri _configUri; mutable std::shared_mutex _mutex; std::unique_ptr<metrics::UpdateHook> _metricsHook; @@ -145,9 +145,8 @@ public: typedef std::unique_ptr<Proton> UP; typedef std::shared_ptr<Proton> SP; - Proton(const config::ConfigUri & configUri, - const vespalib::string &progName, - vespalib::duration subscribeTimeout); + Proton(FastOS_ThreadPool & threadPool, FNET_Transport & transport, const config::ConfigUri & configUri, + const vespalib::string &progName, vespalib::duration subscribeTimeout); ~Proton() override; /** @@ -183,7 +182,7 @@ public: const std::shared_ptr<DocumentDBConfig> &documentDBConfig, InitializeThreads initializeThreads); metrics::MetricManager & getMetricManager(); - FastOS_ThreadPool & getThreadPool() { return *_threadPool; } + FastOS_ThreadPool & getThreadPool() { return _threadPool; } bool triggerFlush(); bool prepareRestart(); diff --git a/slobrok/src/tests/rpc_mapping_monitor/rpc_mapping_monitor_test.cpp b/slobrok/src/tests/rpc_mapping_monitor/rpc_mapping_monitor_test.cpp index 0f691e1c168..13db95eb35c 100644 --- a/slobrok/src/tests/rpc_mapping_monitor/rpc_mapping_monitor_test.cpp +++ b/slobrok/src/tests/rpc_mapping_monitor/rpc_mapping_monitor_test.cpp @@ -28,8 +28,11 @@ struct Server : FRT_Invokable { last_conn->AddRef(); } } - Server(fnet::TimeTools::SP time_tools) : frt(TransportConfig().time_tools(time_tools)), names(), - inject_fail_cnt(0), last_conn(nullptr) + Server(fnet::TimeTools::SP time_tools) + : frt(fnet::TransportConfig().time_tools(time_tools)), + names(), + inject_fail_cnt(0), + last_conn(nullptr) { FRT_ReflectionBuilder rb(&frt.supervisor()); rb.DefineMethod("slobrok.callback.listNamesServed", "", "S", FRT_METHOD(Server::rpc_listNamesServed), this); @@ -103,7 +106,7 @@ struct RpcMappingMonitorTest : public ::testing::Test { ServiceMapping baz_b; RpcMappingMonitorTest() : debugger(), - my_frt(TransportConfig().time_tools(debugger.time_tools())), + my_frt(fnet::TransportConfig().time_tools(debugger.time_tools())), a(debugger.time_tools()), b(debugger.time_tools()), hist(), diff --git a/slobrok/src/vespa/slobrok/server/sbenv.cpp b/slobrok/src/vespa/slobrok/server/sbenv.cpp index 84bf212abb3..de9e5a0025f 100644 --- a/slobrok/src/vespa/slobrok/server/sbenv.cpp +++ b/slobrok/src/vespa/slobrok/server/sbenv.cpp @@ -98,7 +98,7 @@ ConfigTask::PerformTask() } // namespace slobrok::<unnamed> SBEnv::SBEnv(const ConfigShim &shim) - : _transport(std::make_unique<FNET_Transport>(TransportConfig().drop_empty_buffers(true))), + : _transport(std::make_unique<FNET_Transport>(fnet::TransportConfig().drop_empty_buffers(true))), _supervisor(std::make_unique<FRT_Supervisor>(_transport.get())), _configShim(shim), _configurator(shim.factory().create(*this)), diff --git a/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp b/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp index ba3196bfcda..e1a2dc6b03c 100644 --- a/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp +++ b/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp @@ -65,7 +65,7 @@ SharedRpcResources::SharedRpcResources(const config::ConfigUri& config_uri, size_t rpc_thread_pool_size, size_t rpc_events_before_wakeup) : _thread_pool(std::make_unique<FastOS_ThreadPool>(1024*60)), - _transport(std::make_unique<FNET_Transport>(TransportConfig(rpc_thread_pool_size). + _transport(std::make_unique<FNET_Transport>(fnet::TransportConfig(rpc_thread_pool_size). events_before_wakeup(rpc_events_before_wakeup))), _orb(std::make_unique<FRT_Supervisor>(_transport.get())), _slobrok_register(std::make_unique<slobrok::api::RegisterAPI>(*_orb, slobrok::ConfiguratorFactory(config_uri))), |