diff options
author | Geir Storli <geirst@verizonmedia.com> | 2021-05-28 13:31:41 +0000 |
---|---|---|
committer | Geir Storli <geirst@verizonmedia.com> | 2021-06-01 09:22:30 +0000 |
commit | 4134de20183cd3bc84420e20142ef69a5fb0fcbf (patch) | |
tree | 721d6d59f0731180b47dbf5c409f245ac68ae92f /storageserver/src | |
parent | 82317bbcf9cb633d196888676c91ee9a69d1dd0d (diff) |
Add validation of the number of distributor stripes from config and add more asserts.
This ensures the number of stripes is a power of 2 and within MaxStripes boundary.
Diffstat (limited to 'storageserver/src')
-rw-r--r-- | storageserver/src/vespa/storageserver/app/distributorprocess.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/storageserver/src/vespa/storageserver/app/distributorprocess.cpp b/storageserver/src/vespa/storageserver/app/distributorprocess.cpp index ede7fd1c9c0..45802df8866 100644 --- a/storageserver/src/vespa/storageserver/app/distributorprocess.cpp +++ b/storageserver/src/vespa/storageserver/app/distributorprocess.cpp @@ -1,9 +1,10 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "distributorprocess.h" -#include <vespa/storage/common/storagelink.h> -#include <vespa/storage/common/i_storage_chain_builder.h> #include <vespa/config/helper/configgetter.hpp> +#include <vespa/storage/common/bucket_stripe_utils.h> +#include <vespa/storage/common/i_storage_chain_builder.h> +#include <vespa/storage/common/storagelink.h> #include <vespa/log/log.h> LOG_SETUP(".process.distributor"); @@ -32,6 +33,21 @@ DistributorProcess::shutdown() _node.reset(); } +namespace { + +uint32_t +adjusted_num_distributor_stripes(uint32_t cfg_n_stripes) +{ + uint32_t adjusted_n_stripes = storage::adjusted_num_stripes(cfg_n_stripes); + if (adjusted_n_stripes != cfg_n_stripes) { + LOG(warning, "Configured number of distributor stripes (%u) is not valid. Adjusting to a valid value (%u)", + cfg_n_stripes, adjusted_n_stripes); + } + return adjusted_n_stripes; +} + +} + void DistributorProcess::setupConfig(milliseconds subscribeTimeout) { @@ -40,7 +56,7 @@ DistributorProcess::setupConfig(milliseconds subscribeTimeout) auto distr_cfg = config::ConfigGetter<StorDistributormanagerConfig>::getConfig( _configUri.getConfigId(), _configUri.getContext(), subscribeTimeout); - _num_distributor_stripes = distr_cfg->numDistributorStripes; + _num_distributor_stripes = adjusted_num_distributor_stripes(distr_cfg->numDistributorStripes); _distributorConfigHandler = _configSubscriber.subscribe<StorDistributormanagerConfig>(_configUri.getConfigId(), subscribeTimeout); _visitDispatcherConfigHandler = _configSubscriber.subscribe<StorVisitordispatcherConfig>(_configUri.getConfigId(), subscribeTimeout); Process::setupConfig(subscribeTimeout); |