summaryrefslogtreecommitdiffstats
path: root/storageserver
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@vespa.ai>2023-10-24 12:27:49 +0000
committerTor Brede Vekterli <vekterli@vespa.ai>2023-10-24 12:27:49 +0000
commitca8fbc7725cc3907fa6e6c0af662422362db6cfb (patch)
tree7e94f4bae55aa6b7550e1999236b5df5a09ec294 /storageserver
parent25aa6778a04c8ff4de0509d0a98133c9e92a605a (diff)
Propagate `VisitorManager` config from outside
Diffstat (limited to 'storageserver')
-rw-r--r--storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp6
-rw-r--r--storageserver/src/vespa/storageserver/app/servicelayerprocess.h5
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;