diff options
author | Tor Egge <Tor.Egge@oath.com> | 2017-11-06 11:48:22 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@oath.com> | 2017-11-06 11:48:22 +0000 |
commit | 647a15eb3d4cfc2063bfb0d604e2d03afab86c1d (patch) | |
tree | f08db8f7122d59b96d4ad8e6f34242f6d11cfd5b /storage | |
parent | f7c50a1d6c88513e830c42eff731f0132e71dce2 (diff) |
Add accessor method to get bucket id from state checker context.
Diffstat (limited to 'storage')
4 files changed, 22 insertions, 21 deletions
diff --git a/storage/src/tests/distributor/statecheckerstest.cpp b/storage/src/tests/distributor/statecheckerstest.cpp index 3da427cd63b..e71525d5dd6 100644 --- a/storage/src/tests/distributor/statecheckerstest.cpp +++ b/storage/src/tests/distributor/statecheckerstest.cpp @@ -134,17 +134,17 @@ struct StateCheckersTest : public CppUnit::TestFixture, std::ostringstream ost; c.siblingBucket = getIdealStateManager().getDistributorComponent() - .getSibling(c.bucket.getBucketId()); + .getSibling(c.getBucketId()); std::vector<BucketDatabase::Entry> entries; - getBucketDatabase().getAll(c.bucket.getBucketId(), entries); + getBucketDatabase().getAll(c.getBucketId(), entries); c.siblingEntry = getBucketDatabase().get(c.siblingBucket); c.entries = entries; for (uint32_t j = 0; j < entries.size(); ++j) { // Run checking only on this bucketid, but include all buckets // owned by it or owners of it, so we can detect inconsistent split. - if (entries[j].getBucketId() == c.bucket.getBucketId()) { + if (entries[j].getBucketId() == c.getBucketId()) { c.entry = entries[j]; StateChecker::Result result(checker.check(c)); diff --git a/storage/src/vespa/storage/distributor/idealstatemanager.cpp b/storage/src/vespa/storage/distributor/idealstatemanager.cpp index 608d68c9b27..a33d8376e4d 100644 --- a/storage/src/vespa/storage/distributor/idealstatemanager.cpp +++ b/storage/src/vespa/storage/distributor/idealstatemanager.cpp @@ -77,7 +77,7 @@ IdealStateManager::iAmUp() const void IdealStateManager::fillParentAndChildBuckets(StateChecker::Context& c) const { - c.db.getAll(c.bucket.getBucketId(), c.entries); + c.db.getAll(c.getBucketId(), c.entries); if (c.entries.empty()) { LOG(spam, "Did not find bucket %s in bucket database", @@ -95,7 +95,7 @@ IdealStateManager::getEntryForPrimaryBucket(StateChecker::Context& c) const { for (uint32_t j = 0; j < c.entries.size(); ++j) { BucketDatabase::Entry& e = c.entries[j]; - if (e.getBucketId() == c.bucket.getBucketId()) { + if (e.getBucketId() == c.getBucketId()) { return &e; } } diff --git a/storage/src/vespa/storage/distributor/statechecker.h b/storage/src/vespa/storage/distributor/statechecker.h index dee473e2560..9f9f57dd3bf 100644 --- a/storage/src/vespa/storage/distributor/statechecker.h +++ b/storage/src/vespa/storage/distributor/statechecker.h @@ -85,6 +85,7 @@ public: } document::Bucket getBucket() const { return bucket; } + document::BucketId getBucketId() const { return bucket.getBucketId(); } std::string toString() const; }; diff --git a/storage/src/vespa/storage/distributor/statecheckers.cpp b/storage/src/vespa/storage/distributor/statecheckers.cpp index 534fc42cb98..4c5301dd8c2 100644 --- a/storage/src/vespa/storage/distributor/statecheckers.cpp +++ b/storage/src/vespa/storage/distributor/statecheckers.cpp @@ -32,7 +32,7 @@ SplitBucketStateChecker::validForSplit(StateChecker::Context& c) } // Can't split anymore if we already used 58 bits. - if (c.bucket.getBucketId().getUsedBits() >= 58) { + if (c.getBucketId().getUsedBits() >= 58) { return false; } @@ -145,7 +145,7 @@ SplitBucketStateChecker::check(StateChecker::Context& c) { } // Always split it if it has less used bits than the minimum. - if (c.bucket.getBucketId().getUsedBits() < c.distributorConfig.getMinimalBucketSplit()) { + if (c.getBucketId().getUsedBits() < c.distributorConfig.getMinimalBucketSplit()) { return generateMinimumBucketSplitOperation(c); } return Result::noMaintenanceNeeded(); @@ -258,8 +258,8 @@ JoinBucketsStateChecker::siblingsAreInSync(const Context& context) const bool JoinBucketsStateChecker::singleBucketJoinIsConsistent(const Context& c) const { - document::BucketId joinTarget(c.bucket.getBucketId().getUsedBits() - 1, - c.bucket.getBucketId().getRawId()); + document::BucketId joinTarget(c.getBucketId().getUsedBits() - 1, + c.getBucketId().getRawId()); // If there are 2 children under the potential join target bucket, joining // would cause the bucket tree to become inconsistent. The reason for this // being that "moving" a bucket one bit up in the tree (and into @@ -321,14 +321,14 @@ JoinBucketsStateChecker::shouldJoin(const Context& c) const return false; } - if (bucketAtDistributionBitLimit(c.bucket.getBucketId(), c)) { + if (bucketAtDistributionBitLimit(c.getBucketId(), c)) { LOG(spam, "Not joining bucket %s because it is below the min split " "count (config: %u, cluster state: %u, bucket has: %u)", c.bucket.toString().c_str(), c.distributorConfig.getMinimalBucketSplit(), c.systemState.getDistributionBitCount(), - c.bucket.getBucketId().getUsedBits()); + c.getBucketId().getUsedBits()); return false; } @@ -337,7 +337,7 @@ JoinBucketsStateChecker::shouldJoin(const Context& c) const } if (c.getSiblingEntry().valid()) { - if (!isFirstSibling(c.bucket.getBucketId())) { + if (!isFirstSibling(c.getBucketId())) { LOG(spam, "Not joining bucket %s because it is the second sibling of " "%s and not the first", @@ -427,8 +427,8 @@ JoinBucketsStateChecker::computeJoinBucket(const Context& c) const { // Always decrease by at least 1 bit, as we could not get here unless this // were a valid outcome. - unsigned int level = c.bucket.getBucketId().getUsedBits() - 1; - document::BucketId target(level, c.bucket.getBucketId().getRawId()); + unsigned int level = c.getBucketId().getUsedBits() - 1; + document::BucketId target(level, c.getBucketId().getRawId()); // Push bucket up the tree as long as it gets no siblings. This means // joins involving 2 source buckets will currently only be decreased by 1 @@ -436,7 +436,7 @@ JoinBucketsStateChecker::computeJoinBucket(const Context& c) const // be decreased by multiple bits. We may want to optimize joins for cases // with 2 source buckets in the future. while (true) { - document::BucketId candidate(level, c.bucket.getBucketId().getRawId()); + document::BucketId candidate(level, c.getBucketId().getRawId()); if (bucketHasMultipleChildren(candidate, c) || !legalBucketSplitLevel(candidate, c)) { @@ -458,15 +458,15 @@ JoinBucketsStateChecker::check(StateChecker::Context& c) } document::Bucket joinedBucket(computeJoinBucket(c)); - assert(joinedBucket.getBucketId().getUsedBits() < c.bucket.getBucketId().getUsedBits()); + assert(joinedBucket.getBucketId().getUsedBits() < c.getBucketId().getUsedBits()); std::vector<document::BucketId> sourceBuckets; if (c.getSiblingEntry().valid()) { sourceBuckets.push_back(c.siblingBucket); } else { - sourceBuckets.push_back(c.bucket.getBucketId()); + sourceBuckets.push_back(c.getBucketId()); } - sourceBuckets.push_back(c.bucket.getBucketId()); + sourceBuckets.push_back(c.getBucketId()); IdealStateOperation::UP op(new JoinOperation( c.component.getClusterName(), BucketAndNodes(joinedBucket, c.entry->getNodes()), @@ -568,7 +568,7 @@ SplitInconsistentStateChecker::check(StateChecker::Context& c) return Result::noMaintenanceNeeded(); } - if (!isLeastSplitBucket(c.bucket.getBucketId(), c.entries)) { + if (!isLeastSplitBucket(c.getBucketId(), c.entries)) { return Result::noMaintenanceNeeded(); } @@ -581,7 +581,7 @@ SplitInconsistentStateChecker::check(StateChecker::Context& c) op->setPriority(c.distributorConfig.getMaintenancePriorities() .splitInconsistentBucket); - op->setDetailedReason(getReason(c.bucket.getBucketId(), c.entries)); + op->setDetailedReason(getReason(c.getBucketId(), c.entries)); return Result::createStoredResult(std::move(op), MaintenancePriority::HIGH); } @@ -1119,7 +1119,7 @@ GarbageCollectionStateChecker::needsGarbageCollection(const Context& c) const std::chrono::seconds currentTime( c.component.getClock().getTimeInSeconds().getTime()); - return c.gcTimeCalculator.shouldGc(c.bucket.getBucketId(), currentTime, lastRunAt); + return c.gcTimeCalculator.shouldGc(c.getBucketId(), currentTime, lastRunAt); } StateChecker::Result |