diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-09-30 20:48:00 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-10-23 08:19:44 +0000 |
commit | cf456171ddd84368d1e5af85cf1f8c378b1d99d6 (patch) | |
tree | 39daa9dbb1a0bba6108ebd908c39e6871379d4af | |
parent | 24fe152948851e1f11c63e86b96a78db91343a61 (diff) |
Drop immediate commit, as it is gone.
20 files changed, 215 insertions, 351 deletions
diff --git a/searchcore/src/tests/proton/attribute/attribute_populator/attribute_populator_test.cpp b/searchcore/src/tests/proton/attribute/attribute_populator/attribute_populator_test.cpp index 683a6cd1197..2a5444c2525 100644 --- a/searchcore/src/tests/proton/attribute/attribute_populator/attribute_populator_test.cpp +++ b/searchcore/src/tests/proton/attribute/attribute_populator/attribute_populator_test.cpp @@ -97,12 +97,12 @@ TEST_F("require that reprocess with document populates attribute", Fixture) f._pop->handleExisting(5, f._ctx.create(0, 33)); EXPECT_EQUAL(6u, attr->get()->getNumDocs()); EXPECT_EQUAL(33, attr->get()->getInt(5)); - EXPECT_EQUAL(1u, attr->get()->getStatus().getLastSyncToken()); + EXPECT_EQUAL(0u, attr->get()->getStatus().getLastSyncToken()); f._pop->handleExisting(6, f._ctx.create(1, 44)); EXPECT_EQUAL(7u, attr->get()->getNumDocs()); EXPECT_EQUAL(44, attr->get()->getInt(6)); - EXPECT_EQUAL(2u, attr->get()->getStatus().getLastSyncToken()); + EXPECT_EQUAL(0u, attr->get()->getStatus().getLastSyncToken()); f._pop->done(); EXPECT_EQUAL(CREATE_SERIAL_NUM, attr->get()->getStatus().getLastSyncToken()); } diff --git a/searchcore/src/tests/proton/attribute/attribute_test.cpp b/searchcore/src/tests/proton/attribute/attribute_test.cpp index b30420ead24..c98127f4daf 100644 --- a/searchcore/src/tests/proton/attribute/attribute_test.cpp +++ b/searchcore/src/tests/proton/attribute/attribute_test.cpp @@ -169,29 +169,34 @@ public: _mgr->addAttribute(attr->getName(), std::move(attr)); allocAttributeWriter(); } - void put(SerialNum serialNum, const Document &doc, DocumentIdT lid, - bool immediateCommit = true) { - _aw->put(serialNum, doc, lid, immediateCommit, emptyCallback); + void put(SerialNum serialNum, const Document &doc, DocumentIdT lid) { + _aw->put(serialNum, doc, lid, emptyCallback); + commit(serialNum); } void update(SerialNum serialNum, const DocumentUpdate &upd, - DocumentIdT lid, bool immediateCommit, IFieldUpdateCallback & onUpdate) { - _aw->update(serialNum, upd, lid, immediateCommit, emptyCallback, onUpdate); + DocumentIdT lid, IFieldUpdateCallback & onUpdate) { + _aw->update(serialNum, upd, lid, emptyCallback, onUpdate); + commit(serialNum); } - void update(SerialNum serialNum, const Document &doc, - DocumentIdT lid, bool immediateCommit) { - _aw->update(serialNum, doc, lid, immediateCommit, emptyCallback); + void update(SerialNum serialNum, const Document &doc, DocumentIdT lid) { + _aw->update(serialNum, doc, lid, emptyCallback); + commit(serialNum); } - void remove(SerialNum serialNum, DocumentIdT lid, bool immediateCommit = true) { - _aw->remove(serialNum, lid, immediateCommit, emptyCallback); + void remove(SerialNum serialNum, DocumentIdT lid) { + _aw->remove(serialNum, lid, emptyCallback); + commit(serialNum); } - void remove(const LidVector &lidVector, SerialNum serialNum, bool immediateCommit = true) { - _aw->remove(lidVector, serialNum, immediateCommit, emptyCallback); + void remove(const LidVector &lidVector, SerialNum serialNum) { + _aw->remove(lidVector, serialNum, emptyCallback); + commit(serialNum); } void commit(SerialNum serialNum) { _aw->forceCommit(serialNum, emptyCallback); } void assertExecuteHistory(std::vector<uint32_t> expExecuteHistory) { - EXPECT_EQ(expExecuteHistory, _attributeFieldWriter->getExecuteHistory()); + auto includeCommit = expExecuteHistory; + includeCommit.insert(includeCommit.end(), expExecuteHistory.begin(), expExecuteHistory.end()); + EXPECT_EQ(includeCommit, _attributeFieldWriter->getExecuteHistory()); } SerialNum test_force_commit(AttributeVector &attr, SerialNum serialNum) { commit(serialNum); @@ -400,29 +405,29 @@ TEST_F(AttributeWriterTest, visibility_delay_is_honoured) EXPECT_EQ(2u, a1->getNumDocs()); EXPECT_EQ(3u, a1->getStatus().getLastSyncToken()); AttributeWriter awDelayed(_mgr); - awDelayed.put(4, *doc, 2, false, emptyCallback); + awDelayed.put(4, *doc, 2, emptyCallback); EXPECT_EQ(3u, a1->getNumDocs()); EXPECT_EQ(3u, a1->getStatus().getLastSyncToken()); - awDelayed.put(5, *doc, 4, false, emptyCallback); + awDelayed.put(5, *doc, 4, emptyCallback); EXPECT_EQ(5u, a1->getNumDocs()); EXPECT_EQ(3u, a1->getStatus().getLastSyncToken()); awDelayed.forceCommit(6, emptyCallback); EXPECT_EQ(6u, a1->getStatus().getLastSyncToken()); AttributeWriter awDelayedShort(_mgr); - awDelayedShort.put(7, *doc, 2, false, emptyCallback); + awDelayedShort.put(7, *doc, 2, emptyCallback); EXPECT_EQ(6u, a1->getStatus().getLastSyncToken()); - awDelayedShort.put(8, *doc, 2, false, emptyCallback); + awDelayedShort.put(8, *doc, 2, emptyCallback); awDelayedShort.forceCommit(8, emptyCallback); EXPECT_EQ(8u, a1->getStatus().getLastSyncToken()); verifyAttributeContent(*a1, 2, "10"); awDelayed.put(9, *idb.startDocument("id:ns:searchdocument::1").startAttributeField("a1").addStr("11").endField().endDocument(), - 2, false, emptyCallback); + 2, emptyCallback); awDelayed.put(10, *idb.startDocument("id:ns:searchdocument::1").startAttributeField("a1").addStr("20").endField().endDocument(), - 2, false, emptyCallback); + 2, emptyCallback); awDelayed.put(11, *idb.startDocument("id:ns:searchdocument::1").startAttributeField("a1").addStr("30").endField().endDocument(), - 2, false, emptyCallback); + 2, emptyCallback); EXPECT_EQ(8u, a1->getStatus().getLastSyncToken()); verifyAttributeContent(*a1, 2, "10"); awDelayed.forceCommit(12, emptyCallback); @@ -472,8 +477,7 @@ TEST_F(AttributeWriterTest, handles_update) .addUpdate(ArithmeticValueUpdate(ArithmeticValueUpdate::Add, 10))); DummyFieldUpdateCallback onUpdate; - bool immediateCommit = true; - update(2, upd, 1, immediateCommit, onUpdate); + update(2, upd, 1, onUpdate); attribute::IntegerContent ibuf; ibuf.fill(*a1, 1); @@ -483,9 +487,9 @@ TEST_F(AttributeWriterTest, handles_update) EXPECT_EQ(1u, ibuf.size()); EXPECT_EQ(30u, ibuf[0]); - update(2, upd, 1, immediateCommit, onUpdate); // same sync token as previous + update(2, upd, 1, onUpdate); // same sync token as previous try { - update(1, upd, 1, immediateCommit, onUpdate); // lower sync token than previous + update(1, upd, 1, onUpdate); // lower sync token than previous EXPECT_TRUE(true); // update is ignored } catch (vespalib::IllegalStateException & e) { LOG(info, "Got expected exception: '%s'", e.getMessage().c_str()); @@ -517,9 +521,8 @@ TEST_F(AttributeWriterTest, handles_predicate_update) PredicateIndex &index = static_cast<PredicateAttribute &>(*a1).getIndex(); EXPECT_EQ(1u, index.getZeroConstraintDocs().size()); EXPECT_FALSE(index.getIntervalIndex().lookup(PredicateHash::hash64("foo=bar")).valid()); - bool immediateCommit = true; DummyFieldUpdateCallback onUpdate; - update(2, upd, 1, immediateCommit, onUpdate); + update(2, upd, 1, onUpdate); EXPECT_EQ(0u, index.getZeroConstraintDocs().size()); EXPECT_TRUE(index.getIntervalIndex().lookup(PredicateHash::hash64("foo=bar")).valid()); } @@ -712,9 +715,8 @@ TEST_F(AttributeWriterTest, handles_tensor_assign_update) new_value = EngineOrFactory::get().copy(*new_tensor); upd.addUpdate(FieldUpdate(upd.getType().getField("a1")) .addUpdate(AssignValueUpdate(new_value))); - bool immediateCommit = true; DummyFieldUpdateCallback onUpdate; - update(2, upd, 1, immediateCommit, onUpdate); + update(2, upd, 1, onUpdate); EXPECT_EQ(2u, a1->getNumDocs()); EXPECT_TRUE(tensorAttribute != nullptr); tensor2 = tensorAttribute->getTensor(1); @@ -1078,7 +1080,7 @@ TEST_F(StructArrayWriterTest, update_with_doc_argument_updates_struct_field_attr put(10, *doc, 1); checkAttrs(1, 10, {11, 12}); doc = makeDoc(20, {21}); - update(11, *doc, 1, true); + update(11, *doc, 1); checkAttrs(1, 10, {21}); } @@ -1135,7 +1137,7 @@ TEST_F(StructMapWriterTest, update_with_doc_argument_updates_struct_field_attrib put(10, *doc, 1); checkAttrs(1, 10, {{1, 11}, {2, 12}}); doc = makeDoc(20, {{42, 21}}); - update(11, *doc, 1, true); + update(11, *doc, 1); checkAttrs(1, 10, {{42, 21}}); } diff --git a/searchcore/src/tests/proton/docsummary/docsummary.cpp b/searchcore/src/tests/proton/docsummary/docsummary.cpp index 266a817d380..05abf7fe514 100644 --- a/searchcore/src/tests/proton/docsummary/docsummary.cpp +++ b/searchcore/src/tests/proton/docsummary/docsummary.cpp @@ -246,7 +246,8 @@ public: Timestamp(0u), docSize, lid, 0u)); LOG_ASSERT(putRes.ok()); uint64_t serialNum = _ddb->getFeedHandler().incSerialNum(); - _aw->put(serialNum, doc, lid, true, std::shared_ptr<IDestructorCallback>()); + _aw->put(serialNum, doc, lid, std::shared_ptr<IDestructorCallback>()); + _aw->forceCommit(serialNum, std::shared_ptr<IDestructorCallback>()); _ddb->getReadySubDB()->getAttributeManager()->getAttributeFieldWriter().sync(); _sa->put(serialNum, lid, doc); const GlobalId &gid = docId.getGlobalId(); diff --git a/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp b/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp index 43f16e87986..754cf4ea15d 100644 --- a/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp +++ b/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp @@ -769,18 +769,27 @@ struct DocumentHandler } void putDoc(PutOperation &op) { IFeedView::SP feedView = _f._subDb.getFeedView(); - _f.runInMaster([&]() { feedView->preparePut(op); - feedView->handlePut(FeedToken(), op); } ); + _f.runInMaster([&]() { + feedView->preparePut(op); + feedView->handlePut(FeedToken(), op); + feedView->forceCommit(op.getSerialNum()); + } ); } void moveDoc(MoveOperation &op) { IFeedView::SP feedView = _f._subDb.getFeedView(); - _f.runInMaster([&]() { feedView->handleMove(op, IDestructorCallback::SP()); } ); + _f.runInMaster([&]() { + feedView->handleMove(op, IDestructorCallback::SP()); + feedView->forceCommit(op.getSerialNum()); + } ); } void removeDoc(RemoveOperation &op) { IFeedView::SP feedView = _f._subDb.getFeedView(); - _f.runInMaster([&]() { feedView->prepareRemove(op); - feedView->handleRemove(FeedToken(), op); } ); + _f.runInMaster([&]() { + feedView->prepareRemove(op); + feedView->handleRemove(FeedToken(), op); + feedView->forceCommit(op.getSerialNum()); + } ); } void putDocs() { PutOperation putOp = createPut(std::move(createDoc(1, 22, 33)), Timestamp(10), 10); diff --git a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp index 1269804c98a..9bb8865707d 100644 --- a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp +++ b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp @@ -92,20 +92,17 @@ struct MyTracer _os << ")"; } - void tracePut(const vespalib::string &adapterType, - SerialNum serialNum, uint32_t lid, bool immediateCommit) { + void tracePut(const vespalib::string &adapterType, SerialNum serialNum, uint32_t lid) { Guard guard(_mutex); addComma(); _os << "put(adapter=" << adapterType << - ",serialNum=" << serialNum << ",lid=" << lid << ",commit=" << immediateCommit << ")"; + ",serialNum=" << serialNum << ",lid=" << lid << ")"; } - void traceRemove(const vespalib::string &adapterType, - SerialNum serialNum, uint32_t lid, bool immediateCommit) { + void traceRemove(const vespalib::string &adapterType, SerialNum serialNum, uint32_t lid) { Guard guard(_mutex); addComma(); - _os << "remove(adapter=" << adapterType << - ",serialNum=" << serialNum << ",lid=" << lid << ",commit=" << immediateCommit << ")"; + _os << "remove(adapter=" << adapterType << ",serialNum=" << serialNum << ",lid=" << lid << ")"; } void traceCommit(const vespalib::string &adapterType, SerialNum serialNum) { @@ -151,12 +148,12 @@ struct MyIndexWriter : public test::MockIndexWriter {} void put(SerialNum serialNum, const document::Document &doc, const DocumentIdT lid) override { (void) doc; - _tracer.tracePut(indexAdapterTypeName, serialNum, lid, false); + _tracer.tracePut(indexAdapterTypeName, serialNum, lid); } void remove(SerialNum serialNum, const search::DocumentIdT lid) override { LOG(info, "MyIndexAdapter::remove(): serialNum(%" PRIu64 "), docId(%u)", serialNum, lid); _removes.push_back(lid); - _tracer.traceRemove(indexAdapterTypeName, serialNum, lid, false); + _tracer.traceRemove(indexAdapterTypeName, serialNum, lid); } void commit(SerialNum serialNum, OnWriteDoneType) override { ++_commitCount; @@ -335,35 +332,26 @@ struct MyAttributeWriter : public IAttributeWriter AttrMap::const_iterator itr = _attrMap.find(attrName); return ((itr == _attrMap.end()) ? nullptr : itr->second.get()); } - void put(SerialNum serialNum, const document::Document &doc, DocumentIdT lid, - bool immediateCommit, OnWriteDoneType) override { + void put(SerialNum serialNum, const document::Document &doc, DocumentIdT lid, OnWriteDoneType) override { _putSerial = serialNum; _putDocId = doc.getId(); _putLid = lid; - _tracer.tracePut(attributeAdapterTypeName, serialNum, lid, immediateCommit); - if (immediateCommit) { - ++_commitCount; - } + _tracer.tracePut(attributeAdapterTypeName, serialNum, lid); } - void remove(SerialNum serialNum, DocumentIdT lid, - bool immediateCommit, OnWriteDoneType) override { + void remove(SerialNum serialNum, DocumentIdT lid, OnWriteDoneType) override { _removeSerial = serialNum; _removeLid = lid; - _tracer.traceRemove(attributeAdapterTypeName, serialNum, lid, immediateCommit); - if (immediateCommit) { - ++_commitCount; - } + _tracer.traceRemove(attributeAdapterTypeName, serialNum, lid); } - void remove(const LidVector & lidsToRemove, SerialNum serialNum, - bool immediateCommit, OnWriteDoneType) override { + void remove(const LidVector & lidsToRemove, SerialNum serialNum, OnWriteDoneType) override { for (uint32_t lid : lidsToRemove) { LOG(info, "MyAttributeAdapter::remove(): serialNum(%" PRIu64 "), docId(%u)", serialNum, lid); _removes.push_back(lid); - _tracer.traceRemove(attributeAdapterTypeName, serialNum, lid, immediateCommit); + _tracer.traceRemove(attributeAdapterTypeName, serialNum, lid); } } void update(SerialNum serialNum, const document::DocumentUpdate &upd, - DocumentIdT lid, bool, OnWriteDoneType, IFieldUpdateCallback & onUpdate) override { + DocumentIdT lid, OnWriteDoneType, IFieldUpdateCallback & onUpdate) override { _updateSerial = serialNum; _updateDocId = upd.getId(); _updateLid = lid; @@ -372,12 +360,10 @@ struct MyAttributeWriter : public IAttributeWriter onUpdate.onUpdateField(fieldUpdate.getField().getName(), attr); } } - void update(SerialNum serialNum, const document::Document &doc, DocumentIdT lid, - bool immediateCommit, OnWriteDoneType) override { + void update(SerialNum serialNum, const document::Document &doc, DocumentIdT lid, OnWriteDoneType) override { (void) serialNum; (void) doc; (void) lid; - (void) immediateCommit; } void heartBeat(SerialNum) override { ++_heartBeatCount; } void compactLidSpace(uint32_t wantedLidLimit, SerialNum ) override { @@ -818,6 +804,7 @@ TEST_F("require that put() calls attribute adapter", SearchableFeedViewFixture) DocumentContext dc = f.doc1(); EXPECT_EQUAL(0u, f._docIdLimit.get()); f.putAndWait(dc); + f.forceCommitAndWait(); EXPECT_EQUAL(1u, f.maw._putSerial); EXPECT_EQUAL(DocumentId("id:ns:searchdocument::1"), f.maw._putDocId); @@ -1184,26 +1171,6 @@ TEST_F("require that compactLidSpace() propagates to index writer", EXPECT_EQUAL(2u, f.miw._wantedLidLimit); } -TEST_F("require that commit is called if visibility delay is 0", - SearchableFeedViewFixture) -{ - DocumentContext dc = f.doc1(); - f.putAndWait(dc); - EXPECT_EQUAL(1u, f.miw._commitCount); - EXPECT_EQUAL(1u, f.maw._commitCount); - f.removeAndWait(dc); - EXPECT_EQUAL(2u, f.miw._commitCount); - EXPECT_EQUAL(2u, f.maw._commitCount); - f.assertTrace("put(adapter=attribute,serialNum=1,lid=1,commit=1)," - "put(adapter=index,serialNum=1,lid=1,commit=0)," - "commit(adapter=index,serialNum=1)," - "ack(Result(0, ))," - "remove(adapter=attribute,serialNum=2,lid=1,commit=1)," - "remove(adapter=index,serialNum=2,lid=1,commit=0)," - "commit(adapter=index,serialNum=2)," - "ack(Result(0, ))"); -} - const vespalib::duration LONG_DELAY = 60s; const vespalib::duration SHORT_DELAY = 500ms; @@ -1219,11 +1186,11 @@ TEST_F("require that commit is not called when inside a commit interval", EXPECT_EQUAL(0u, f.miw._commitCount); EXPECT_EQUAL(0u, f.maw._commitCount); EXPECT_EQUAL(0u, f._docIdLimit.get()); - f.assertTrace("put(adapter=attribute,serialNum=1,lid=1,commit=0)," - "put(adapter=index,serialNum=1,lid=1,commit=0)," + f.assertTrace("put(adapter=attribute,serialNum=1,lid=1)," + "put(adapter=index,serialNum=1,lid=1)," "ack(Result(0, ))," - "remove(adapter=attribute,serialNum=2,lid=1,commit=0)," - "remove(adapter=index,serialNum=2,lid=1,commit=0)," + "remove(adapter=attribute,serialNum=2,lid=1)," + "remove(adapter=index,serialNum=2,lid=1)," "ack(Result(0, ))"); f.forceCommitAndWait(); } @@ -1242,11 +1209,11 @@ TEST_F("require that commit is not implicitly called", EXPECT_EQUAL(0u, f.miw._commitCount); EXPECT_EQUAL(0u, f.maw._commitCount); EXPECT_EQUAL(0u, f._docIdLimit.get()); - f.assertTrace("put(adapter=attribute,serialNum=1,lid=1,commit=0)," - "put(adapter=index,serialNum=1,lid=1,commit=0)," + f.assertTrace("put(adapter=attribute,serialNum=1,lid=1)," + "put(adapter=index,serialNum=1,lid=1)," "ack(Result(0, ))," - "remove(adapter=attribute,serialNum=2,lid=1,commit=0)," - "remove(adapter=index,serialNum=2,lid=1,commit=0)," + "remove(adapter=attribute,serialNum=2,lid=1)," + "remove(adapter=index,serialNum=2,lid=1)," "ack(Result(0, ))"); f.forceCommitAndWait(); } @@ -1263,8 +1230,8 @@ TEST_F("require that forceCommit updates docid limit", EXPECT_EQUAL(1u, f.miw._commitCount); EXPECT_EQUAL(1u, f.maw._commitCount); EXPECT_EQUAL(2u, f._docIdLimit.get()); - f.assertTrace("put(adapter=attribute,serialNum=1,lid=1,commit=0)," - "put(adapter=index,serialNum=1,lid=1,commit=0)," + f.assertTrace("put(adapter=attribute,serialNum=1,lid=1)," + "put(adapter=index,serialNum=1,lid=1)," "ack(Result(0, ))," "commit(adapter=attribute,serialNum=1)," "commit(adapter=index,serialNum=1)"); diff --git a/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp b/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp index e6e71d51e47..3a75f8cd494 100644 --- a/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp +++ b/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp @@ -105,12 +105,12 @@ struct MyMinimalFeedView : public MyMinimalFeedViewBase, public StoreOnlyFeedVie outstandingMoveOps(outstandingMoveOps_) { } - void removeAttributes(SerialNum s, const LidVector &l, bool immediateCommit, OnWriteDoneType onWriteDone) override { - StoreOnlyFeedView::removeAttributes(s, l, immediateCommit, onWriteDone); + void removeAttributes(SerialNum s, const LidVector &l, OnWriteDoneType onWriteDone) override { + StoreOnlyFeedView::removeAttributes(s, l, onWriteDone); ++removeMultiAttributesCount; } - void removeIndexedFields(SerialNum s, const LidVector &l, bool immediateCommit, OnWriteDoneType onWriteDone) override { - StoreOnlyFeedView::removeIndexedFields(s, l, immediateCommit, onWriteDone); + void removeIndexedFields(SerialNum s, const LidVector &l, OnWriteDoneType onWriteDone) override { + StoreOnlyFeedView::removeIndexedFields(s, l, onWriteDone); ++removeMultiIndexFieldsCount; } void heartBeatIndexedFields(SerialNum s) override { @@ -145,23 +145,23 @@ struct MoveOperationFeedView : public MyMinimalFeedView { removeIndexFieldsCount(0), onWriteDoneContexts() {} - void putAttributes(SerialNum, search::DocumentIdT, const document::Document &, bool, OnPutDoneType onWriteDone) override { + void putAttributes(SerialNum, search::DocumentIdT, const document::Document &, OnPutDoneType onWriteDone) override { ++putAttributesCount; EXPECT_EQUAL(1, outstandingMoveOps); onWriteDoneContexts.push_back(onWriteDone); } void putIndexedFields(SerialNum, search::DocumentIdT, const document::Document::SP &, - bool, OnOperationDoneType onWriteDone) override { + OnOperationDoneType onWriteDone) override { ++putIndexFieldsCount; EXPECT_EQUAL(1, outstandingMoveOps); onWriteDoneContexts.push_back(onWriteDone); } - void removeAttributes(SerialNum, search::DocumentIdT, bool, OnRemoveDoneType onWriteDone) override { + void removeAttributes(SerialNum, search::DocumentIdT, OnRemoveDoneType onWriteDone) override { ++removeAttributesCount; EXPECT_EQUAL(1, outstandingMoveOps); onWriteDoneContexts.push_back(onWriteDone); } - void removeIndexedFields(SerialNum, search::DocumentIdT, bool, OnRemoveDoneType onWriteDone) override { + void removeIndexedFields(SerialNum, search::DocumentIdT, OnRemoveDoneType onWriteDone) override { ++removeIndexFieldsCount; EXPECT_EQUAL(1, outstandingMoveOps); onWriteDoneContexts.push_back(onWriteDone); diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_populator.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_populator.cpp index 33a5776cb8a..af7bae32b11 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_populator.cpp +++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_populator.cpp @@ -3,6 +3,8 @@ #include "attribute_populator.h" #include <vespa/searchcore/proton/common/eventlogger.h> #include <vespa/searchlib/common/idestructorcallback.h> +#include <vespa/searchlib/common/gatecallback.h> +#include <vespa/vespalib/util/gate.h> #include <vespa/searchlib/attribute/attributevector.h> #include <vespa/log/log.h> @@ -73,8 +75,10 @@ void AttributePopulator::handleExisting(uint32_t lid, const std::shared_ptr<document::Document> &doc) { search::SerialNum serialNum(nextSerialNum()); - auto populateDoneContext = std::make_shared<PopulateDoneContext>(doc); - _writer.put(serialNum, *doc, lid, true, populateDoneContext); + _writer.put(serialNum, *doc, lid, std::make_shared<PopulateDoneContext>(doc)); + vespalib::Gate gate; + _writer.forceCommit(serialNum, std::make_shared<search::GateCallback>(gate)); + gate.await(); } void diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp index bf32b679d76..2b859c17931 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp +++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp @@ -127,8 +127,7 @@ ensureLidSpace(SerialNum serialNum, DocumentIdT lid, AttributeVector &attr) void applyPutToAttribute(SerialNum serialNum, const FieldValue::UP &fieldValue, DocumentIdT lid, - bool immediateCommit, AttributeVector &attr, - AttributeWriter::OnWriteDoneType) + AttributeVector &attr, AttributeWriter::OnWriteDoneType) { ensureLidSpace(serialNum, lid, attr); if (fieldValue.get()) { @@ -136,9 +135,6 @@ applyPutToAttribute(SerialNum serialNum, const FieldValue::UP &fieldValue, Docum } else { attr.clearDoc(lid); } - if (immediateCommit) { - attr.commit(serialNum, serialNum); - } } void @@ -147,7 +143,6 @@ complete_put_to_attribute(SerialNum serial_num, AttributeVector& attr, const FieldValue::SP& field_value, std::future<std::unique_ptr<PrepareResult>>& result_future, - bool immediate_commit, AttributeWriter::OnWriteDoneType) { ensureLidSpace(serial_num, docid, attr); @@ -157,20 +152,14 @@ complete_put_to_attribute(SerialNum serial_num, } else { attr.clearDoc(docid); } - if (immediate_commit) { - attr.commit(serial_num, serial_num); - } } void -applyRemoveToAttribute(SerialNum serialNum, DocumentIdT lid, bool immediateCommit, +applyRemoveToAttribute(SerialNum serialNum, DocumentIdT lid, AttributeVector &attr, AttributeWriter::OnWriteDoneType) { ensureLidSpace(serialNum, lid, attr); attr.clearDoc(lid); - if (immediateCommit) { - attr.commit(serialNum, serialNum); - } } void @@ -182,15 +171,6 @@ applyUpdateToAttribute(SerialNum serialNum, const FieldUpdate &fieldUpd, } void -applyUpdateToAttributeAndCommit(SerialNum serialNum, const FieldUpdate &fieldUpd, - DocumentIdT lid, AttributeVector &attr) -{ - ensureLidSpace(serialNum, lid, attr); - AttributeUpdater::handleUpdate(attr, lid, fieldUpd); - attr.commit(serialNum, serialNum); -} - -void applyReplayDone(uint32_t docIdLimit, AttributeVector &attr) { AttributeManager::padAttribute(attr, docIdLimit); @@ -240,30 +220,22 @@ using AttrUpdates = std::vector<std::pair<AttributeVector *, const FieldUpdate * struct BatchUpdateTask : public vespalib::Executor::Task { - BatchUpdateTask(SerialNum serialNum, DocumentIdT lid, bool immediateCommit) + BatchUpdateTask(SerialNum serialNum, DocumentIdT lid) : vespalib::Executor::Task(), _serialNum(serialNum), _lid(lid), - _immediateCommit(immediateCommit), _onWriteDone() { } ~BatchUpdateTask() override; void run() override { - if (_immediateCommit) { - for (const auto & update : _updates) { - applyUpdateToAttributeAndCommit(_serialNum, *update.second, _lid, *update.first); - } - } else { - for (const auto & update : _updates) { - applyUpdateToAttribute(_serialNum, *update.second, _lid, *update.first); - } + for (const auto & update : _updates) { + applyUpdateToAttribute(_serialNum, *update.second, _lid, *update.first); } } SerialNum _serialNum; DocumentIdT _lid; - bool _immediateCommit; AttrUpdates _updates; search::IDestructorCallback::SP _onWriteDone; }; @@ -310,22 +282,20 @@ class PutTask : public vespalib::Executor::Task const AttributeWriter::WriteContext &_wc; const SerialNum _serialNum; const uint32_t _lid; - const bool _immediateCommit; const bool _allAttributes; std::remove_reference_t<AttributeWriter::OnWriteDoneType> _onWriteDone; std::shared_ptr<DocumentFieldExtractor> _fieldExtractor; std::vector<FieldValue::UP> _fieldValues; public: - PutTask(const AttributeWriter::WriteContext &wc, SerialNum serialNum, std::shared_ptr<DocumentFieldExtractor> fieldExtractor, uint32_t lid, bool immediateCommit, bool allAttributes, AttributeWriter::OnWriteDoneType onWriteDone); + PutTask(const AttributeWriter::WriteContext &wc, SerialNum serialNum, std::shared_ptr<DocumentFieldExtractor> fieldExtractor, uint32_t lid, bool allAttributes, AttributeWriter::OnWriteDoneType onWriteDone); ~PutTask() override; void run() override; }; -PutTask::PutTask(const AttributeWriter::WriteContext &wc, SerialNum serialNum, std::shared_ptr<DocumentFieldExtractor> fieldExtractor, uint32_t lid, bool immediateCommit, bool allAttributes, AttributeWriter::OnWriteDoneType onWriteDone) +PutTask::PutTask(const AttributeWriter::WriteContext &wc, SerialNum serialNum, std::shared_ptr<DocumentFieldExtractor> fieldExtractor, uint32_t lid, bool allAttributes, AttributeWriter::OnWriteDoneType onWriteDone) : _wc(wc), _serialNum(serialNum), _lid(lid), - _immediateCommit(immediateCommit), _allAttributes(allAttributes), _onWriteDone(onWriteDone), _fieldExtractor(std::move(fieldExtractor)), @@ -352,7 +322,7 @@ PutTask::run() if (_allAttributes || field.isStructFieldAttribute()) { AttributeVector &attr = field.getAttribute(); if (attr.getStatus().getLastSyncToken() < _serialNum) { - applyPutToAttribute(_serialNum, _fieldValues[fieldId], _lid, _immediateCommit, attr, _onWriteDone); + applyPutToAttribute(_serialNum, _fieldValues[fieldId], _lid, attr, _onWriteDone); } ++fieldId; } @@ -418,26 +388,22 @@ private: AttributeVector& _attr; FieldValue::SP _field_value; std::future<std::unique_ptr<PrepareResult>> _result_future; - const bool _immediate_commit; std::remove_reference_t<AttributeWriter::OnWriteDoneType> _on_write_done; public: CompletePutTask(PreparePutTask& prepare_task, - bool immediate_commit, AttributeWriter::OnWriteDoneType on_write_done); ~CompletePutTask() override; void run() override; }; CompletePutTask::CompletePutTask(PreparePutTask& prepare_task, - bool immediate_commit, AttributeWriter::OnWriteDoneType on_write_done) : _serial_num(prepare_task.serial_num()), _docid(prepare_task.docid()), _attr(prepare_task.attr()), _field_value(prepare_task.field_value()), _result_future(prepare_task.result_future()), - _immediate_commit(immediate_commit), _on_write_done(on_write_done) { } @@ -448,8 +414,7 @@ void CompletePutTask::run() { if (_attr.getStatus().getLastSyncToken() < _serial_num) { - complete_put_to_attribute(_serial_num, _docid, _attr, _field_value, _result_future, - _immediate_commit, _on_write_done); + complete_put_to_attribute(_serial_num, _docid, _attr, _field_value, _result_future, _on_write_done); } } @@ -458,19 +423,17 @@ class RemoveTask : public vespalib::Executor::Task const AttributeWriter::WriteContext &_wc; const SerialNum _serialNum; const uint32_t _lid; - const bool _immediateCommit; std::remove_reference_t<AttributeWriter::OnWriteDoneType> _onWriteDone; public: - RemoveTask(const AttributeWriter::WriteContext &wc, SerialNum serialNum, uint32_t lid, bool immediateCommit, AttributeWriter::OnWriteDoneType onWriteDone); + RemoveTask(const AttributeWriter::WriteContext &wc, SerialNum serialNum, uint32_t lid, AttributeWriter::OnWriteDoneType onWriteDone); ~RemoveTask() override; void run() override; }; -RemoveTask::RemoveTask(const AttributeWriter::WriteContext &wc, SerialNum serialNum, uint32_t lid, bool immediateCommit, AttributeWriter::OnWriteDoneType onWriteDone) +RemoveTask::RemoveTask(const AttributeWriter::WriteContext &wc, SerialNum serialNum, uint32_t lid, AttributeWriter::OnWriteDoneType onWriteDone) : _wc(wc), _serialNum(serialNum), _lid(lid), - _immediateCommit(immediateCommit), _onWriteDone(onWriteDone) { } @@ -485,7 +448,7 @@ RemoveTask::run() AttributeVector &attr = field.getAttribute(); // Must use <= due to how move operations are handled if (attr.getStatus().getLastSyncToken() <= _serialNum) { - applyRemoveToAttribute(_serialNum, _lid, _immediateCommit, attr, _onWriteDone); + applyRemoveToAttribute(_serialNum, _lid, attr, _onWriteDone); } } } @@ -496,18 +459,15 @@ private: const AttributeWriter::WriteContext &_writeCtx; const SerialNum _serialNum; const LidVector _lidsToRemove; - const bool _immediateCommit; std::remove_reference_t<AttributeWriter::OnWriteDoneType> _onWriteDone; public: BatchRemoveTask(const AttributeWriter::WriteContext &writeCtx, SerialNum serialNum, const LidVector &lidsToRemove, - bool immediateCommit, AttributeWriter::OnWriteDoneType onWriteDone) : _writeCtx(writeCtx), _serialNum(serialNum), _lidsToRemove(lidsToRemove), - _immediateCommit(immediateCommit), _onWriteDone(onWriteDone) {} ~BatchRemoveTask() override; @@ -516,10 +476,7 @@ public: auto &attr = field.getAttribute(); if (attr.getStatus().getLastSyncToken() < _serialNum) { for (auto lidToRemove : _lidsToRemove) { - applyRemoveToAttribute(_serialNum, lidToRemove, false, attr, _onWriteDone); - } - if (_immediateCommit) { - attr.commit(_serialNum, _serialNum); + applyRemoveToAttribute(_serialNum, lidToRemove, attr, _onWriteDone); } } } @@ -604,7 +561,7 @@ AttributeWriter::buildFieldPaths(const DocumentType & docType, const DataType *d void AttributeWriter::internalPut(SerialNum serialNum, const Document &doc, DocumentIdT lid, - bool immediateCommit, bool allAttributes, OnWriteDoneType onWriteDone) + bool allAttributes, OnWriteDoneType onWriteDone) { const DataType *dataType(doc.getDataType()); if (_dataType != dataType) { @@ -615,13 +572,12 @@ AttributeWriter::internalPut(SerialNum serialNum, const Document &doc, DocumentI if (wc.use_two_phase_put()) { assert(wc.getFields().size() == 1); auto prepare_task = std::make_unique<PreparePutTask>(serialNum, lid, wc.getFields()[0], extractor); - auto complete_task = std::make_unique<CompletePutTask>(*prepare_task, immediateCommit, onWriteDone); + auto complete_task = std::make_unique<CompletePutTask>(*prepare_task, onWriteDone); _shared_executor.execute(std::move(prepare_task)); _attributeFieldWriter.executeTask(wc.getExecutorId(), std::move(complete_task)); } else { if (allAttributes || wc.hasStructFieldAttribute()) { - auto putTask = std::make_unique<PutTask>(wc, serialNum, extractor, lid, immediateCommit, allAttributes, - onWriteDone); + auto putTask = std::make_unique<PutTask>(wc, serialNum, extractor, lid, allAttributes, onWriteDone); _attributeFieldWriter.executeTask(wc.getExecutorId(), std::move(putTask)); } } @@ -629,11 +585,10 @@ AttributeWriter::internalPut(SerialNum serialNum, const Document &doc, DocumentI } void -AttributeWriter::internalRemove(SerialNum serialNum, DocumentIdT lid, bool immediateCommit, - OnWriteDoneType onWriteDone) +AttributeWriter::internalRemove(SerialNum serialNum, DocumentIdT lid, OnWriteDoneType onWriteDone) { for (const auto &wc : _writeContexts) { - auto removeTask = std::make_unique<RemoveTask>(wc, serialNum, lid, immediateCommit, onWriteDone); + auto removeTask = std::make_unique<RemoveTask>(wc, serialNum, lid, onWriteDone); _attributeFieldWriter.executeTask(wc.getExecutorId(), std::move(removeTask)); } } @@ -678,50 +633,46 @@ AttributeWriter::getWritableAttribute(const vespalib::string &name) const } void -AttributeWriter::put(SerialNum serialNum, const Document &doc, DocumentIdT lid, - bool immediateCommit, OnWriteDoneType onWriteDone) +AttributeWriter::put(SerialNum serialNum, const Document &doc, DocumentIdT lid, OnWriteDoneType onWriteDone) { LOG(spam, "Handle put: serial(%" PRIu64 "), docId(%s), lid(%u), document(%s)", serialNum, doc.getId().toString().c_str(), lid, doc.toString(true).c_str()); - internalPut(serialNum, doc, lid, immediateCommit, true, onWriteDone); + internalPut(serialNum, doc, lid, true, onWriteDone); } void -AttributeWriter::update(SerialNum serialNum, const Document &doc, DocumentIdT lid, - bool immediateCommit, OnWriteDoneType onWriteDone) +AttributeWriter::update(SerialNum serialNum, const Document &doc, DocumentIdT lid, OnWriteDoneType onWriteDone) { LOG(spam, "Handle update: serial(%" PRIu64 "), docId(%s), lid(%u), document(%s)", serialNum, doc.getId().toString().c_str(), lid, doc.toString(true).c_str()); - internalPut(serialNum, doc, lid, immediateCommit, false, onWriteDone); + internalPut(serialNum, doc, lid, false, onWriteDone); } void -AttributeWriter::remove(SerialNum serialNum, DocumentIdT lid, - bool immediateCommit, OnWriteDoneType onWriteDone) +AttributeWriter::remove(SerialNum serialNum, DocumentIdT lid, OnWriteDoneType onWriteDone) { - internalRemove(serialNum, lid, immediateCommit, onWriteDone); + internalRemove(serialNum, lid, onWriteDone); } void -AttributeWriter::remove(const LidVector &lidsToRemove, SerialNum serialNum, - bool immediateCommit, OnWriteDoneType onWriteDone) +AttributeWriter::remove(const LidVector &lidsToRemove, SerialNum serialNum, OnWriteDoneType onWriteDone) { for (const auto &writeCtx : _writeContexts) { - auto removeTask = std::make_unique<BatchRemoveTask>(writeCtx, serialNum, lidsToRemove, immediateCommit, onWriteDone); + auto removeTask = std::make_unique<BatchRemoveTask>(writeCtx, serialNum, lidsToRemove, onWriteDone); _attributeFieldWriter.executeTask(writeCtx.getExecutorId(), std::move(removeTask)); } } void AttributeWriter::update(SerialNum serialNum, const DocumentUpdate &upd, DocumentIdT lid, - bool immediateCommit, OnWriteDoneType onWriteDone, IFieldUpdateCallback & onUpdate) + OnWriteDoneType onWriteDone, IFieldUpdateCallback & onUpdate) { LOG(debug, "Inspecting update for document %d.", lid); std::vector<std::unique_ptr<BatchUpdateTask>> args; uint32_t numExecutors = _attributeFieldWriter.getNumExecutors(); args.reserve(numExecutors); for (uint32_t i(0); i < numExecutors; i++) { - args.emplace_back(std::make_unique<BatchUpdateTask>(serialNum, lid, immediateCommit)); + args.emplace_back(std::make_unique<BatchUpdateTask>(serialNum, lid)); args.back()->_updates.reserve((2*upd.getUpdates().size())/numExecutors); } diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h index 9e9e8910669..f63a2c6efba 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h +++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h @@ -79,13 +79,12 @@ private: void setupAttriuteMapping(); void buildFieldPaths(const DocumentType &docType, const DataType *dataType); void internalPut(SerialNum serialNum, const Document &doc, DocumentIdT lid, - bool immediateCommit, bool allAttributes, OnWriteDoneType onWriteDone); - void internalRemove(SerialNum serialNum, DocumentIdT lid, - bool immediateCommit, OnWriteDoneType onWriteDone); + bool allAttributes, OnWriteDoneType onWriteDone); + void internalRemove(SerialNum serialNum, DocumentIdT lid, OnWriteDoneType onWriteDone); public: AttributeWriter(proton::IAttributeManager::SP mgr); - ~AttributeWriter(); + ~AttributeWriter() override; /* Only for in tests that add attributes after AttributeWriter construction. */ @@ -94,16 +93,12 @@ public: */ std::vector<search::AttributeVector *> getWritableAttributes() const override; search::AttributeVector *getWritableAttribute(const vespalib::string &name) const override; - void put(SerialNum serialNum, const Document &doc, DocumentIdT lid, - bool immediateCommit, OnWriteDoneType onWriteDone) override; - void remove(SerialNum serialNum, DocumentIdT lid, - bool immediateCommit, OnWriteDoneType onWriteDone) override; - void remove(const LidVector &lidVector, SerialNum serialNum, - bool immediateCommit, OnWriteDoneType onWriteDone) override; + void put(SerialNum serialNum, const Document &doc, DocumentIdT lid, OnWriteDoneType onWriteDone) override; + void remove(SerialNum serialNum, DocumentIdT lid, OnWriteDoneType onWriteDone) override; + void remove(const LidVector &lidVector, SerialNum serialNum, OnWriteDoneType onWriteDone) override; void update(SerialNum serialNum, const DocumentUpdate &upd, DocumentIdT lid, - bool immediateCommit, OnWriteDoneType onWriteDone, IFieldUpdateCallback & onUpdate) override; - void update(SerialNum serialNum, const Document &doc, DocumentIdT lid, - bool immediateCommit, OnWriteDoneType onWriteDone) override; + OnWriteDoneType onWriteDone, IFieldUpdateCallback & onUpdate) override; + void update(SerialNum serialNum, const Document &doc, DocumentIdT lid, OnWriteDoneType onWriteDone) override; void heartBeat(SerialNum serialNum) override; void compactLidSpace(uint32_t wantedLidLimit, SerialNum serialNum) override; const proton::IAttributeManager::SP &getAttributeManager() const override { diff --git a/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.cpp b/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.cpp index 3b1269b031c..ffdfdbc4332 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.cpp +++ b/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.cpp @@ -233,7 +233,7 @@ FilterAttributeManager::setImportedAttributes(std::unique_ptr<ImportedAttributes const ImportedAttributesRepo * FilterAttributeManager::getImportedAttributes() const { - throw vespalib::IllegalArgumentException("Not implemented"); + return nullptr; } std::shared_ptr<search::attribute::ReadableAttributeVector> 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 99b5728fd3a..789a8077cba 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_writer.h +++ b/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_writer.h @@ -33,27 +33,23 @@ public: typedef document::Document Document; using OnWriteDoneType = const std::shared_ptr<search::IDestructorCallback> &; - virtual ~IAttributeWriter() {} + virtual ~IAttributeWriter() = default; virtual std::vector<search::AttributeVector *> getWritableAttributes() const = 0; virtual search::AttributeVector *getWritableAttribute(const vespalib::string &attrName) const = 0; - virtual void put(SerialNum serialNum, const Document &doc, DocumentIdT lid, - bool immediateCommit, OnWriteDoneType onWriteDone) = 0; - virtual void remove(SerialNum serialNum, DocumentIdT lid, bool immediateCommit, - OnWriteDoneType onWriteDone) = 0; - virtual void remove(const LidVector &lidVector, SerialNum serialNum, - bool immediateCommit, OnWriteDoneType onWriteDone) = 0; + virtual void put(SerialNum serialNum, const Document &doc, DocumentIdT lid, OnWriteDoneType onWriteDone) = 0; + virtual void remove(SerialNum serialNum, DocumentIdT lid, OnWriteDoneType onWriteDone) = 0; + virtual void remove(const LidVector &lidVector, SerialNum serialNum, OnWriteDoneType onWriteDone) = 0; /** * Update the underlying attributes based on the content of the given DocumentUpdate. * The OnWriteDoneType instance should ensure the lifetime of the given DocumentUpdate instance. */ virtual void update(SerialNum serialNum, const DocumentUpdate &upd, DocumentIdT lid, - bool immediateCommit, OnWriteDoneType onWriteDone, IFieldUpdateCallback & onUpdate) = 0; + OnWriteDoneType onWriteDone, IFieldUpdateCallback & onUpdate) = 0; /* * Update the underlying struct field attributes based on updated document. */ - virtual void update(SerialNum serialNum, const Document &doc, DocumentIdT lid, - bool immediateCommit, OnWriteDoneType onWriteDone) = 0; + virtual void update(SerialNum serialNum, const Document &doc, DocumentIdT lid, OnWriteDoneType onWriteDone) = 0; virtual void heartBeat(SerialNum serialNum) = 0; /** * Compact the lid space of the underlying attribute vectors. diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.cpp index e547f3556be..7fab995dfb9 100644 --- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.cpp +++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.cpp @@ -31,7 +31,6 @@ DocumentMetaStoreAttribute::DocumentMetaStoreAttribute(const vespalib::string &n { } -DocumentMetaStoreAttribute::~DocumentMetaStoreAttribute() -{ } +DocumentMetaStoreAttribute::~DocumentMetaStoreAttribute() = default; } diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.h index 5b286907fb8..721aa8fe126 100644 --- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.h +++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.h @@ -14,22 +14,20 @@ namespace proton { class DocumentMetaStoreAttribute : public search::NotImplementedAttribute { protected: - virtual void notImplemented() const override __attribute__((noinline)); + void notImplemented() const override __attribute__((noinline)); public: DocumentMetaStoreAttribute(const vespalib::string &name=getFixedName()); - virtual ~DocumentMetaStoreAttribute(); + ~DocumentMetaStoreAttribute() override; static const vespalib::string &getFixedName(); // Implements IAttributeVector - virtual size_t - getFixedWidth() const override - { + size_t getFixedWidth() const override { return document::GlobalId::LENGTH; } - virtual void onCommit() override {} + void onCommit() 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 eec58ed53dc..52b4d869ce8 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 @@ -20,46 +20,39 @@ namespace proton { * Otherwise we can drop it and ack the operation right away. */ void -FastAccessFeedView::putAttributes(SerialNum serialNum, search::DocumentIdT lid, const Document &doc, - bool immediateCommit, OnPutDoneType onWriteDone) +FastAccessFeedView::putAttributes(SerialNum serialNum, search::DocumentIdT lid, const Document &doc, OnPutDoneType onWriteDone) { - _attributeWriter->put(serialNum, doc, lid, immediateCommit, onWriteDone); - if (immediateCommit && onWriteDone) { - onWriteDone->registerPutLid(&_docIdLimit); - } + _attributeWriter->put(serialNum, doc, lid, onWriteDone); } void FastAccessFeedView::updateAttributes(SerialNum serialNum, search::DocumentIdT lid, const DocumentUpdate &upd, - bool immediateCommit, OnOperationDoneType onWriteDone, IFieldUpdateCallback & onUpdate) + OnOperationDoneType onWriteDone, IFieldUpdateCallback & onUpdate) { - _attributeWriter->update(serialNum, upd, lid, immediateCommit, onWriteDone, onUpdate); + _attributeWriter->update(serialNum, upd, lid, onWriteDone, onUpdate); } void -FastAccessFeedView::updateAttributes(SerialNum serialNum, Lid lid, FutureDoc futureDoc, - bool immediateCommit, OnOperationDoneType onWriteDone) +FastAccessFeedView::updateAttributes(SerialNum serialNum, Lid lid, FutureDoc futureDoc, OnOperationDoneType onWriteDone) { if (_attributeWriter->hasStructFieldAttribute()) { const std::unique_ptr<const Document> & doc = futureDoc.get(); if (doc) { - _attributeWriter->update(serialNum, *doc, lid, immediateCommit, onWriteDone); + _attributeWriter->update(serialNum, *doc, lid, onWriteDone); } } } void -FastAccessFeedView::removeAttributes(SerialNum serialNum, search::DocumentIdT lid, - bool immediateCommit, OnRemoveDoneType onWriteDone) +FastAccessFeedView::removeAttributes(SerialNum serialNum, search::DocumentIdT lid, OnRemoveDoneType onWriteDone) { - _attributeWriter->remove(serialNum, lid, immediateCommit, onWriteDone); + _attributeWriter->remove(serialNum, lid, onWriteDone); } void -FastAccessFeedView::removeAttributes(SerialNum serialNum, const LidVector &lidsToRemove, - bool immediateCommit, OnWriteDoneType onWriteDone) +FastAccessFeedView::removeAttributes(SerialNum serialNum, const LidVector &lidsToRemove, OnWriteDoneType onWriteDone) { - _attributeWriter->remove(lidsToRemove, serialNum, immediateCommit, onWriteDone); + _attributeWriter->remove(lidsToRemove, serialNum, onWriteDone); } void 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 08f11869b08..e0823be3e43 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 @@ -36,18 +36,14 @@ private: const IAttributeWriter::SP _attributeWriter; DocIdLimit &_docIdLimit; - void putAttributes(SerialNum serialNum, search::DocumentIdT lid, const Document &doc, - bool immediateCommit, OnPutDoneType onWriteDone) override; + void putAttributes(SerialNum serialNum, search::DocumentIdT lid, const Document &doc, OnPutDoneType onWriteDone) override; void updateAttributes(SerialNum serialNum, search::DocumentIdT lid, const document::DocumentUpdate &upd, - bool immediateCommit, OnOperationDoneType onWriteDone, IFieldUpdateCallback & onUpdate) override; - void updateAttributes(SerialNum serialNum, Lid lid, FutureDoc doc, - bool immediateCommit, OnOperationDoneType onWriteDone) override; - void removeAttributes(SerialNum serialNum, search::DocumentIdT lid, - bool immediateCommit, OnRemoveDoneType onWriteDone) override; - - void removeAttributes(SerialNum serialNum, const LidVector &lidsToRemove, - bool immediateCommit, OnWriteDoneType onWriteDone) override; + OnOperationDoneType onWriteDone, IFieldUpdateCallback & onUpdate) override; + void updateAttributes(SerialNum serialNum, Lid lid, FutureDoc doc, OnOperationDoneType onWriteDone) override; + void removeAttributes(SerialNum serialNum, search::DocumentIdT lid, OnRemoveDoneType onWriteDone) override; + + void removeAttributes(SerialNum serialNum, const LidVector &lidsToRemove, OnWriteDoneType onWriteDone) override; void heartBeatAttributes(SerialNum serialNum) override; 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 360cac6e2ee..ebef7b4b6d4 100644 --- a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp @@ -59,46 +59,41 @@ SearchableFeedView::sync() void SearchableFeedView::putIndexedFields(SerialNum serialNum, search::DocumentIdT lid, const DocumentSP &newDoc, - bool immediateCommit, OnOperationDoneType onWriteDone) + OnOperationDoneType onWriteDone) { if (!hasIndexedFields()) { return; } _writeService.index().execute( makeLambdaTask([=] { - performIndexPut(serialNum, lid, newDoc, immediateCommit, onWriteDone); + performIndexPut(serialNum, lid, newDoc, onWriteDone); })); } void -SearchableFeedView::performIndexPut(SerialNum serialNum, search::DocumentIdT lid, const Document &doc, - bool immediateCommit, OnOperationDoneType onWriteDone) +SearchableFeedView::performIndexPut(SerialNum serialNum, search::DocumentIdT lid, const Document &doc, OnOperationDoneType onWriteDone) { + (void) onWriteDone; assert(_writeService.index().isCurrentThread()); VLOG(getDebugLevel(lid, doc.getId()), "database(%s): performIndexPut: serialNum(%" PRIu64 "), docId(%s), lid(%d)", _params._docTypeName.toString().c_str(), serialNum, doc.getId().toString().c_str(), lid); _indexWriter->put(serialNum, doc, lid); - if (immediateCommit) { - _indexWriter->commit(serialNum, onWriteDone); - } } void -SearchableFeedView::performIndexPut(SerialNum serialNum, search::DocumentIdT lid, const DocumentSP &doc, - bool immediateCommit, OnOperationDoneType onWriteDone) +SearchableFeedView::performIndexPut(SerialNum serialNum, search::DocumentIdT lid, const DocumentSP &doc, OnOperationDoneType onWriteDone) { - performIndexPut(serialNum, lid, *doc, immediateCommit, onWriteDone); + performIndexPut(serialNum, lid, *doc, onWriteDone); } void -SearchableFeedView::performIndexPut(SerialNum serialNum, search::DocumentIdT lid, FutureDoc futureDoc, - bool immediateCommit, OnOperationDoneType onWriteDone) +SearchableFeedView::performIndexPut(SerialNum serialNum, search::DocumentIdT lid, FutureDoc futureDoc, OnOperationDoneType onWriteDone) { const auto &doc = futureDoc.get(); if (doc) { - performIndexPut(serialNum, lid, *doc, immediateCommit, onWriteDone); + performIndexPut(serialNum, lid, *doc, onWriteDone); } } @@ -115,49 +110,44 @@ SearchableFeedView::performIndexHeartBeat(SerialNum serialNum) } void -SearchableFeedView::updateIndexedFields(SerialNum serialNum, search::DocumentIdT lid, FutureDoc futureDoc, - bool immediateCommit, OnOperationDoneType onWriteDone) +SearchableFeedView::updateIndexedFields(SerialNum serialNum, search::DocumentIdT lid, FutureDoc futureDoc, OnOperationDoneType onWriteDone) { _writeService.index().execute( makeLambdaTask([serialNum, lid, futureDoc = std::move(futureDoc), - immediateCommit, onWriteDone = std::move(onWriteDone), this]() mutable { - performIndexPut(serialNum, lid, std::move(futureDoc), immediateCommit, std::move(onWriteDone)); + onWriteDone = std::move(onWriteDone), this]() mutable { + performIndexPut(serialNum, lid, std::move(futureDoc), std::move(onWriteDone)); })); } void -SearchableFeedView::removeIndexedFields(SerialNum serialNum, search::DocumentIdT lid, - bool immediateCommit, OnRemoveDoneType onWriteDone) +SearchableFeedView::removeIndexedFields(SerialNum serialNum, search::DocumentIdT lid, OnRemoveDoneType onWriteDone) { if (!hasIndexedFields()) { return; } _writeService.index().execute( makeLambdaTask([=]() { - performIndexRemove(serialNum, lid, immediateCommit, onWriteDone); + performIndexRemove(serialNum, lid, onWriteDone); })); } void -SearchableFeedView::performIndexRemove(SerialNum serialNum, search::DocumentIdT lid, - bool immediateCommit, OnRemoveDoneType onWriteDone) +SearchableFeedView::performIndexRemove(SerialNum serialNum, search::DocumentIdT lid, OnRemoveDoneType onWriteDone) { + (void) onWriteDone; assert(_writeService.index().isCurrentThread()); VLOG(getDebugLevel(lid, nullptr), "database(%s): performIndexRemove: serialNum(%" PRIu64 "), lid(%d)", _params._docTypeName.toString().c_str(), serialNum, lid); _indexWriter->remove(serialNum, lid); - if (immediateCommit) { - _indexWriter->commit(serialNum, onWriteDone); - } } void -SearchableFeedView::performIndexRemove(SerialNum serialNum, const LidVector &lidsToRemove, - bool immediateCommit, OnWriteDoneType onWriteDone) +SearchableFeedView::performIndexRemove(SerialNum serialNum, const LidVector &lidsToRemove, OnWriteDoneType onWriteDone) { + (void) onWriteDone; assert(_writeService.index().isCurrentThread()); for (const auto lid : lidsToRemove) { VLOG(getDebugLevel(lid, nullptr), @@ -166,21 +156,18 @@ SearchableFeedView::performIndexRemove(SerialNum serialNum, const LidVector &lid _indexWriter->remove(serialNum, lid); } - if (immediateCommit) { - _indexWriter->commit(serialNum, onWriteDone); - } } void SearchableFeedView::removeIndexedFields(SerialNum serialNum, const LidVector &lidsToRemove, - bool immediateCommit, OnWriteDoneType onWriteDone) + OnWriteDoneType onWriteDone) { if (!hasIndexedFields()) return; _writeService.index().execute( makeLambdaTask([=]() { - performIndexRemove(serialNum, lidsToRemove, immediateCommit, onWriteDone); + performIndexRemove(serialNum, lidsToRemove, onWriteDone); })); } 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 3265bc0ae70..944d383e06d 100644 --- a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h +++ b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h @@ -34,38 +34,21 @@ private: bool hasIndexedFields() const { return _hasIndexedFields; } - void performIndexPut(SerialNum serialNum, search::DocumentIdT lid, const Document &doc, - bool immediateCommit, OnOperationDoneType onWriteDone); - - void performIndexPut(SerialNum serialNum, search::DocumentIdT lid, const DocumentSP &doc, - bool immediateCommit, OnOperationDoneType onWriteDone); - void performIndexPut(SerialNum serialNum, search::DocumentIdT lid, FutureDoc doc, - bool immediateCommit, OnOperationDoneType onWriteDone); - - void performIndexRemove(SerialNum serialNum, search::DocumentIdT lid, - bool immediateCommit, OnRemoveDoneType onWriteDone); - - void performIndexRemove(SerialNum serialNum, const LidVector &lidsToRemove, - bool immediateCommit, OnWriteDoneType onWriteDone); - + void performIndexPut(SerialNum serialNum, search::DocumentIdT lid, const Document &doc, OnOperationDoneType onWriteDone); + void performIndexPut(SerialNum serialNum, search::DocumentIdT lid, const DocumentSP &doc, OnOperationDoneType onWriteDone); + void performIndexPut(SerialNum serialNum, search::DocumentIdT lid, FutureDoc doc, OnOperationDoneType onWriteDone); + void performIndexRemove(SerialNum serialNum, search::DocumentIdT lid, OnRemoveDoneType onWriteDone); + void performIndexRemove(SerialNum serialNum, const LidVector &lidsToRemove, OnWriteDoneType onWriteDone); void performIndexHeartBeat(SerialNum serialNum); - void internalDeleteBucket(const DeleteBucketOperation &delOp) override; void performSync(); void heartBeatIndexedFields(SerialNum serialNum) override; - void putIndexedFields(SerialNum serialNum, search::DocumentIdT lid, const DocumentSP &newDoc, - bool immediateCommit, OnOperationDoneType onWriteDone) override; - - void updateIndexedFields(SerialNum serialNum, search::DocumentIdT lid, FutureDoc newDoc, - bool immediateCommit, OnOperationDoneType onWriteDone) override; - - void removeIndexedFields(SerialNum serialNum, search::DocumentIdT lid, - bool immediateCommit, OnRemoveDoneType onWriteDone) override; - - void removeIndexedFields(SerialNum serialNum, const LidVector &lidsToRemove, - bool immediateCommit, OnWriteDoneType onWriteDone) 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; + void removeIndexedFields(SerialNum serialNum, search::DocumentIdT lid, OnRemoveDoneType onWriteDone) override; + void removeIndexedFields(SerialNum serialNum, const LidVector &lidsToRemove, OnWriteDoneType onWriteDone) override; void performIndexForceCommit(SerialNum serialNum, OnForceCommitDoneType onCommitDone); void internalForceCommit(SerialNum serialNum, OnForceCommitDoneType onCommitDone) override; diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp index 3db55cf6755..186c321d920 100644 --- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp @@ -288,10 +288,10 @@ StoreOnlyFeedView::considerEarlyAck(FeedToken & token) } void -StoreOnlyFeedView::putAttributes(SerialNum, Lid, const Document &, bool, OnPutDoneType) {} +StoreOnlyFeedView::putAttributes(SerialNum, Lid, const Document &, OnPutDoneType) {} void -StoreOnlyFeedView::putIndexedFields(SerialNum, Lid, const Document::SP &, bool, OnOperationDoneType) {} +StoreOnlyFeedView::putIndexedFields(SerialNum, Lid, const Document::SP &, OnOperationDoneType) {} void StoreOnlyFeedView::preparePut(PutOperation &putOp) @@ -334,15 +334,14 @@ StoreOnlyFeedView::internalPut(FeedToken token, const PutOperation &putOp) bool docAlreadyExists = putOp.getValidPrevDbdId(_params._subDbId); if (putOp.getValidDbdId(_params._subDbId)) { - bool immediateCommit = needImmediateCommit(); const document::GlobalId &gid = docId.getGlobalId(); std::shared_ptr<PutDoneContext> onWriteDone = createPutDoneContext(std::move(token), std::move(uncommitted), _gidToLidChangeHandler, doc, gid, putOp.getLid(), serialNum, putOp.changedDbdId() && useDocumentMetaStore(serialNum)); putSummary(serialNum, putOp.getLid(), doc, onWriteDone); - putAttributes(serialNum, putOp.getLid(), *doc, immediateCommit, onWriteDone); - putIndexedFields(serialNum, putOp.getLid(), doc, immediateCommit, onWriteDone); + putAttributes(serialNum, putOp.getLid(), *doc, onWriteDone); + putIndexedFields(serialNum, putOp.getLid(), doc, onWriteDone); } if (docAlreadyExists && putOp.changedDbdId()) { assert(!putOp.getValidDbdId(_params._subDbId)); @@ -369,7 +368,7 @@ void StoreOnlyFeedView::heartBeatAttributes(SerialNum ) {} void -StoreOnlyFeedView::updateAttributes(SerialNum, Lid, const DocumentUpdate & upd, bool, +StoreOnlyFeedView::updateAttributes(SerialNum, Lid, const DocumentUpdate & upd, OnOperationDoneType, IFieldUpdateCallback & onUpdate) { for (const auto & fieldUpdate : upd.getUpdates()) { @@ -378,12 +377,12 @@ StoreOnlyFeedView::updateAttributes(SerialNum, Lid, const DocumentUpdate & upd, } void -StoreOnlyFeedView::updateAttributes(SerialNum, Lid, FutureDoc, bool, OnOperationDoneType) +StoreOnlyFeedView::updateAttributes(SerialNum, Lid, FutureDoc, OnOperationDoneType) { } void -StoreOnlyFeedView::updateIndexedFields(SerialNum, Lid, FutureDoc, bool, OnOperationDoneType) +StoreOnlyFeedView::updateIndexedFields(SerialNum, Lid, FutureDoc, OnOperationDoneType) { } @@ -495,10 +494,9 @@ StoreOnlyFeedView::internalUpdate(FeedToken token, const UpdateOperation &updOp) auto uncommitted = get_pending_lid_token(updOp); considerEarlyAck(token); - bool immediateCommit = needImmediateCommit(); auto onWriteDone = createUpdateDoneContext(std::move(token), std::move(uncommitted), updOp.getUpdate()); UpdateScope updateScope(*_schema, upd); - updateAttributes(serialNum, lid, upd, immediateCommit, onWriteDone, updateScope); + updateAttributes(serialNum, lid, upd, onWriteDone, updateScope); if (updateScope.hasIndexOrNonAttributeFields()) { PromisedDoc promisedDoc; @@ -506,7 +504,7 @@ StoreOnlyFeedView::internalUpdate(FeedToken token, const UpdateOperation &updOp) onWriteDone->setDocument(futureDoc); _pendingLidsForDocStore.waitComplete(lid); if (updateScope._indexedFields) { - updateIndexedFields(serialNum, lid, futureDoc, immediateCommit, onWriteDone); + updateIndexedFields(serialNum, lid, futureDoc, onWriteDone); } PromisedStream promisedStream; FutureStream futureStream = promisedStream.get_future(); @@ -522,7 +520,7 @@ StoreOnlyFeedView::internalUpdate(FeedToken token, const UpdateOperation &updOp) makeUpdatedDocument(serialNum, lid, *upd, onWriteDone, std::move(promisedDoc), std::move(promisedStream)); })); - updateAttributes(serialNum, lid, std::move(futureDoc), immediateCommit, onWriteDone); + updateAttributes(serialNum, lid, std::move(futureDoc), onWriteDone); } } @@ -576,10 +574,10 @@ StoreOnlyFeedView::lookupDocId(const DocumentId &docId, Lid &lid) const } void -StoreOnlyFeedView::removeAttributes(SerialNum, Lid, bool, OnRemoveDoneType) {} +StoreOnlyFeedView::removeAttributes(SerialNum, Lid, OnRemoveDoneType) {} void -StoreOnlyFeedView::removeIndexedFields(SerialNum, Lid, bool, OnRemoveDoneType) {} +StoreOnlyFeedView::removeIndexedFields(SerialNum, Lid, OnRemoveDoneType) {} void StoreOnlyFeedView::prepareRemove(RemoveOperation &rmOp) @@ -666,9 +664,8 @@ StoreOnlyFeedView::internalRemove(FeedToken token, IPendingLidTracker::Token unc std::move(pendingNotifyRemoveDone), (explicitReuseLid ? lid : 0u), std::move(moveDoneCtx)); removeSummary(serialNum, lid, onWriteDone); - bool immediateCommit = needImmediateCommit(); - removeAttributes(serialNum, lid, immediateCommit, onWriteDone); - removeIndexedFields(serialNum, lid, immediateCommit, onWriteDone); + removeAttributes(serialNum, lid, onWriteDone); + removeIndexedFields(serialNum, lid, onWriteDone); } PendingNotifyRemoveDone @@ -699,14 +696,13 @@ StoreOnlyFeedView::adjustMetaStore(const DocumentOperation &op, const GlobalId & } void -StoreOnlyFeedView::removeAttributes(SerialNum, const LidVector &, bool , OnWriteDoneType ) {} +StoreOnlyFeedView::removeAttributes(SerialNum, const LidVector &, OnWriteDoneType ) {} void -StoreOnlyFeedView::removeIndexedFields(SerialNum , const LidVector &, bool , OnWriteDoneType ) {} +StoreOnlyFeedView::removeIndexedFields(SerialNum , const LidVector &, OnWriteDoneType ) {} size_t -StoreOnlyFeedView::removeDocuments(const RemoveDocumentsOperation &op, bool remove_index_and_attributes, - bool immediateCommit) +StoreOnlyFeedView::removeDocuments(const RemoveDocumentsOperation &op, bool remove_index_and_attributes) { const SerialNum serialNum = op.getSerialNum(); const LidVectorContext::SP &ctx = op.getLidsToRemove(_params._subDbId); @@ -744,8 +740,8 @@ StoreOnlyFeedView::removeDocuments(const RemoveDocumentsOperation &op, bool remo onWriteDone = std::make_shared<RemoveBatchDoneContext>(_writeService.master(), std::move(removeBatchDoneTask), _gidToLidChangeHandler, std::move(gidsToRemove), serialNum); if (remove_index_and_attributes) { - removeIndexedFields(serialNum, lidsToRemove, immediateCommit, onWriteDone); - removeAttributes(serialNum, lidsToRemove, immediateCommit, onWriteDone); + removeIndexedFields(serialNum, lidsToRemove, onWriteDone); + removeAttributes(serialNum, lidsToRemove, onWriteDone); } if (useDocumentStore(serialNum + 1)) { for (const auto &lid : lidsToRemove) { @@ -779,8 +775,7 @@ StoreOnlyFeedView::handleDeleteBucket(const DeleteBucketOperation &delOp) void StoreOnlyFeedView::internalDeleteBucket(const DeleteBucketOperation &delOp) { - bool immediateCommit = needImmediateCommit(); - size_t rm_count = removeDocuments(delOp, true, immediateCommit); + size_t rm_count = removeDocuments(delOp, true); LOG(debug, "internalDeleteBucket(): docType(%s), bucket(%s), lidsToRemove(%zu)", _params._docTypeName.toString().c_str(), delOp.getBucketId().toString().c_str(), rm_count); } @@ -818,15 +813,14 @@ StoreOnlyFeedView::handleMove(const MoveOperation &moveOp, IDestructorCallback:: PendingNotifyRemoveDone pendingNotifyRemoveDone = adjustMetaStore(moveOp, docId.getGlobalId(), docId); bool docAlreadyExists = moveOp.getValidPrevDbdId(_params._subDbId); if (moveOp.getValidDbdId(_params._subDbId)) { - bool immediateCommit = needImmediateCommit(); const document::GlobalId &gid = docId.getGlobalId(); std::shared_ptr<PutDoneContext> onWriteDone = createPutDoneContext(FeedToken(), _pendingLidsForCommit->produce(moveOp.getLid()), _gidToLidChangeHandler, doc, gid, moveOp.getLid(), serialNum, moveOp.changedDbdId() && useDocumentMetaStore(serialNum), doneCtx); putSummary(serialNum, moveOp.getLid(), doc, onWriteDone); - putAttributes(serialNum, moveOp.getLid(), *doc, immediateCommit, onWriteDone); - putIndexedFields(serialNum, moveOp.getLid(), doc, immediateCommit, onWriteDone); + putAttributes(serialNum, moveOp.getLid(), *doc, onWriteDone); + putIndexedFields(serialNum, moveOp.getLid(), doc, onWriteDone); } if (docAlreadyExists && moveOp.changedDbdId()) { internalRemove(FeedToken(), _pendingLidsForCommit->produce(moveOp.getPrevLid()), serialNum, std::move(pendingNotifyRemoveDone), moveOp.getPrevLid(), doneCtx); @@ -853,7 +847,7 @@ handlePruneRemovedDocuments(const PruneRemovedDocumentsOperation &pruneOp) { assert(_params._subDbType == SubDbType::REMOVED); assert(pruneOp.getSubDbId() == _params._subDbId); - uint32_t rm_count = removeDocuments(pruneOp, false, false); + uint32_t rm_count = removeDocuments(pruneOp, false); LOG(debug, "MinimalFeedView::handlePruneRemovedDocuments called, doctype(%s) %u lids pruned, limit %u", _params._docTypeName.toString().c_str(), rm_count, diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h index 167b246ec0b..da1459d521c 100644 --- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h +++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h @@ -181,8 +181,7 @@ private: // Removes documents from meta store and document store. // returns the number of documents removed. - size_t removeDocuments(const RemoveDocumentsOperation &op, bool remove_index_and_attribute_fields, - bool immediateCommit); + size_t removeDocuments(const RemoveDocumentsOperation &op, bool remove_index_and_attribute_fields); void internalRemove(FeedToken token, IPendingLidTracker::Token uncommitted, SerialNum serialNum, PendingNotifyRemoveDone &&pendingNotifyRemoveDone, @@ -202,30 +201,20 @@ protected: virtual void heartBeatAttributes(SerialNum serialNum); private: - virtual void putAttributes(SerialNum serialNum, Lid lid, const Document &doc, - bool immediateCommit, OnPutDoneType onWriteDone); - - virtual void putIndexedFields(SerialNum serialNum, Lid lid, const DocumentSP &newDoc, - bool immediateCommit, OnOperationDoneType onWriteDone); + virtual void putAttributes(SerialNum serialNum, Lid lid, const Document &doc, OnPutDoneType onWriteDone); + virtual void putIndexedFields(SerialNum serialNum, Lid lid, const DocumentSP &newDoc, OnOperationDoneType onWriteDone); virtual void updateAttributes(SerialNum serialNum, Lid lid, const DocumentUpdate &upd, - bool immediateCommit, OnOperationDoneType onWriteDone, IFieldUpdateCallback & onUpdate); - - virtual void updateAttributes(SerialNum serialNum, Lid lid, FutureDoc doc, - bool immediateCommit, OnOperationDoneType onWriteDone); + OnOperationDoneType onWriteDone, IFieldUpdateCallback & onUpdate); - virtual void updateIndexedFields(SerialNum serialNum, Lid lid, FutureDoc doc, - bool immediateCommit, OnOperationDoneType onWriteDone); - - virtual void removeAttributes(SerialNum serialNum, Lid lid, bool immediateCommit, OnRemoveDoneType onWriteDone); - virtual void removeIndexedFields(SerialNum serialNum, Lid lid, bool immediateCommit, OnRemoveDoneType onWriteDone); + virtual void updateAttributes(SerialNum serialNum, Lid lid, FutureDoc doc, OnOperationDoneType onWriteDone); + virtual void updateIndexedFields(SerialNum serialNum, Lid lid, FutureDoc doc, OnOperationDoneType onWriteDone); + virtual void removeAttributes(SerialNum serialNum, Lid lid, OnRemoveDoneType onWriteDone); + virtual void removeIndexedFields(SerialNum serialNum, Lid lid, OnRemoveDoneType onWriteDone); protected: - virtual void removeAttributes(SerialNum serialNum, const LidVector &lidsToRemove, - bool immediateCommit, OnWriteDoneType onWriteDone); - - virtual void removeIndexedFields(SerialNum serialNum, const LidVector &lidsToRemove, - bool immediateCommit, OnWriteDoneType onWriteDone); + virtual void removeAttributes(SerialNum serialNum, const LidVector &lidsToRemove, OnWriteDoneType onWriteDone); + virtual void removeIndexedFields(SerialNum serialNum, const LidVector &lidsToRemove, OnWriteDoneType onWriteDone); virtual void internalForceCommit(SerialNum serialNum, OnForceCommitDoneType onCommitDone); public: StoreOnlyFeedView(const Context &ctx, const PersistentParams ¶ms); diff --git a/storage/src/vespa/storage/bucketdb/btree_lockable_map.h b/storage/src/vespa/storage/bucketdb/btree_lockable_map.h index ea3a7838d43..6e42a721732 100644 --- a/storage/src/vespa/storage/bucketdb/btree_lockable_map.h +++ b/storage/src/vespa/storage/bucketdb/btree_lockable_map.h @@ -37,7 +37,7 @@ public: using BucketId = document::BucketId; BTreeLockableMap(); - ~BTreeLockableMap(); + ~BTreeLockableMap() override; bool operator==(const BTreeLockableMap& other) const; bool operator!=(const BTreeLockableMap& other) const { |