diff options
author | Tor Brede Vekterli <vekterli@vespa.ai> | 2023-10-24 09:24:06 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@vespa.ai> | 2023-10-24 09:24:06 +0000 |
commit | 25aa6778a04c8ff4de0509d0a98133c9e92a605a (patch) | |
tree | 4172d00c99767cb81864168cf978097a18e67321 /storage/src | |
parent | 73442d7863b8d4e7ab4046a731aca3db5d0c451b (diff) |
Provide explicit bootstrap config to `BucketManager`
Diffstat (limited to 'storage/src')
4 files changed, 20 insertions, 22 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(), |