summaryrefslogtreecommitdiffstats
path: root/storageserver
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2021-05-28 13:31:41 +0000
committerGeir Storli <geirst@verizonmedia.com>2021-06-01 09:22:30 +0000
commit4134de20183cd3bc84420e20142ef69a5fb0fcbf (patch)
tree721d6d59f0731180b47dbf5c409f245ac68ae92f /storageserver
parent82317bbcf9cb633d196888676c91ee9a69d1dd0d (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')
-rw-r--r--storageserver/src/vespa/storageserver/app/distributorprocess.cpp22
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);