diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-10-24 12:19:43 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-10-30 08:46:13 +0000 |
commit | eb6c18afb1fe2637545ac4fec163f7d043682108 (patch) | |
tree | 33daad971e841dd8d987249e5768658ae4872f54 /searchcore/src/tests/proton/documentdb | |
parent | 333b44e0d7a2f1e4c251fe1c95103ad287cfbf5f (diff) |
BucketMove is 3 phased, startMove, createMoveOps, completeMove.
First and last happens in master, while second happens in bucket executor.
As feed might happen inbetween these phases, care must be taken to check that the state
for a document is the same in complete as it was in first phase.
If not the move must be retried.
Diffstat (limited to 'searchcore/src/tests/proton/documentdb')
3 files changed, 7 insertions, 5 deletions
diff --git a/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.cpp b/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.cpp index 0359c13a5f7..ff44d898997 100644 --- a/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.cpp +++ b/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.cpp @@ -28,7 +28,7 @@ MyMoveHandler::MyMoveHandler(bucketdb::BucketDBOwner &bucketDb, bool storeMoveDo MyMoveHandler::~MyMoveHandler() = default; -void +IDocumentMoveHandler::MoveResult MyMoveHandler::handleMove(MoveOperation &op, IDestructorCallback::SP moveDoneCtx) { _moves.push_back(op); if (_bucketDb.takeGuard()->isCachedBucket(op.getBucketId())) { @@ -37,6 +37,7 @@ MyMoveHandler::handleMove(MoveOperation &op, IDestructorCallback::SP moveDoneCtx if (_storeMoveDoneContexts) { _moveDoneContexts.push_back(std::move(moveDoneCtx)); } + return MoveResult::SUCCESS; } MySubDb::MySubDb(const std::shared_ptr<const DocumentTypeRepo> &repo, std::shared_ptr<bucketdb::BucketDBOwner> bucketDB, diff --git a/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h b/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h index 9d5c4e0e4ec..ded00589f60 100644 --- a/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h +++ b/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h @@ -43,7 +43,7 @@ struct MyMoveHandler : public IDocumentMoveHandler { MyMoveHandler(bucketdb::BucketDBOwner &bucketDb, bool storeMoveDoneContext = false); ~MyMoveHandler() override; - void handleMove(MoveOperation &op, vespalib::IDestructorCallback::SP moveDoneCtx) override; + MoveResult handleMove(MoveOperation &op, vespalib::IDestructorCallback::SP moveDoneCtx) override; void reset() { _moves.clear(); diff --git a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp index 2a074a7404c..509210679da 100644 --- a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp +++ b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp @@ -40,7 +40,6 @@ #include <vespa/vespalib/util/gate.h> #include <vespa/vespalib/util/lambdatask.h> #include <vespa/vespalib/util/monitored_refcount.h> -#include <vespa/vespalib/util/size_literals.h> #include <vespa/vespalib/util/threadstackexecutor.h> #include <unistd.h> #include <thread> @@ -216,7 +215,8 @@ public: ~MyFeedHandler() override; bool isExecutorThread() const; - void handleMove(MoveOperation &op, IDestructorCallback::SP moveDoneCtx) override; + + MoveResult handleMove(MoveOperation &op, IDestructorCallback::SP moveDoneCtx) override; void performPruneRemovedDocuments(PruneRemovedDocumentsOperation &op) override; void heartBeat() override; @@ -624,7 +624,7 @@ MyFeedHandler::isExecutorThread() const } -void +IDocumentMoveHandler::MoveResult MyFeedHandler::handleMove(MoveOperation &op, IDestructorCallback::SP moveDoneCtx) { assert(isExecutorThread()); @@ -640,6 +640,7 @@ MyFeedHandler::handleMove(MoveOperation &op, IDestructorCallback::SP moveDoneCtx appendOperation(op, std::move(moveDoneCtx)); _subDBs[op.getSubDbId()]->handleMove(op); _subDBs[op.getPrevSubDbId()]->handleMove(op); + return MoveResult::SUCCESS; } |