summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-02-23 23:37:10 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-02-23 23:37:10 +0000
commit99ce312eef544a4274abe06021a64abb1cd17517 (patch)
treec73ba737e4bfd877802e523127231517b7cb795a /searchcore
parent2d1f4ba77c803a7bdb9f4a2f0bd31b6208011f82 (diff)
Obey stop sign
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.cpp b/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.cpp
index 03c5c1401a0..93be0ee0591 100644
--- a/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.cpp
@@ -184,9 +184,7 @@ public:
}
void fail(const Bucket &bucket) override {
- _job._master.execute(makeLambdaTask([this, bucketId=bucket.getBucketId()]() {
- _job.failOperation(bucketId);
- }));
+ _job.failOperation(bucket.getBucketId());
}
private:
@@ -199,7 +197,11 @@ private:
void
BucketMoveJobV2::failOperation(BucketId bucketId) {
IncOnDestruct countGuard(_executedCount);
- considerBucket(_ready.meta_store()->getBucketDB().takeGuard(), bucketId);
+ if (_stopped.load(std::memory_order_relaxed)) return;
+ _master.execute(makeLambdaTask([this, bucketId]() {
+ if (_stopped.load(std::memory_order_relaxed)) return;
+ considerBucket(_ready.meta_store()->getBucketDB().takeGuard(), bucketId);
+ }));
}
void
@@ -224,6 +226,7 @@ BucketMoveJobV2::prepareMove(BucketMoverSP mover, std::vector<MoveKey> keys, IDe
if (_stopped.load(std::memory_order_relaxed)) return;
auto moveOps = mover->createMoveOperations(keys);
_master.execute(makeLambdaTask([this, mover=std::move(mover), moveOps=std::move(moveOps), onDone=std::move(onDone)]() mutable {
+ if (_stopped.load(std::memory_order_relaxed)) return;
completeMove(std::move(mover), std::move(moveOps), std::move(onDone));
}));
}