diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-10-29 14:51:24 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-10-29 14:51:24 +0000 |
commit | 1c040c437a53b3894ee3c383525b5bc758fb15ea (patch) | |
tree | 988187998c0308eb61847f2309cb8c231655187f /searchcorespi | |
parent | 7ac9697eb5cb46a5c91a4f14a538e7840018dff6 (diff) |
Use vector of lids in IIndexManager api.
Diffstat (limited to 'searchcorespi')
3 files changed, 19 insertions, 12 deletions
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; |