diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-01-04 13:50:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-04 13:50:08 +0100 |
commit | 299f3ecaa104f02547ebb1ca886d0576bae3b3ff (patch) | |
tree | faa8b95e56523b9df60d308a6a4107059fbb9f86 /storage | |
parent | 339c4c25288fdd86310ea6f18a5b77a793ee25f3 (diff) | |
parent | f4974ba0391b965954fdd4c26610c9b36b8172aa (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.cpp | 16 |
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; |