aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-10-29 14:51:24 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-10-29 14:51:24 +0000
commit1c040c437a53b3894ee3c383525b5bc758fb15ea (patch)
tree988187998c0308eb61847f2309cb8c231655187f
parent7ac9697eb5cb46a5c91a4f14a538e7840018dff6 (diff)
Use vector of lids in IIndexManager api.
-rw-r--r--searchcore/src/tests/proton/index/index_writer/index_writer_test.cpp6
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/index_writer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/indexmanager.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/mock_index_manager.h30
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/iindexmanager.h15
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp14
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.h2
7 files changed, 39 insertions, 34 deletions
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 358e8c03cd0..ac17c17892c 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
@@ -52,8 +52,10 @@ struct MyIndexManager : public test::MockIndexManager
void putDocument(uint32_t lid, const Document &, SerialNum serialNum) override {
puts[lid].push_back(serialNum);
}
- void removeDocument(uint32_t lid, SerialNum serialNum) override {
- removes[lid].push_back(serialNum);
+ void removeDocuments(LidVector lids, SerialNum serialNum) override {
+ for (uint32_t lid : lids) {
+ removes[lid].push_back(serialNum);
+ }
}
void commit(SerialNum serialNum, OnWriteDoneType) override {
commitSerial = serialNum;
diff --git a/searchcore/src/vespa/searchcore/proton/index/index_writer.cpp b/searchcore/src/vespa/searchcore/proton/index/index_writer.cpp
index 1f5412805ab..f86ada8c45c 100644
--- a/searchcore/src/vespa/searchcore/proton/index/index_writer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/index/index_writer.cpp
@@ -50,8 +50,8 @@ IndexWriter::removeDocs(search::SerialNum serialNum, LidVector lids)
}
for (search::DocumentIdT lid : lids) {
VLOG(getDebugLevel(lid, NULL), "Handle remove: serial(%" PRIu64 "), num_lids(%lu)", serialNum, lids.size());
- _mgr->removeDocument(lid, serialNum);
}
+ _mgr->removeDocuments(std::move(lids), serialNum);
}
void
diff --git a/searchcore/src/vespa/searchcore/proton/index/indexmanager.h b/searchcore/src/vespa/searchcore/proton/index/indexmanager.h
index af36e960202..8212978527a 100644
--- a/searchcore/src/vespa/searchcore/proton/index/indexmanager.h
+++ b/searchcore/src/vespa/searchcore/proton/index/indexmanager.h
@@ -90,8 +90,8 @@ public:
_maintainer.putDocument(lid, doc, serialNum);
}
- void removeDocument(uint32_t lid, SerialNum serialNum) override {
- _maintainer.removeDocument(lid, serialNum);
+ void removeDocuments(LidVector lids, SerialNum serialNum) override {
+ _maintainer.removeDocuments(std::move(lids), serialNum);
}
void commit(SerialNum serialNum, OnWriteDoneType onWriteDone) override {
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 9dc1fbdd9f6..7c4de5be2db 100644
--- a/searchcore/src/vespa/searchcore/proton/test/mock_index_manager.h
+++ b/searchcore/src/vespa/searchcore/proton/test/mock_index_manager.h
@@ -3,35 +3,31 @@
#include <vespa/searchcorespi/index/iindexmanager.h>
-namespace proton {
-
-namespace test {
+namespace proton::test {
/**
* Mock of the IIndexManager interface used for unit testing.
*/
struct MockIndexManager : public searchcorespi::IIndexManager
{
- virtual void putDocument(uint32_t, const Document &, SerialNum) override {}
- virtual void removeDocument(uint32_t, SerialNum) override {}
- virtual void commit(SerialNum, OnWriteDoneType) override {}
- virtual SerialNum getCurrentSerialNum() const override { return 0; }
- virtual SerialNum getFlushedSerialNum() const override { return 0; }
- virtual searchcorespi::IndexSearchable::SP getSearchable() const override {
+ void putDocument(uint32_t, const Document &, SerialNum) override {}
+ void removeDocuments(LidVector, SerialNum) override {}
+ void commit(SerialNum, OnWriteDoneType) override {}
+ SerialNum getCurrentSerialNum() const override { return 0; }
+ SerialNum getFlushedSerialNum() const override { return 0; }
+ searchcorespi::IndexSearchable::SP getSearchable() const override {
return searchcorespi::IndexSearchable::SP();
}
- virtual search::SearchableStats getSearchableStats() const override {
+ search::SearchableStats getSearchableStats() const override {
return search::SearchableStats();
}
- virtual searchcorespi::IFlushTarget::List getFlushTargets() override {
+ searchcorespi::IFlushTarget::List getFlushTargets() override {
return searchcorespi::IFlushTarget::List();
}
- virtual void setSchema(const Schema &, SerialNum) override {}
- virtual void heartBeat(SerialNum) override {}
+ void setSchema(const Schema &, SerialNum) override {}
+ void heartBeat(SerialNum) override {}
void compactLidSpace(uint32_t, SerialNum) override {}
- virtual void setMaxFlushed(uint32_t) override { }
+ void setMaxFlushed(uint32_t) override { }
};
-} // namespace test
-
-} // namespace proton
+}
diff --git a/searchcorespi/src/vespa/searchcorespi/index/iindexmanager.h b/searchcorespi/src/vespa/searchcorespi/index/iindexmanager.h
index afc7a327723..02adcbc11ce 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/iindexmanager.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/iindexmanager.h
@@ -30,10 +30,10 @@ namespace searchcorespi {
*/
class IIndexManager {
protected:
- typedef document::Document Document;
- typedef search::SerialNum SerialNum;
- typedef search::index::Schema Schema;
-
+ using Document = document::Document;
+ using SerialNum = search::SerialNum;
+ using Schema = search::index::Schema;
+ using LidVector = std::vector<uint32_t>;
public:
using OnWriteDoneType = const std::shared_ptr<vespalib::IDestructorCallback> &;
@@ -107,7 +107,12 @@ public:
* @param serialNum The unique monotoninc increasing serial number
* for this operation.
**/
- virtual void removeDocument(uint32_t lid, SerialNum serialNum) = 0;
+ void removeDocument(uint32_t lid, SerialNum serialNum) {
+ LidVector lids;
+ lids.push_back(lid);
+ removeDocuments(std::move(lids), serialNum);
+ }
+ virtual void removeDocuments(LidVector lids, SerialNum serialNum) = 0;
/**
* Commits the document puts and removes since the last commit,
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp
index d58d0ab4ad6..57dca9d9be9 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp
@@ -1183,15 +1183,17 @@ IndexMaintainer::putDocument(uint32_t lid, const Document &doc, SerialNum serial
}
void
-IndexMaintainer::removeDocument(uint32_t lid, SerialNum serialNum)
+IndexMaintainer::removeDocuments(LidVector lids, SerialNum serialNum)
{
assert(_ctx.getThreadingService().index().isCurrentThread());
LockGuard lock(_index_update_lock);
- _current_index->removeDocument(lid);
- _selector->setSource(lid, _current_index_id);
- _source_list->setSource(lid);
- ++_source_selector_changes;
- _current_serial_num = serialNum;
+ for (uint32_t lid : lids) {
+ _current_index->removeDocument(lid);
+ _selector->setSource(lid, _current_index_id);
+ _source_list->setSource(lid);
+ ++_source_selector_changes;
+ _current_serial_num = serialNum;
+ }
}
void
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.h b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.h
index be9d14ee1ad..816ec76cd1f 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.h
@@ -325,7 +325,7 @@ public:
// Implements IIndexManager
void putDocument(uint32_t lid, const Document &doc, SerialNum serialNum) override;
- void removeDocument(uint32_t lid, SerialNum serialNum) override;
+ void removeDocuments(LidVector lids, SerialNum serialNum) override;
void commit(SerialNum serialNum, OnWriteDoneType onWriteDone) override;
void heartBeat(search::SerialNum serialNum) override;
void compactLidSpace(uint32_t lidLimit, SerialNum serialNum) override;