summaryrefslogtreecommitdiffstats
path: root/storageserver
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@vespa.ai>2023-10-23 15:09:09 +0000
committerTor Brede Vekterli <vekterli@vespa.ai>2023-10-24 09:05:31 +0000
commit73442d7863b8d4e7ab4046a731aca3db5d0c451b (patch)
treef2d322ca7361b8e47fb495fad9e2d3def1669993 /storageserver
parent8fc6725988f9cc475c502412fe59391e7f150674 (diff)
Pull up and out config of `ChangedBucketOwnershipHandler` component
Diffstat (limited to 'storageserver')
-rw-r--r--storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp21
-rw-r--r--storageserver/src/vespa/storageserver/app/servicelayerprocess.h20
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;