diff options
author | Tor Brede Vekterli <vekterli@vespa.ai> | 2023-10-23 15:09:09 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@vespa.ai> | 2023-10-24 09:05:31 +0000 |
commit | 73442d7863b8d4e7ab4046a731aca3db5d0c451b (patch) | |
tree | f2d322ca7361b8e47fb495fad9e2d3def1669993 /storageserver | |
parent | 8fc6725988f9cc475c502412fe59391e7f150674 (diff) |
Pull up and out config of `ChangedBucketOwnershipHandler` component
Diffstat (limited to 'storageserver')
-rw-r--r-- | storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp | 21 | ||||
-rw-r--r-- | storageserver/src/vespa/storageserver/app/servicelayerprocess.h | 20 |
2 files changed, 20 insertions, 21 deletions
diff --git a/storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp b/storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp index 9b835cee05e..0c23bb1a409 100644 --- a/storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp +++ b/storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp @@ -34,6 +34,7 @@ bucket_db_options_from_config(const config::ConfigUri& config_uri) { ServiceLayerProcess::ServiceLayerProcess(const config::ConfigUri& configUri) : Process(configUri), _externalVisitors(), + _persistence_cfg_handle(), _node(), _storage_chain_builder(), _context(std::make_unique<framework::defaultimplementation::RealClock>(), @@ -53,6 +54,7 @@ ServiceLayerProcess::shutdown() void ServiceLayerProcess::setupConfig(vespalib::duration subscribe_timeout) { + _persistence_cfg_handle = _configSubscriber.subscribe<PersistenceConfig>(_configUri.getConfigId(), subscribe_timeout); // We reuse the StorServerConfig subscription from the parent Process Process::setupConfig(subscribe_timeout); } @@ -64,6 +66,9 @@ ServiceLayerProcess::updateConfig() if (_server_cfg_handle->isChanged()) { _node->on_configure(*_server_cfg_handle->getConfig()); } + if (_persistence_cfg_handle->isChanged()) { + _node->on_configure(*_persistence_cfg_handle->getConfig()); + } } bool @@ -77,15 +82,19 @@ ServiceLayerProcess::createNode() { add_external_visitors(); setupProvider(); - // TODO dedupe, consolidate + StorageNode::BootstrapConfigs bc; bc.bucket_spaces_cfg = _bucket_spaces_cfg_handle->getConfig(); - bc.bouncer_cfg = _bouncer_cfg_handle->getConfig(); - bc.comm_mgr_cfg = _comm_mgr_cfg_handle->getConfig(); - bc.distribution_cfg = _distribution_cfg_handle->getConfig(); - bc.server_cfg = _server_cfg_handle->getConfig(); + bc.bouncer_cfg = _bouncer_cfg_handle->getConfig(); + bc.comm_mgr_cfg = _comm_mgr_cfg_handle->getConfig(); + bc.distribution_cfg = _distribution_cfg_handle->getConfig(); + bc.server_cfg = _server_cfg_handle->getConfig(); + + ServiceLayerNode::ServiceLayerBootstrapConfigs sbc; + sbc.storage_bootstrap_configs = std::move(bc); + sbc.persistence_cfg = _persistence_cfg_handle->getConfig(); - _node = std::make_unique<ServiceLayerNode>(_configUri, _context, std::move(bc), *this, getProvider(), _externalVisitors); + _node = std::make_unique<ServiceLayerNode>(_configUri, _context, std::move(sbc), *this, getProvider(), _externalVisitors); if (_storage_chain_builder) { _node->set_storage_chain_builder(std::move(_storage_chain_builder)); } diff --git a/storageserver/src/vespa/storageserver/app/servicelayerprocess.h b/storageserver/src/vespa/storageserver/app/servicelayerprocess.h index 7e981748d1a..2579b3df199 100644 --- a/storageserver/src/vespa/storageserver/app/servicelayerprocess.h +++ b/storageserver/src/vespa/storageserver/app/servicelayerprocess.h @@ -1,22 +1,8 @@ // Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -/** - * \class storage::ServiceLayerProcess - * - * \brief A process running a service layer. - */ -/** - * \class storage::MemFileServiceLayerProcess - * - * \brief A process running a service layer with memfile persistence provider. - */ -/** - * \class storage::RpcServiceLayerProcess - * - * \brief A process running a service layer with RPC persistence provider. - */ #pragma once #include "process.h" +#include <vespa/config-persistence.h> #include <vespa/storage/storageserver/servicelayernodecontext.h> #include <vespa/storage/common/visitorfactory.h> @@ -33,6 +19,10 @@ class ServiceLayerProcess : public Process { protected: VisitorFactory::Map _externalVisitors; private: + using PersistenceConfig = vespa::config::content::PersistenceConfig; + + std::unique_ptr<config::ConfigHandle<PersistenceConfig>> _persistence_cfg_handle; + std::unique_ptr<ServiceLayerNode> _node; std::unique_ptr<IStorageChainBuilder> _storage_chain_builder; |