aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2019-01-16 12:45:36 +0100
committerTor Egge <Tor.Egge@broadpark.no>2019-01-16 12:45:36 +0100
commit2b682b9a6dab1dd27ca9fae8cb62cfc678f5bafa (patch)
tree7eedc9a12fc02ea33940f1e956eb66a75266f5ea /searchlib
parent25aa30626175b677eced506604b6dd30a2094eca (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')
-rw-r--r--searchlib/src/tests/attribute/sourceselector/sourceselector_test.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/fixedsourceselector.cpp11
-rw-r--r--searchlib/src/vespa/searchlib/attribute/fixedsourceselector.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/isourceselector.cpp8
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/isourceselector.h1
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.