aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@vespa.ai>2023-10-24 09:24:06 +0000
committerTor Brede Vekterli <vekterli@vespa.ai>2023-10-24 09:24:06 +0000
commit25aa6778a04c8ff4de0509d0a98133c9e92a605a (patch)
tree4172d00c99767cb81864168cf978097a18e67321
parent73442d7863b8d4e7ab4046a731aca3db5d0c451b (diff)
Provide explicit bootstrap config to `BucketManager`
-rw-r--r--storage/src/tests/bucketdb/bucketmanagertest.cpp24
-rw-r--r--storage/src/vespa/storage/bucketdb/bucketmanager.cpp10
-rw-r--r--storage/src/vespa/storage/bucketdb/bucketmanager.h6
-rw-r--r--storage/src/vespa/storage/storageserver/servicelayernode.cpp2
-rw-r--r--storageserver/src/vespa/storageserver/app/process.h2
5 files changed, 21 insertions, 23 deletions
diff --git a/storage/src/tests/bucketdb/bucketmanagertest.cpp b/storage/src/tests/bucketdb/bucketmanagertest.cpp
index f46ff867fcc..52ac6f7dba1 100644
--- a/storage/src/tests/bucketdb/bucketmanagertest.cpp
+++ b/storage/src/tests/bucketdb/bucketmanagertest.cpp
@@ -1,29 +1,29 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <tests/common/dummystoragelink.h>
+#include <tests/common/testhelper.h>
+#include <tests/common/teststorageapp.h>
#include <vespa/config/helper/configgetter.hpp>
-#include <vespa/document/config/documenttypes_config_fwd.h>
#include <vespa/document/config/config-documenttypes.h>
+#include <vespa/document/config/documenttypes_config_fwd.h>
#include <vespa/document/datatype/documenttype.h>
#include <vespa/document/fieldvalue/document.h>
-#include <vespa/document/update/documentupdate.h>
#include <vespa/document/repo/documenttyperepo.h>
-#include <vespa/document/test/make_document_bucket.h>
#include <vespa/document/test/make_bucket_space.h>
+#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/document/update/documentupdate.h>
+#include <vespa/metrics/updatehook.h>
#include <vespa/storage/bucketdb/bucketmanager.h>
#include <vespa/storage/common/global_bucket_space_distribution_converter.h>
#include <vespa/storage/persistence/filestorage/filestormanager.h>
+#include <vespa/storageapi/message/bucketsplitting.h>
#include <vespa/storageapi/message/persistence.h>
#include <vespa/storageapi/message/state.h>
-#include <vespa/storageapi/message/bucketsplitting.h>
-#include <vespa/metrics/updatehook.h>
-#include <tests/common/teststorageapp.h>
-#include <tests/common/dummystoragelink.h>
-#include <tests/common/testhelper.h>
-#include <vespa/vdslib/state/random.h>
#include <vespa/vdslib/distribution/distribution.h>
#include <vespa/vdslib/state/clusterstate.h>
-#include <vespa/vespalib/stllike/asciistream.h>
+#include <vespa/vdslib/state/random.h>
#include <vespa/vespalib/gtest/gtest.h>
+#include <vespa/vespalib/stllike/asciistream.h>
#include <future>
#include <vespa/log/log.h>
@@ -148,7 +148,9 @@ void BucketManagerTest::setupTestEnvironment(bool fakePersistenceLayer, bool noD
_node->setTypeRepo(repo);
_node->setupDummyPersistence();
// Set up the 3 links
- auto manager = std::make_unique<BucketManager>(config::ConfigUri(config.getConfigId()), _node->getComponentRegister());
+ auto config_uri = config::ConfigUri(config.getConfigId());
+ using vespa::config::content::core::StorServerConfig;
+ auto manager = std::make_unique<BucketManager>(*config_from<StorServerConfig>(config_uri), _node->getComponentRegister());
_manager = manager.get();
_top->push_back(std::move(manager));
if (fakePersistenceLayer) {
diff --git a/storage/src/vespa/storage/bucketdb/bucketmanager.cpp b/storage/src/vespa/storage/bucketdb/bucketmanager.cpp
index 8c24a7dfd4e..d12a9f72ac1 100644
--- a/storage/src/vespa/storage/bucketdb/bucketmanager.cpp
+++ b/storage/src/vespa/storage/bucketdb/bucketmanager.cpp
@@ -33,10 +33,9 @@ using namespace std::chrono_literals;
namespace storage {
-BucketManager::BucketManager(const config::ConfigUri & configUri, ServiceLayerComponentRegister& compReg)
+BucketManager::BucketManager(const StorServerConfig& bootstrap_config, ServiceLayerComponentRegister& compReg)
: StorageLink("Bucket manager"),
framework::StatusReporter("bucketdb", "Bucket database"),
- _configUri(configUri),
_workerLock(),
_workerCond(),
_clusterStateLock(),
@@ -60,8 +59,7 @@ BucketManager::BucketManager(const config::ConfigUri & configUri, ServiceLayerCo
ns.setMinUsedBits(58);
_component.getStateUpdater().setReportedNodeState(ns);
- auto server_config = config::ConfigGetter<vespa::config::content::core::StorServerConfig>::getConfig(configUri.getConfigId(), configUri.getContext());
- _simulated_processing_delay = std::chrono::milliseconds(std::max(0, server_config->simulatedBucketRequestLatencyMsec));
+ _simulated_processing_delay = std::chrono::milliseconds(std::max(0, bootstrap_config.simulatedBucketRequestLatencyMsec));
}
BucketManager::~BucketManager()
@@ -414,9 +412,7 @@ BucketManager::dump(std::ostream& out) const
void BucketManager::onOpen()
{
- if (!_configUri.empty()) {
- startWorkerThread();
- }
+ startWorkerThread();
}
void BucketManager::startWorkerThread()
diff --git a/storage/src/vespa/storage/bucketdb/bucketmanager.h b/storage/src/vespa/storage/bucketdb/bucketmanager.h
index 76d9123a519..35ccab843a9 100644
--- a/storage/src/vespa/storage/bucketdb/bucketmanager.h
+++ b/storage/src/vespa/storage/bucketdb/bucketmanager.h
@@ -10,10 +10,10 @@
#include "bucketmanagermetrics.h"
#include "storbucketdb.h"
#include <vespa/config/subscription/configuri.h>
-#include <vespa/storage/bucketdb/config-stor-bucketdb.h>
#include <vespa/storage/common/servicelayercomponent.h>
#include <vespa/storage/common/storagelinkqueued.h>
#include <vespa/storage/common/nodestateupdater.h>
+#include <vespa/storage/config/config-stor-server.h>
#include <vespa/storageapi/message/bucket.h>
#include <vespa/storageframework/generic/metric/metricupdatehook.h>
#include <vespa/storageframework/generic/status/statusreporter.h>
@@ -34,6 +34,7 @@ class BucketManager : public StorageLink,
private framework::MetricUpdateHook
{
public:
+ using StorServerConfig = vespa::config::content::core::StorServerConfig;
/** Type used for message queues */
using BucketInfoRequestList = std::list<std::shared_ptr<api::RequestBucketInfoCommand>>;
using BucketInfoRequestMap = std::unordered_map<document::BucketSpace, BucketInfoRequestList, document::BucketSpace::hash>;
@@ -41,7 +42,6 @@ public:
private:
using ReplyQueue = std::vector<api::StorageReply::SP>;
using ConflictingBuckets = std::unordered_set<document::BucketId, document::BucketId::hash>;
- config::ConfigUri _configUri;
BucketInfoRequestMap _bucketInfoRequests;
/**
@@ -82,7 +82,7 @@ private:
};
public:
- BucketManager(const config::ConfigUri&, ServiceLayerComponentRegister&);
+ BucketManager(const StorServerConfig& bootstrap_config, ServiceLayerComponentRegister&);
BucketManager(const BucketManager&) = delete;
BucketManager& operator=(const BucketManager&) = delete;
~BucketManager() override;
diff --git a/storage/src/vespa/storage/storageserver/servicelayernode.cpp b/storage/src/vespa/storage/storageserver/servicelayernode.cpp
index 7bfd5ebe3dd..9736d6b05ed 100644
--- a/storage/src/vespa/storage/storageserver/servicelayernode.cpp
+++ b/storage/src/vespa/storage/storageserver/servicelayernode.cpp
@@ -174,7 +174,7 @@ ServiceLayerNode::createChain(IStorageChainBuilder &builder)
auto bucket_ownership_handler = std::make_unique<ChangedBucketOwnershipHandler>(*_persistence_bootstrap_config, compReg);
_changed_bucket_ownership_handler = bucket_ownership_handler.get();
builder.add(std::move(bucket_ownership_handler));
- auto bucket_manager = std::make_unique<BucketManager>(_configUri, _context.getComponentRegister());
+ auto bucket_manager = std::make_unique<BucketManager>(server_config(), _context.getComponentRegister());
_bucket_manager = bucket_manager.get();
builder.add(std::move(bucket_manager));
builder.add(std::make_unique<VisitorManager>(_configUri, _context.getComponentRegister(),
diff --git a/storageserver/src/vespa/storageserver/app/process.h b/storageserver/src/vespa/storageserver/app/process.h
index a30611b78c8..72b399ac870 100644
--- a/storageserver/src/vespa/storageserver/app/process.h
+++ b/storageserver/src/vespa/storageserver/app/process.h
@@ -8,7 +8,7 @@
* contains the process as a library such that it can be tested and used in
* other pieces of code.
*
- * Specializations of this class will exist to add the funcionality needed for
+ * Specializations of this class will exist to add the functionality needed for
* the various process types.
*/