diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-10-24 13:01:29 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-10-30 08:46:13 +0000 |
commit | 0c47a4ae1132a86c5973d8e385c793f4cf4eb7dc (patch) | |
tree | 2be125bc835f715a67f5cb85ae1f136d0d9be414 /searchcore | |
parent | eb6c18afb1fe2637545ac4fec163f7d043682108 (diff) |
Check both gid and timestamp.
Diffstat (limited to 'searchcore')
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. |