diff options
3 files changed, 8 insertions, 5 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.cpp b/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.cpp index 8506fcfefdf..bc282786b04 100644 --- a/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.cpp @@ -40,7 +40,7 @@ void BucketMover::moveDocument(MoveOperationUP moveOp, IDestructorCallbackSP onDone) { auto result = _handler->handleMove(*moveOp, std::move(onDone)); if (result == IDocumentMoveHandler::MoveResult::FAILURE) { - _needReschedule.store(true, std::memory_order_relaxed); + enableReschedule(); } } @@ -128,7 +128,7 @@ BucketMover::createMoveOperations(MoveKeys toMove) { } } if ( ! moveOps.failed().empty()) { - _needReschedule.store(true, std::memory_order_relaxed); + enableReschedule(); } return moveOps; } @@ -144,7 +144,7 @@ void BucketMover::cancel() { _cancelled = true; setAllScheduled(); - _needReschedule.store(true, std::memory_order_relaxed); + enableReschedule(); } } diff --git a/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.h b/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.h index 1900f96d6da..0437a258c3b 100644 --- a/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.h +++ b/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.h @@ -156,6 +156,9 @@ private: size_t pending() const { return _started.load(std::memory_order_relaxed) - _completed.load(std::memory_order_relaxed); } + void enableReschedule() { + _needReschedule.store(true, std::memory_order_relaxed); + } }; } diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp index a426fa7d682..27c5b835edb 100644 --- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp @@ -714,9 +714,9 @@ bool StoreOnlyFeedView::isMoveStillValid(const MoveOperation & moveOp) const { uint32_t lid = moveOp.getPrevLid(); if ( ! _metaStore.validLid(lid)) return false; - const RawDocumentMetaData & meta = _metaStore.getRawMetaData(lid); - return meta.getTimestamp() == moveOp.getTimestamp(); + return (meta.getTimestamp() == moveOp.getTimestamp()) && + (meta.getGid() == moveOp.getDocument()->getId().getGlobalId()); } // CombiningFeedView calls this only for the subdb we're moving to. |