summaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-01-04 13:50:08 +0100
committerGitHub <noreply@github.com>2021-01-04 13:50:08 +0100
commit299f3ecaa104f02547ebb1ca886d0576bae3b3ff (patch)
treefaa8b95e56523b9df60d308a6a4107059fbb9f86 /storage
parent339c4c25288fdd86310ea6f18a5b77a793ee25f3 (diff)
parentf4974ba0391b965954fdd4c26610c9b36b8172aa (diff)
Merge pull request #15888 from vespa-engine/toregge/avoid-repeating-magic-number
Add is_split_group_bucket() utility method.
Diffstat (limited to 'storage')
-rw-r--r--storage/src/vespa/storage/distributor/distributor_bucket_space.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/storage/src/vespa/storage/distributor/distributor_bucket_space.cpp b/storage/src/vespa/storage/distributor/distributor_bucket_space.cpp
index 784ae5ab8af..9ec4d31eb32 100644
--- a/storage/src/vespa/storage/distributor/distributor_bucket_space.cpp
+++ b/storage/src/vespa/storage/distributor/distributor_bucket_space.cpp
@@ -127,7 +127,17 @@ setup_ideal_nodes_bundle(IdealServiceLayerNodesBundle& ideal_nodes_bundle,
ideal_nodes_bundle.set_available_nonretired_or_maintenance_nodes(distribution.getIdealStorageNodes(cluster_state, bucket, nonretired_or_maintenance_up_states));
}
-// Ideal service layer nodes bundle used when bucket id used bits > 33.
+/*
+ * Check if we trigger a streaming search latency optimization where
+ * we spread out data for a single group over multiple storage nodes.
+ * See storage::lib::Distribution::getStorageSeed for details.
+ */
+bool is_split_group_bucket(document::BucketId bucket) noexcept
+{
+ return bucket.getUsedBits() > 33;
+}
+
+// Ideal service layer nodes bundle used when is_split_group_bucket returns true
thread_local IdealServiceLayerNodesBundle fallback_ideal_nodes_bundle;
}
@@ -136,12 +146,12 @@ const IdealServiceLayerNodesBundle&
DistributorBucketSpace::get_ideal_service_layer_nodes_bundle(document::BucketId bucket) const
{
assert(bucket.getUsedBits() >= _distribution_bits);
- if (bucket.getUsedBits() > 33) {
+ if (is_split_group_bucket(bucket)) {
IdealServiceLayerNodesBundle &ideal_nodes_bundle = fallback_ideal_nodes_bundle;
setup_ideal_nodes_bundle(ideal_nodes_bundle, *_distribution, *_clusterState, bucket);
return ideal_nodes_bundle;
}
- document::BucketId lookup_bucket((bucket.getUsedBits() > 33) ? bucket.getUsedBits() : _distribution_bits, bucket.getId());
+ document::BucketId lookup_bucket(is_split_group_bucket(bucket) ? bucket.getUsedBits() : _distribution_bits, bucket.getId());
auto itr = _ideal_nodes.find(lookup_bucket);
if (itr != _ideal_nodes.end()) {
return itr->second;