diff options
Diffstat (limited to 'searchcorespi/src')
-rw-r--r-- | searchcorespi/src/vespa/searchcorespi/index/fusionrunner.cpp | 6 | ||||
-rw-r--r-- | searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp | 5 |
2 files changed, 7 insertions, 4 deletions
diff --git a/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.cpp b/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.cpp index b5d3086d11e..009bf5d16d9 100644 --- a/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.cpp +++ b/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.cpp @@ -43,9 +43,9 @@ FusionRunner::~FusionRunner() { namespace { void readSelectorArray(const string &selector_name, SelectorArray &selector_array, - const vector<uint8_t> &id_map, uint32_t base_id) { + const vector<uint8_t> &id_map, uint32_t base_id, uint32_t fusion_id) { FixedSourceSelector::UP selector = - FixedSourceSelector::load(selector_name); + FixedSourceSelector::load(selector_name, fusion_id); if (base_id != selector->getBaseId()) { selector = selector->cloneAndSubtract("tmp_for_fusion", base_id - selector->getBaseId()); } @@ -115,7 +115,7 @@ FusionRunner::fuse(const FusionSpec &fusion_spec, const string selector_name = IndexDiskLayout::getSelectorFileName(_diskLayout.getFlushDir(fusion_id)); SelectorArray selector_array; - readSelectorArray(selector_name, selector_array, id_map, fusion_spec.last_fusion_id); + readSelectorArray(selector_name, selector_array, id_map, fusion_spec.last_fusion_id, fusion_id); if (!operations.runFusion(_schema, fusion_dir, sources, selector_array, lastSerialNum)) { return 0; diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp index 6a7f4a14f2a..440cc8bc605 100644 --- a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp +++ b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp @@ -471,6 +471,7 @@ IndexMaintainer::doneInitFlush(FlushArgs *args, IMemoryIndex::SP *new_index) // XXX: Overflow issue in source selector _current_index_id = getNewAbsoluteId() - _last_fusion_id; assert(_current_index_id < ISourceSelector::SOURCE_LIMIT); + _selector->setDefaultSource(_current_index_id); _source_selector_changes = 0; } _current_index = *new_index; @@ -747,6 +748,7 @@ IndexMaintainer::doneSetSchema(SetSchemaArgs &args, IMemoryIndex::SP &newIndex) // XXX: Overflow issue in source selector _current_index_id = getNewAbsoluteId() - _last_fusion_id; assert(_current_index_id < ISourceSelector::SOURCE_LIMIT); + _selector->setDefaultSource(_current_index_id); // Extra index to flush next time flushing is performed _frozenMemoryIndexes.emplace_back(args._oldIndex, freezeSerialNum, std::move(saveInfo), oldAbsoluteId); } @@ -849,7 +851,7 @@ IndexMaintainer::IndexMaintainer(const IndexMaintainerConfig &config, _lastFlushTime = search::FileKit::getModificationTime(latest_index_dir); _current_serial_num = _flush_serial_num; const string selector = IndexDiskLayout::getSelectorFileName(latest_index_dir); - _selector.reset(FixedSourceSelector::load(selector).release()); + _selector.reset(FixedSourceSelector::load(selector, _next_id - 1).release()); } else { _flush_serial_num = 0; _selector.reset(new FixedSourceSelector(0, "sourceselector", 1)); @@ -866,6 +868,7 @@ IndexMaintainer::IndexMaintainer(const IndexMaintainerConfig &config, _current_index = operations.createMemoryIndex(_schema, _current_serial_num); _current_index_id = getNewAbsoluteId() - _last_fusion_id; assert(_current_index_id < ISourceSelector::SOURCE_LIMIT); + _selector->setDefaultSource(_current_index_id); ISearchableIndexCollection::UP sourceList(loadDiskIndexes(spec, ISearchableIndexCollection::UP(new IndexCollection(_selector)))); LOG(debug, "Index manager created with flushed serial num %" PRIu64, _flush_serial_num); sourceList->append(_current_index_id, _current_index); |