summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2021-11-10 14:19:55 +0100
committerTor Egge <Tor.Egge@online.no>2021-11-10 14:53:14 +0100
commit634dc8044870d056eb4dfaae7b4f6b7e7f81649c (patch)
tree268462246a620418cf5e635480afb5c32448558f /searchcore
parent8dcbd10ee9d81cd546b8cfffef42e0f4198ed172 (diff)
Keep write context live until inverter thread has completed invert task.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp2
-rw-r--r--searchcore/src/tests/proton/feed_and_search/feed_and_search.cpp6
-rw-r--r--searchcore/src/tests/proton/index/fusionrunner_test.cpp2
-rw-r--r--searchcore/src/tests/proton/index/index_writer/index_writer_test.cpp4
-rw-r--r--searchcore/src/tests/proton/index/indexmanager_test.cpp10
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/i_index_writer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/index_writer.cpp4
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/index_writer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/indexmanager.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/mock_index_manager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/mock_index_writer.h2
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 {}