diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2019-01-16 12:45:36 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2019-01-16 12:45:36 +0100 |
commit | 2b682b9a6dab1dd27ca9fae8cb62cfc678f5bafa (patch) | |
tree | 7eedc9a12fc02ea33940f1e956eb66a75266f5ea /searchlib | |
parent | 25aa30626175b677eced506604b6dd30a2094eca (diff) |
Update default source in source selector when switching to new memory index.
Override default source when loading source selector from disk.
Diffstat (limited to 'searchlib')
5 files changed, 20 insertions, 4 deletions
diff --git a/searchlib/src/tests/attribute/sourceselector/sourceselector_test.cpp b/searchlib/src/tests/attribute/sourceselector/sourceselector_test.cpp index 2773eab0076..54fb7ffd387 100644 --- a/searchlib/src/tests/attribute/sourceselector/sourceselector_test.cpp +++ b/searchlib/src/tests/attribute/sourceselector/sourceselector_test.cpp @@ -167,7 +167,7 @@ Test::requireThatSelectorCanSaveAndLoad(bool compactLidSpace) selector.extractSaveInfo(base_file_name); save_info->save(TuneFileAttributes(), DummyFileHeaderContext()); typename SelectorType::UP - selector2(SelectorType::load(base_file_name)); + selector2(SelectorType::load(base_file_name, default_source + base_id)); testSourceSelector(docs, arraysize(docs) - compactLidSpace, default_source, *selector2, true); EXPECT_EQUAL(base_id, selector2->getBaseId()); if (compactLidSpace) { diff --git a/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.cpp b/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.cpp index 993fc7b16c0..e3e6eca93b4 100644 --- a/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.cpp +++ b/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.cpp @@ -66,12 +66,19 @@ FixedSourceSelector::cloneAndSubtract(const vespalib::string & attrBaseFileName, } FixedSourceSelector::UP -FixedSourceSelector::load(const vespalib::string & baseFileName) +FixedSourceSelector::load(const vespalib::string & baseFileName, uint32_t currentId) { LoadInfo::UP info = extractLoadInfo(baseFileName); info->load(); + uint32_t defaultSource = currentId - info->header()._baseId; + assert(defaultSource < SOURCE_LIMIT); + if (defaultSource != info->header()._defaultSource) { + LOG(info, "Default source mismatch: header says %u, should be %u selector %s", + (uint32_t) info->header()._defaultSource, defaultSource, + baseFileName.c_str()); + } FixedSourceSelector::UP selector(new FixedSourceSelector( - info->header()._defaultSource, + defaultSource, info->header()._baseFileName, 0)); selector->setBaseId(info->header()._baseId); diff --git a/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.h b/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.h index f92bb1e0eb2..055d216dda1 100644 --- a/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.h +++ b/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.h @@ -33,7 +33,7 @@ public: ~FixedSourceSelector(); FixedSourceSelector::UP cloneAndSubtract(const vespalib::string & attrBaseFileName, uint32_t diff); - static FixedSourceSelector::UP load(const vespalib::string & baseFileName); + static FixedSourceSelector::UP load(const vespalib::string & baseFileName, uint32_t currentId); // Inherit doc from ISourceSelector void setSource(uint32_t docId, queryeval::Source source) final override; diff --git a/searchlib/src/vespa/searchlib/queryeval/isourceselector.cpp b/searchlib/src/vespa/searchlib/queryeval/isourceselector.cpp index 1e0659c92e3..e19a76b58ba 100644 --- a/searchlib/src/vespa/searchlib/queryeval/isourceselector.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/isourceselector.cpp @@ -10,4 +10,12 @@ ISourceSelector::ISourceSelector(Source defaultSource) : assert(defaultSource < SOURCE_LIMIT); } +void +ISourceSelector::setDefaultSource(Source source) +{ + assert(source < SOURCE_LIMIT); + assert(source >= _defaultSource); + _defaultSource = source; +} + } diff --git a/searchlib/src/vespa/searchlib/queryeval/isourceselector.h b/searchlib/src/vespa/searchlib/queryeval/isourceselector.h index 7151a785c26..8d92cd5293e 100644 --- a/searchlib/src/vespa/searchlib/queryeval/isourceselector.h +++ b/searchlib/src/vespa/searchlib/queryeval/isourceselector.h @@ -56,6 +56,7 @@ protected: public: void setBaseId(uint32_t baseId) { _baseId = baseId; } uint32_t getBaseId() const { return _baseId; } + void setDefaultSource(Source source); Source getDefaultSource() const { return _defaultSource; } /** * Set the source to be used for a given document. |