summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-09-14 15:35:15 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-09-14 15:35:15 +0000
commit4035eae8042a8920e3c05b784c25385e1b44b516 (patch)
tree87f4133d1dbd59fb0d2d79a1bde2799783e456c0 /searchcore
parentc44ede0086c7bcb5c3348d31e7542ebe893b4cc5 (diff)
Ignore active state when considering moving from not-ready to ready.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/bucketmovejob.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.cpp b/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.cpp
index 8be55433fdd..634eac19923 100644
--- a/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.cpp
@@ -131,14 +131,13 @@ BucketMoveJob::create(std::shared_ptr<IBucketStateCalculator> calc,
const vespalib::string &docTypeName,
document::BucketSpace bucketSpace)
{
- return std::shared_ptr<BucketMoveJob>(
- new BucketMoveJob(std::move(calc), std::move(dbRetainer), moveHandler, modifiedHandler, master, bucketExecutor, ready, notReady,
+ return {new BucketMoveJob(std::move(calc), std::move(dbRetainer), moveHandler, modifiedHandler, master, bucketExecutor, ready, notReady,
bucketCreateNotifier, clusterStateChangedNotifier, bucketStateChangedNotifier,
diskMemUsageNotifier, blockableConfig, docTypeName, bucketSpace),
[&master](auto job) {
auto failed = master.execute(makeLambdaTask([job]() { delete job; }));
assert(!failed);
- });
+ }};
}
BucketMoveJob::NeedResult
@@ -149,17 +148,16 @@ BucketMoveJob::needMove(BucketId bucketId, const BucketStateWrapper &itr) const
if (!hasReadyDocs && !hasNotReadyDocs) {
return noMove; // No documents for bucket in ready or notready subdbs
}
- const bool isActive = itr.isActive();
// No point in moving buckets when node is retired and everything will be deleted soon.
- // However, allow moving of explicitly activated buckets, as this implies a lack of other good replicas.
- if (!_calc || (_calc->nodeRetired() && !isActive)) {
+ if (!_calc || _calc->nodeRetired()) {
return noMove;
}
const Trinary shouldBeReady = _calc->shouldBeReady(document::Bucket(_bucketSpace, bucketId));
if (shouldBeReady == Trinary::Undefined) {
return noMove;
}
- const bool wantReady = (shouldBeReady == Trinary::True) || isActive;
+ const bool isActive = itr.isActive();
+ const bool wantReady = (shouldBeReady == Trinary::True);
LOG(spam, "needMove(): bucket(%s), shouldBeReady(%s), active(%s)",
bucketId.toString().c_str(), toStr(shouldBeReady), toStr(isActive));
if (wantReady) {
@@ -168,7 +166,7 @@ BucketMoveJob::needMove(BucketId bucketId, const BucketStateWrapper &itr) const
}
} else {
if (isActive) {
- return noMove; // Do not move rom ready to not ready when active
+ return noMove; // Do not move from ready to not ready when active
}
if (!hasReadyDocs) {
return noMove; // No ready bucket to make notready