diff options
author | Tor Egge <Tor.Egge@online.no> | 2021-11-10 14:19:55 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2021-11-10 14:53:14 +0100 |
commit | 634dc8044870d056eb4dfaae7b4f6b7e7f81649c (patch) | |
tree | 268462246a620418cf5e635480afb5c32448558f /searchcore | |
parent | 8dcbd10ee9d81cd546b8cfffef42e0f4198ed172 (diff) |
Keep write context live until inverter thread has completed invert task.
Diffstat (limited to 'searchcore')
13 files changed, 23 insertions, 23 deletions
diff --git a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp index 1b4848f9c8b..97faa81b48a 100644 --- a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp +++ b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp @@ -144,7 +144,7 @@ struct MyIndexWriter : public test::MockIndexWriter _wantedLidLimit(0), _tracer(tracer) {} - void put(SerialNum serialNum, const document::Document &doc, const DocumentIdT lid) override { + void put(SerialNum serialNum, const document::Document &doc, const DocumentIdT lid, OnWriteDoneType) override { (void) doc; _tracer.tracePut(indexAdapterTypeName, serialNum, lid); } diff --git a/searchcore/src/tests/proton/feed_and_search/feed_and_search.cpp b/searchcore/src/tests/proton/feed_and_search/feed_and_search.cpp index 8314fa6bfb8..855b31310a3 100644 --- a/searchcore/src/tests/proton/feed_and_search/feed_and_search.cpp +++ b/searchcore/src/tests/proton/feed_and_search/feed_and_search.cpp @@ -168,10 +168,10 @@ void Test::requireThatMemoryIndexCanBeDumpedAndSearched() { DocBuilder doc_builder(schema); Document::UP doc = buildDocument(doc_builder, doc_id1, word1); - memory_index.insertDocument(doc_id1, *doc.get()); + memory_index.insertDocument(doc_id1, *doc, {}); - doc = buildDocument(doc_builder, doc_id2, word2); - memory_index.insertDocument(doc_id2, *doc.get()); + auto doc2 = buildDocument(doc_builder, doc_id2, word2); + memory_index.insertDocument(doc_id2, *doc2, {}); commit_memory_index_and_wait(memory_index); testSearch(memory_index, word1, doc_id1); diff --git a/searchcore/src/tests/proton/index/fusionrunner_test.cpp b/searchcore/src/tests/proton/index/fusionrunner_test.cpp index 736bc4bae96..ae85211fe24 100644 --- a/searchcore/src/tests/proton/index/fusionrunner_test.cpp +++ b/searchcore/src/tests/proton/index/fusionrunner_test.cpp @@ -157,7 +157,7 @@ Document::UP buildDocument(DocBuilder & doc_builder, int id, const string &word) void addDocument(DocBuilder & doc_builder, MemoryIndex &index, ISourceSelector &selector, uint8_t index_id, uint32_t docid, const string &word) { Document::UP doc = buildDocument(doc_builder, docid, word); - index.insertDocument(docid, *doc); + index.insertDocument(docid, *doc, {}); vespalib::Gate gate; index.commit(std::make_shared<vespalib::GateCallback>(gate)); selector.setSource(docid, index_id); diff --git a/searchcore/src/tests/proton/index/index_writer/index_writer_test.cpp b/searchcore/src/tests/proton/index/index_writer/index_writer_test.cpp index ac17c17892c..62a691d72e6 100644 --- a/searchcore/src/tests/proton/index/index_writer/index_writer_test.cpp +++ b/searchcore/src/tests/proton/index/index_writer/index_writer_test.cpp @@ -49,7 +49,7 @@ struct MyIndexManager : public test::MockIndexManager return toString(removes[lid]); } // Implements IIndexManager - void putDocument(uint32_t lid, const Document &, SerialNum serialNum) override { + void putDocument(uint32_t lid, const Document &, SerialNum serialNum, OnWriteDoneType) override { puts[lid].push_back(serialNum); } void removeDocuments(LidVector lids, SerialNum serialNum) override { @@ -94,7 +94,7 @@ struct Fixture return builder.endDocument(); } void put(SerialNum serialNum, const search::DocumentIdT lid) { - iw.put(serialNum, *dummyDoc, lid); + iw.put(serialNum, *dummyDoc, lid, {}); iw.commit(serialNum, std::shared_ptr<IDestructorCallback>()); } void remove(SerialNum serialNum, const search::DocumentIdT lid) { diff --git a/searchcore/src/tests/proton/index/indexmanager_test.cpp b/searchcore/src/tests/proton/index/indexmanager_test.cpp index 8e41323e461..4c442d38443 100644 --- a/searchcore/src/tests/proton/index/indexmanager_test.cpp +++ b/searchcore/src/tests/proton/index/indexmanager_test.cpp @@ -192,7 +192,7 @@ IndexManagerTest::addDocument(uint32_t id) Document::UP doc = buildDocument(_builder, id, "foo"); SerialNum serialNum = ++_serial_num; vespalib::Gate gate; - runAsIndex([&]() { _index_manager->putDocument(id, *doc, serialNum); + runAsIndex([&]() { _index_manager->putDocument(id, *doc, serialNum, {}); _index_manager->commit(serialNum, std::make_shared<vespalib::GateCallback>(gate)); }); gate.await(); @@ -416,7 +416,7 @@ TEST_F(IndexManagerTest, require_that_flush_stats_are_calculated) EXPECT_EQ(0u, _index_manager->getMaintainer().getFlushStats().cpu_time_required); Document::UP doc = addDocument(docid); - inverter.invertDocument(docid, *doc); + inverter.invertDocument(docid, *doc, {}); push_documents_and_wait(inverter); index_size = fic.getMemoryUsage().allocatedBytes() - fixed_index_size; @@ -431,9 +431,9 @@ TEST_F(IndexManagerTest, require_that_flush_stats_are_calculated) _index_manager->getMaintainer().getFlushStats().cpu_time_required); doc = addDocument(docid + 10); - inverter.invertDocument(docid + 10, *doc); - doc = addDocument(docid + 100); - inverter.invertDocument(docid + 100, *doc); + inverter.invertDocument(docid + 10, *doc, {}); + auto doc100 = addDocument(docid + 100); + inverter.invertDocument(docid + 100, *doc100, {}); push_documents_and_wait(inverter); index_size = fic.getMemoryUsage().allocatedBytes() - fixed_index_size; /// Must account for both docid 0 being reserved and the extra after. diff --git a/searchcore/src/vespa/searchcore/proton/index/i_index_writer.h b/searchcore/src/vespa/searchcore/proton/index/i_index_writer.h index 8a920d3d580..a96e344979e 100644 --- a/searchcore/src/vespa/searchcore/proton/index/i_index_writer.h +++ b/searchcore/src/vespa/searchcore/proton/index/i_index_writer.h @@ -24,7 +24,7 @@ public: virtual const std::shared_ptr<IIndexManager> &getIndexManager() const = 0; // feed interface - virtual void put(search::SerialNum serialNum, const document::Document &doc, const search::DocumentIdT lid) = 0; + virtual void put(search::SerialNum serialNum, const document::Document &doc, const search::DocumentIdT lid, OnWriteDoneType on_write_done) = 0; void remove(search::SerialNum serialNum, search::DocumentIdT lid) { LidVector lids; lids.push_back(lid); diff --git a/searchcore/src/vespa/searchcore/proton/index/index_writer.cpp b/searchcore/src/vespa/searchcore/proton/index/index_writer.cpp index f86ada8c45c..3512d2eebad 100644 --- a/searchcore/src/vespa/searchcore/proton/index/index_writer.cpp +++ b/searchcore/src/vespa/searchcore/proton/index/index_writer.cpp @@ -23,7 +23,7 @@ IndexWriter::ignoreOperation(search::SerialNum serialNum) const { } void -IndexWriter::put(search::SerialNum serialNum, const document::Document &doc, const search::DocumentIdT lid) +IndexWriter::put(search::SerialNum serialNum, const document::Document &doc, const search::DocumentIdT lid, OnWriteDoneType on_write_done) { if (ignoreOperation(serialNum)) { return; @@ -39,7 +39,7 @@ IndexWriter::put(search::SerialNum serialNum, const document::Document &doc, con serialNum, doc.getId().toString().c_str()+accum, lid, s1.size(), accum, std::min(accum+chunksize, s1.size()), s1.c_str()); } } - _mgr->putDocument(lid, doc, serialNum); + _mgr->putDocument(lid, doc, serialNum, on_write_done); } void diff --git a/searchcore/src/vespa/searchcore/proton/index/index_writer.h b/searchcore/src/vespa/searchcore/proton/index/index_writer.h index 28357d6fd55..3e0822205bc 100644 --- a/searchcore/src/vespa/searchcore/proton/index/index_writer.h +++ b/searchcore/src/vespa/searchcore/proton/index/index_writer.h @@ -18,7 +18,7 @@ public: ~IndexWriter() override; const IIndexManager::SP & getIndexManager() const override { return _mgr; } - void put(search::SerialNum serialNum, const document::Document &doc, const search::DocumentIdT lid) override; + void put(search::SerialNum serialNum, const document::Document &doc, const search::DocumentIdT lid, OnWriteDoneType on_write_done) override; void removeDocs(search::SerialNum serialNum, LidVector lids) override; void commit(search::SerialNum serialNum, OnWriteDoneType onWriteDone) override; diff --git a/searchcore/src/vespa/searchcore/proton/index/indexmanager.h b/searchcore/src/vespa/searchcore/proton/index/indexmanager.h index 8212978527a..4113af30b0d 100644 --- a/searchcore/src/vespa/searchcore/proton/index/indexmanager.h +++ b/searchcore/src/vespa/searchcore/proton/index/indexmanager.h @@ -86,8 +86,8 @@ public: /** * Implements searchcorespi::IIndexManager **/ - void putDocument(uint32_t lid, const Document &doc, SerialNum serialNum) override { - _maintainer.putDocument(lid, doc, serialNum); + void putDocument(uint32_t lid, const Document &doc, SerialNum serialNum, OnWriteDoneType on_write_done) override { + _maintainer.putDocument(lid, doc, serialNum, on_write_done); } void removeDocuments(LidVector lids, SerialNum serialNum) override { diff --git a/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.h b/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.h index e4eaad538cb..432262a0322 100644 --- a/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.h +++ b/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.h @@ -76,8 +76,8 @@ public: vespalib::MemoryUsage getMemoryUsage() const override { return _index.getMemoryUsage(); } - void insertDocument(uint32_t lid, const document::Document &doc) override { - _index.insertDocument(lid, doc); + void insertDocument(uint32_t lid, const document::Document &doc, OnWriteDoneType on_write_done) override { + _index.insertDocument(lid, doc, on_write_done); } void removeDocuments(LidVector lids) override { _index.removeDocuments(std::move(lids)); 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 d973777020d..323ca9add17 100644 --- a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp @@ -61,7 +61,7 @@ SearchableFeedView::performIndexPut(SerialNum serialNum, search::DocumentIdT lid "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); + _indexWriter->put(serialNum, doc, lid, onWriteDone); } void diff --git a/searchcore/src/vespa/searchcore/proton/test/mock_index_manager.h b/searchcore/src/vespa/searchcore/proton/test/mock_index_manager.h index 7c4de5be2db..bf76dc3d59b 100644 --- a/searchcore/src/vespa/searchcore/proton/test/mock_index_manager.h +++ b/searchcore/src/vespa/searchcore/proton/test/mock_index_manager.h @@ -10,7 +10,7 @@ namespace proton::test { */ struct MockIndexManager : public searchcorespi::IIndexManager { - void putDocument(uint32_t, const Document &, SerialNum) override {} + void putDocument(uint32_t, const Document &, SerialNum, OnWriteDoneType) override {} void removeDocuments(LidVector, SerialNum) override {} void commit(SerialNum, OnWriteDoneType) override {} SerialNum getCurrentSerialNum() const override { return 0; } diff --git a/searchcore/src/vespa/searchcore/proton/test/mock_index_writer.h b/searchcore/src/vespa/searchcore/proton/test/mock_index_writer.h index 96af605b27c..bf571a74941 100644 --- a/searchcore/src/vespa/searchcore/proton/test/mock_index_writer.h +++ b/searchcore/src/vespa/searchcore/proton/test/mock_index_writer.h @@ -14,7 +14,7 @@ struct MockIndexWriter : public IIndexWriter MockIndexWriter() : _idxMgr() {} MockIndexWriter(const IIndexManager::SP &idxMgr) : _idxMgr(idxMgr) {} const IIndexManager::SP &getIndexManager() const override { return _idxMgr; } - void put(search::SerialNum, const document::Document &, const search::DocumentIdT) override {} + void put(search::SerialNum, const document::Document &, const search::DocumentIdT, OnWriteDoneType) override {} void removeDocs(search::SerialNum, LidVector) override {} void commit(search::SerialNum, OnWriteDoneType) override {} void heartBeat(search::SerialNum) override {} |