aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2022-03-10 19:01:49 +0100
committerTor Egge <Tor.Egge@online.no>2022-03-10 19:01:49 +0100
commit1ad627235e1a3119e5fd53f92355f31cc98014b8 (patch)
tree0a05f18d250f76c989a8597225d44937c59d9014 /searchcore
parent93fecf64015c811e03ec8abfd4730383d1c9cf16 (diff)
Reset onWriteDone before calling set_value() on promises.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp5
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h2
2 files changed, 4 insertions, 3 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
index 170b6f99930..f34885974b8 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
@@ -455,7 +455,7 @@ StoreOnlyFeedView::internalUpdate(FeedToken token, const UpdateOperation &updOp)
promisedDoc = std::move(promisedDoc),
promisedStream = std::move(promisedStream), this]() mutable
{
- makeUpdatedDocument(useDocStore, lid, *upd, onWriteDone,
+ makeUpdatedDocument(useDocStore, lid, *upd, std::move(onWriteDone),
std::move(promisedDoc), std::move(promisedStream));
});
_writeService.shared().execute(CpuUsage::wrap(std::move(task), CpuUsage::Category::WRITE));
@@ -465,7 +465,7 @@ StoreOnlyFeedView::internalUpdate(FeedToken token, const UpdateOperation &updOp)
void
StoreOnlyFeedView::makeUpdatedDocument(bool useDocStore, Lid lid, const DocumentUpdate & update,
- OnOperationDoneType onWriteDone, PromisedDoc promisedDoc,
+ std::decay_t<OnOperationDoneType> onWriteDone, PromisedDoc promisedDoc,
PromisedStream promisedStream)
{
Document::UP prevDoc = _summaryAdapter->get(lid, *_repo);
@@ -494,6 +494,7 @@ StoreOnlyFeedView::makeUpdatedDocument(bool useDocStore, Lid lid, const Document
assert(onWriteDone->is_replay() && !useDocStore);
}
}
+ onWriteDone.reset();
promisedDoc.set_value(std::move(newDoc));
promisedStream.set_value(std::move(newStream));
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h
index bd8509fa796..e36946c214d 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h
@@ -184,7 +184,7 @@ private:
IPendingLidTracker::Token get_pending_lid_token(const DocumentOperation &op);
- void makeUpdatedDocument(bool useDocStore, Lid lid, const DocumentUpdate & update, OnOperationDoneType onWriteDone,
+ void makeUpdatedDocument(bool useDocStore, Lid lid, const DocumentUpdate & update, std::decay_t<OnOperationDoneType> onWriteDone,
PromisedDoc promisedDoc, PromisedStream promisedStream);
protected: