diff options
author | Tor Brede Vekterli <vekterli@vespa.ai> | 2023-10-24 12:27:49 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@vespa.ai> | 2023-10-24 12:27:49 +0000 |
commit | ca8fbc7725cc3907fa6e6c0af662422362db6cfb (patch) | |
tree | 7e94f4bae55aa6b7550e1999236b5df5a09ec294 /storageserver | |
parent | 25aa6778a04c8ff4de0509d0a98133c9e92a605a (diff) |
Propagate `VisitorManager` config from outside
Diffstat (limited to 'storageserver')
-rw-r--r-- | storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp | 6 | ||||
-rw-r--r-- | storageserver/src/vespa/storageserver/app/servicelayerprocess.h | 5 |
2 files changed, 10 insertions, 1 deletions
diff --git a/storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp b/storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp index 0c23bb1a409..f43ec574806 100644 --- a/storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp +++ b/storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp @@ -35,6 +35,7 @@ ServiceLayerProcess::ServiceLayerProcess(const config::ConfigUri& configUri) : Process(configUri), _externalVisitors(), _persistence_cfg_handle(), + _visitor_cfg_handle(), _node(), _storage_chain_builder(), _context(std::make_unique<framework::defaultimplementation::RealClock>(), @@ -55,6 +56,7 @@ void ServiceLayerProcess::setupConfig(vespalib::duration subscribe_timeout) { _persistence_cfg_handle = _configSubscriber.subscribe<PersistenceConfig>(_configUri.getConfigId(), subscribe_timeout); + _visitor_cfg_handle = _configSubscriber.subscribe<StorVisitorConfig>(_configUri.getConfigId(), subscribe_timeout); // We reuse the StorServerConfig subscription from the parent Process Process::setupConfig(subscribe_timeout); } @@ -69,6 +71,9 @@ ServiceLayerProcess::updateConfig() if (_persistence_cfg_handle->isChanged()) { _node->on_configure(*_persistence_cfg_handle->getConfig()); } + if (_visitor_cfg_handle->isChanged()) { + _node->on_configure(*_visitor_cfg_handle->getConfig()); + } } bool @@ -93,6 +98,7 @@ ServiceLayerProcess::createNode() ServiceLayerNode::ServiceLayerBootstrapConfigs sbc; sbc.storage_bootstrap_configs = std::move(bc); sbc.persistence_cfg = _persistence_cfg_handle->getConfig(); + sbc.visitor_cfg = _visitor_cfg_handle->getConfig(); _node = std::make_unique<ServiceLayerNode>(_configUri, _context, std::move(sbc), *this, getProvider(), _externalVisitors); if (_storage_chain_builder) { diff --git a/storageserver/src/vespa/storageserver/app/servicelayerprocess.h b/storageserver/src/vespa/storageserver/app/servicelayerprocess.h index 2579b3df199..d91c66be266 100644 --- a/storageserver/src/vespa/storageserver/app/servicelayerprocess.h +++ b/storageserver/src/vespa/storageserver/app/servicelayerprocess.h @@ -3,8 +3,9 @@ #include "process.h" #include <vespa/config-persistence.h> -#include <vespa/storage/storageserver/servicelayernodecontext.h> #include <vespa/storage/common/visitorfactory.h> +#include <vespa/storage/storageserver/servicelayernodecontext.h> +#include <vespa/storage/visiting/config-stor-visitor.h> namespace config { class ConfigUri; } @@ -20,8 +21,10 @@ protected: VisitorFactory::Map _externalVisitors; private: using PersistenceConfig = vespa::config::content::PersistenceConfig; + using StorVisitorConfig = vespa::config::content::core::StorVisitorConfig; std::unique_ptr<config::ConfigHandle<PersistenceConfig>> _persistence_cfg_handle; + std::unique_ptr<config::ConfigHandle<StorVisitorConfig>> _visitor_cfg_handle; std::unique_ptr<ServiceLayerNode> _node; std::unique_ptr<IStorageChainBuilder> _storage_chain_builder; |