summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-10-24 13:01:29 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-10-30 08:46:13 +0000
commit0c47a4ae1132a86c5973d8e385c793f4cf4eb7dc (patch)
tree2be125bc835f715a67f5cb85ae1f136d0d9be414 /searchcore
parenteb6c18afb1fe2637545ac4fec163f7d043682108 (diff)
Check both gid and timestamp.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentbucketmover.cpp6
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentbucketmover.h3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp4
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.