diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-11-30 08:49:06 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-11-30 08:49:06 +0000 |
commit | 1195f94bcba1366ac1e7f94c3c6d714fc2a1d8f8 (patch) | |
tree | 329556b8de2b711381d1f49b7812bbd041c1ee6e /searchcore | |
parent | dd67bb4a5b7b5ca609f32b6a0255db4ccc4abe6f (diff) |
Add DoneCallback to heartBeat so it can be tested without relying on sync.
Diffstat (limited to 'searchcore')
19 files changed, 58 insertions, 45 deletions
diff --git a/searchcore/src/tests/proton/attribute/attributeflush_test.cpp b/searchcore/src/tests/proton/attribute/attributeflush_test.cpp index e29040a7984..e85bf3c4baa 100644 --- a/searchcore/src/tests/proton/attribute/attributeflush_test.cpp +++ b/searchcore/src/tests/proton/attribute/attributeflush_test.cpp @@ -19,6 +19,7 @@ #include <vespa/vespalib/util/foregroundtaskexecutor.h> #include <vespa/vespalib/util/size_literals.h> #include <vespa/vespalib/util/threadstackexecutor.h> +#include <vespa/vespalib/util/idestructorcallback.h> #include <thread> #include <vespa/log/log.h> @@ -568,13 +569,13 @@ Test::requireThatShrinkWorks() EXPECT_FALSE(av->canShrinkLidSpace()); EXPECT_EQUAL(1000u, av->getNumDocs()); EXPECT_EQUAL(100u, av->getCommittedDocIdLimit()); - aw.heartBeat(51); + aw.heartBeat(51, IDestructorCallback::SP()); EXPECT_TRUE(av->wantShrinkLidSpace()); EXPECT_FALSE(av->canShrinkLidSpace()); EXPECT_EQUAL(ft->getApproxMemoryGain().getBefore(), ft->getApproxMemoryGain().getAfter()); g.reset(); - aw.heartBeat(52); + aw.heartBeat(52, IDestructorCallback::SP()); EXPECT_TRUE(av->wantShrinkLidSpace()); EXPECT_TRUE(av->canShrinkLidSpace()); EXPECT_TRUE(ft->getApproxMemoryGain().getBefore() > diff --git a/searchcore/src/tests/proton/documentdb/combiningfeedview/combiningfeedview_test.cpp b/searchcore/src/tests/proton/documentdb/combiningfeedview/combiningfeedview_test.cpp index db20181eae7..dc51d0df8a1 100644 --- a/searchcore/src/tests/proton/documentdb/combiningfeedview/combiningfeedview_test.cpp +++ b/searchcore/src/tests/proton/documentdb/combiningfeedview/combiningfeedview_test.cpp @@ -85,7 +85,7 @@ struct MyFeedView : public test::DummyFeedView void handleDeleteBucket(const DeleteBucketOperation &) override { ++_handleDeleteBucket; } void prepareMove(MoveOperation &) override { ++_prepareMove; } void handleMove(const MoveOperation &, IDestructorCallback::SP) override { ++_handleMove; } - void heartBeat(SerialNum) override { ++_heartBeat; } + void heartBeat(SerialNum, DoneCallback) override { ++_heartBeat; } void handlePruneRemovedDocuments(const PruneRemovedDocumentsOperation &) override { ++_handlePrune; } void handleCompactLidSpace(const CompactLidSpaceOperation &op, DoneCallback) override { _wantedLidLimit = op.getLidLimit(); @@ -371,7 +371,7 @@ TEST_F("require that delete bucket is sent to all feed views", Fixture) TEST_F("require that heart beat is sent to all feed views", Fixture) { - f._view.heartBeat(5); + f._view.heartBeat(5, IDestructorCallback::SP()); EXPECT_EQUAL(1u, f._ready._view->_heartBeat); EXPECT_EQUAL(1u, f._removed._view->_heartBeat); EXPECT_EQUAL(1u, f._notReady._view->_heartBeat); diff --git a/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.cpp b/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.cpp index f76b7d03d08..1963e5e9dbc 100644 --- a/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.cpp +++ b/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.cpp @@ -234,8 +234,8 @@ struct MyFeedView : public test::DummyFeedView { (void) token; ++remove_count; } - void handleMove(const MoveOperation &, IDestructorCallback::SP) override { ++move_count; } - void heartBeat(SerialNum) override { ++heartbeat_count; } + void handleMove(const MoveOperation &, DoneCallback) override { ++move_count; } + void heartBeat(SerialNum, DoneCallback) override { ++heartbeat_count; } void handlePruneRemovedDocuments(const PruneRemovedDocumentsOperation &) override { ++prune_removed_count; } const ISimpleDocumentMetaStore *getDocumentMetaStorePtr() const override { return nullptr; diff --git a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp index 6c45470bb42..4c566f6053b 100644 --- a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp +++ b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp @@ -367,7 +367,7 @@ struct MyAttributeWriter : public IAttributeWriter (void) doc; (void) lid; } - void heartBeat(SerialNum) override { ++_heartBeatCount; } + void heartBeat(SerialNum, OnWriteDoneType) override { ++_heartBeatCount; } void compactLidSpace(uint32_t wantedLidLimit, SerialNum ) override { _wantedLidLimit = wantedLidLimit; } @@ -1053,7 +1053,11 @@ TEST_F("require that removes are not remembered", SearchableFeedViewFixture) TEST_F("require that heartbeat propagates to index- and attributeadapter", SearchableFeedViewFixture) { - f.runInMasterAndSyncAll([&]() { f.fv.heartBeat(2); }); + vespalib::Gate gate; + f.runInMaster([&, onDone = std::make_shared<vespalib::GateCallback>(gate)]() { + f.fv.heartBeat(2, std::move(onDone)); + }); + gate.await(); EXPECT_EQUAL(1, f.miw._heartBeatCount); EXPECT_EQUAL(1, f.maw._heartBeatCount); } diff --git a/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp b/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp index 526b94a3525..fb609b1829e 100644 --- a/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp +++ b/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp @@ -114,12 +114,12 @@ struct MyMinimalFeedView : public MyMinimalFeedViewBase, public StoreOnlyFeedVie StoreOnlyFeedView::removeIndexedFields(s, l, onWriteDone); ++removeMultiIndexFieldsCount; } - void heartBeatIndexedFields(SerialNum s) override { - StoreOnlyFeedView::heartBeatIndexedFields(s); + void heartBeatIndexedFields(SerialNum s, IDestructorCallbackSP onDone) override { + StoreOnlyFeedView::heartBeatIndexedFields(s, onDone); ++heartBeatIndexedFieldsCount; } - void heartBeatAttributes(SerialNum s) override { - StoreOnlyFeedView::heartBeatAttributes(s); + void heartBeatAttributes(SerialNum s, IDestructorCallbackSP onDone) override { + StoreOnlyFeedView::heartBeatAttributes(s, onDone); ++heartBeatAttributesCount; } }; @@ -399,7 +399,11 @@ TEST_F("require that heartbeat propagates and commits meta store", Fixture) EXPECT_EQUAL(0, f.feedview->heartBeatIndexedFieldsCount); EXPECT_EQUAL(0, f.feedview->heartBeatAttributesCount); EXPECT_EQUAL(0, f.heartbeatCount); - f.runInMasterAndSyncAll([&]() { f.feedview->heartBeat(2); }); + vespalib::Gate gate; + f.runInMaster([&, onDone = std::make_shared<vespalib::GateCallback>(gate)]() { + f.feedview->heartBeat(2, std::move(onDone)); + }); + gate.await(); EXPECT_EQUAL(2u, f.metaStore->getStatus().getLastSyncToken()); EXPECT_EQUAL(1, f.feedview->heartBeatIndexedFieldsCount); EXPECT_EQUAL(1, f.feedview->heartBeatAttributesCount); diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp index 77b6d8d1392..2863eab1443 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp +++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp @@ -801,12 +801,13 @@ AttributeWriter::update(SerialNum serialNum, const DocumentUpdate &upd, Document } void -AttributeWriter::heartBeat(SerialNum serialNum) +AttributeWriter::heartBeat(SerialNum serialNum, OnWriteDoneType onDone) { for (auto entry : _attrMap) { - _attributeFieldWriter.execute(entry.second.executor_id, - [serialNum, attr=entry.second.attribute]() - { applyHeartBeat(serialNum, *attr); }); + _attributeFieldWriter.execute(entry.second.executor_id,[serialNum, attr=entry.second.attribute, onDone]() { + (void) onDone; + applyHeartBeat(serialNum, *attr); + }); } } diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h index dc543c19222..f43aab0f385 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h +++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h @@ -109,7 +109,7 @@ public: void update(SerialNum serialNum, const DocumentUpdate &upd, DocumentIdT lid, OnWriteDoneType onWriteDone, IFieldUpdateCallback & onUpdate) override; void update(SerialNum serialNum, const Document &doc, DocumentIdT lid, OnWriteDoneType onWriteDone) override; - void heartBeat(SerialNum serialNum) override; + void heartBeat(SerialNum serialNum, OnWriteDoneType onDone) override; void compactLidSpace(uint32_t wantedLidLimit, SerialNum serialNum) override; const proton::IAttributeManager::SP &getAttributeManager() const override { return _mgr; diff --git a/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_writer.h b/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_writer.h index 0f739f6ffea..e0bac5facd4 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_writer.h +++ b/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_writer.h @@ -50,7 +50,7 @@ public: * Update the underlying struct field attributes based on updated document. */ virtual void update(SerialNum serialNum, const Document &doc, DocumentIdT lid, OnWriteDoneType onWriteDone) = 0; - virtual void heartBeat(SerialNum serialNum) = 0; + virtual void heartBeat(SerialNum serialNum, OnWriteDoneType onDone) = 0; /** * Compact the lid space of the underlying attribute vectors. */ diff --git a/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.cpp b/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.cpp index 18215b01ae2..23ca17c7656 100644 --- a/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.cpp @@ -218,10 +218,10 @@ CombiningFeedView::handleMove(const MoveOperation &moveOp, IDestructorCallback:: } void -CombiningFeedView::heartBeat(search::SerialNum serialNum) +CombiningFeedView::heartBeat(search::SerialNum serialNum, DoneCallback onDone) { for (const auto &view : _views) { - view->heartBeat(serialNum); + view->heartBeat(serialNum, onDone); } } diff --git a/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.h b/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.h index 700787e126e..81a4f4f9588 100644 --- a/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.h +++ b/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.h @@ -75,7 +75,7 @@ public: void handleDeleteBucket(const DeleteBucketOperation &delOp) override; void prepareMove(MoveOperation &putOp) override; void handleMove(const MoveOperation &moveOp, std::shared_ptr<vespalib::IDestructorCallback> moveDoneCtx) override; - void heartBeat(search::SerialNum serialNum) override; + void heartBeat(search::SerialNum serialNum, DoneCallback onDone) override; void handlePruneRemovedDocuments(const PruneRemovedDocumentsOperation &pruneOp) override; void handleCompactLidSpace(const CompactLidSpaceOperation &op, DoneCallback onDone) override; diff --git a/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.cpp b/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.cpp index 25be7e4f504..db8046dac23 100644 --- a/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.cpp @@ -55,9 +55,9 @@ FastAccessFeedView::removeAttributes(SerialNum serialNum, const LidVector &lidsT } void -FastAccessFeedView::heartBeatAttributes(SerialNum serialNum) +FastAccessFeedView::heartBeatAttributes(SerialNum serialNum, DoneCallback onDone) { - _attributeWriter->heartBeat(serialNum); + _attributeWriter->heartBeat(serialNum, onDone); } FastAccessFeedView::FastAccessFeedView(StoreOnlyFeedView::Context storeOnlyCtx, const PersistentParams ¶ms, const Context &ctx) diff --git a/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.h b/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.h index 3b8c755046c..efe47401855 100644 --- a/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.h +++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.h @@ -45,7 +45,7 @@ private: void removeAttributes(SerialNum serialNum, const LidVector &lidsToRemove, OnWriteDoneType onWriteDone) override; - void heartBeatAttributes(SerialNum serialNum) override; + void heartBeatAttributes(SerialNum serialNum, DoneCallback onDone) override; protected: void internalForceCommit(const CommitParam & param, OnForceCommitDoneType onCommitDone) override; diff --git a/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp b/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp index 51ea6425622..dc49aeb8f88 100644 --- a/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp @@ -754,7 +754,7 @@ FeedHandler::handleOperation(FeedToken token, FeedOperation::UP op) } void -FeedHandler::handleMove(MoveOperation &op, std::shared_ptr<vespalib::IDestructorCallback> moveDoneCtx) +FeedHandler::handleMove(MoveOperation &op, vespalib::IDestructorCallback::SP moveDoneCtx) { assert(_writeService.master().isCurrentThread()); op.set_prepare_serial_num(inc_prepare_serial_num()); @@ -771,7 +771,7 @@ FeedHandler::heartBeat() { assert(_writeService.master().isCurrentThread()); _heart_beat_time.store(vespalib::steady_clock::now()); - _activeFeedView->heartBeat(_serialNum); + _activeFeedView->heartBeat(_serialNum, vespalib::IDestructorCallback::SP()); } FeedHandler::RPC::Result diff --git a/searchcore/src/vespa/searchcore/proton/server/ifeedview.h b/searchcore/src/vespa/searchcore/proton/server/ifeedview.h index 4c775e0a765..e0c9fe58c5b 100644 --- a/searchcore/src/vespa/searchcore/proton/server/ifeedview.h +++ b/searchcore/src/vespa/searchcore/proton/server/ifeedview.h @@ -58,7 +58,7 @@ public: virtual void handleDeleteBucket(const DeleteBucketOperation &delOp) = 0; virtual void prepareMove(MoveOperation &putOp) = 0; virtual void handleMove(const MoveOperation &putOp, DoneCallback onDone) = 0; - virtual void heartBeat(search::SerialNum serialNum) = 0; + virtual void heartBeat(search::SerialNum serialNum, DoneCallback onDone) = 0; virtual void forceCommit(const CommitParam & param, DoneCallback onDone) = 0; void forceCommit(CommitParam param) { forceCommit(param, DoneCallback()); } void forceCommit(search::SerialNum serialNum) { forceCommit(CommitParam(serialNum)); } diff --git a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp index 6164624c210..dc7b48f0f02 100644 --- a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp @@ -80,9 +80,12 @@ SearchableFeedView::performIndexPut(SerialNum serialNum, search::DocumentIdT lid } void -SearchableFeedView::heartBeatIndexedFields(SerialNum serialNum) +SearchableFeedView::heartBeatIndexedFields(SerialNum serialNum, DoneCallback onDone) { - _writeService.index().execute(makeLambdaTask([this, serialNum] { performIndexHeartBeat(serialNum); })); + _writeService.index().execute(makeLambdaTask([this, serialNum, onDone] { + (void) onDone; + performIndexHeartBeat(serialNum); + })); } void diff --git a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h index a97bebef702..7dd7879a136 100644 --- a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h +++ b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h @@ -42,7 +42,7 @@ private: void performIndexHeartBeat(SerialNum serialNum); void internalDeleteBucket(const DeleteBucketOperation &delOp) override; - void heartBeatIndexedFields(SerialNum serialNum) override; + void heartBeatIndexedFields(SerialNum serialNum, DoneCallback onDone) override; void putIndexedFields(SerialNum serialNum, search::DocumentIdT lid, const DocumentSP &newDoc, OnOperationDoneType onWriteDone) override; void updateIndexedFields(SerialNum serialNum, search::DocumentIdT lid, FutureDoc newDoc, OnOperationDoneType onWriteDone) override; diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp index c82a047e5e9..8ca0f232287 100644 --- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp @@ -263,11 +263,11 @@ StoreOnlyFeedView::internalPut(FeedToken token, const PutOperation &putOp) } void -StoreOnlyFeedView::heartBeatIndexedFields(SerialNum ) {} +StoreOnlyFeedView::heartBeatIndexedFields(SerialNum, DoneCallback ) {} void -StoreOnlyFeedView::heartBeatAttributes(SerialNum ) {} +StoreOnlyFeedView::heartBeatAttributes(SerialNum, DoneCallback ) {} void StoreOnlyFeedView::updateAttributes(SerialNum, Lid, const DocumentUpdate & upd, @@ -368,9 +368,10 @@ StoreOnlyFeedView::removeSummaries(SerialNum serialNum, const LidVector & lids, } void -StoreOnlyFeedView::heartBeatSummary(SerialNum serialNum) { +StoreOnlyFeedView::heartBeatSummary(SerialNum serialNum, DoneCallback onDone) { summaryExecutor().execute( - makeLambdaTask([serialNum, this] { + makeLambdaTask([serialNum, this, onDone] { + (void) onDone; _summaryAdapter->heartBeat(serialNum); })); } @@ -720,14 +721,14 @@ StoreOnlyFeedView::handleMove(const MoveOperation &moveOp, IDestructorCallback:: } void -StoreOnlyFeedView::heartBeat(SerialNum serialNum) +StoreOnlyFeedView::heartBeat(SerialNum serialNum, DoneCallback onDone) { assert(_writeService.master().isCurrentThread()); _metaStore.removeAllOldGenerations(); _metaStore.commit(CommitParam(serialNum)); - heartBeatSummary(serialNum); - heartBeatIndexedFields(serialNum); - heartBeatAttributes(serialNum); + heartBeatSummary(serialNum, onDone); + heartBeatIndexedFields(serialNum, onDone); + heartBeatAttributes(serialNum, onDone); } // CombiningFeedView calls this only for the removed subdb. diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h index 02332fcda6e..4b4082a8aa5 100644 --- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h +++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h @@ -58,7 +58,6 @@ public: using OnOperationDoneType = const std::shared_ptr<OperationDoneContext> &; using OnPutDoneType = const std::shared_ptr<PutDoneContext> &; using OnRemoveDoneType = const std::shared_ptr<RemoveDoneContext> &; - using FeedTokenUP = std::unique_ptr<FeedToken>; using FutureDoc = std::shared_future<std::unique_ptr<const Document>>; using PromisedDoc = std::promise<std::unique_ptr<const Document>>; using FutureStream = std::future<vespalib::nbostream>; @@ -161,7 +160,7 @@ private: void putSummary(SerialNum serialNum, Lid lid, DocumentSP doc, OnOperationDoneType onDone); void removeSummary(SerialNum serialNum, Lid lid, OnWriteDoneType onDone); void removeSummaries(SerialNum serialNum, const LidVector & lids, OnWriteDoneType onDone); - void heartBeatSummary(SerialNum serialNum); + void heartBeatSummary(SerialNum serialNum, DoneCallback onDone); bool useDocumentStore(SerialNum replaySerialNum) const { return replaySerialNum > _params._flushedDocumentStoreSerialNum; @@ -191,8 +190,8 @@ private: protected: virtual void internalDeleteBucket(const DeleteBucketOperation &delOp); - virtual void heartBeatIndexedFields(SerialNum serialNum); - virtual void heartBeatAttributes(SerialNum serialNum); + virtual void heartBeatIndexedFields(SerialNum serialNum, DoneCallback onDone); + virtual void heartBeatAttributes(SerialNum serialNum, DoneCallback onDone); private: virtual void putAttributes(SerialNum serialNum, Lid lid, const Document &doc, OnPutDoneType onWriteDone); @@ -235,7 +234,7 @@ public: void handleDeleteBucket(const DeleteBucketOperation &delOp) override; void prepareMove(MoveOperation &putOp) override; void handleMove(const MoveOperation &putOp, std::shared_ptr<vespalib::IDestructorCallback> doneCtx) override; - void heartBeat(search::SerialNum serialNum) override; + void heartBeat(search::SerialNum serialNum, DoneCallback onDone) override; void forceCommit(const CommitParam & param, DoneCallback onDone) override; /** diff --git a/searchcore/src/vespa/searchcore/proton/test/dummy_feed_view.h b/searchcore/src/vespa/searchcore/proton/test/dummy_feed_view.h index 61740c414ef..7f11bf9ec51 100644 --- a/searchcore/src/vespa/searchcore/proton/test/dummy_feed_view.h +++ b/searchcore/src/vespa/searchcore/proton/test/dummy_feed_view.h @@ -28,7 +28,7 @@ struct DummyFeedView : public IFeedView void handleDeleteBucket(const DeleteBucketOperation &) override {} void prepareMove(MoveOperation &) override {} void handleMove(const MoveOperation &, std::shared_ptr<vespalib::IDestructorCallback>) override {} - void heartBeat(search::SerialNum) override {} + void heartBeat(search::SerialNum, DoneCallback) override {} void handlePruneRemovedDocuments(const PruneRemovedDocumentsOperation &) override {} void handleCompactLidSpace(const CompactLidSpaceOperation &, DoneCallback) override {} void forceCommit(const CommitParam &, DoneCallback) override { } |