diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2016-12-17 04:09:47 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2016-12-17 04:09:47 +0100 |
commit | c3947c40abbdc0d12c789b794f43c5b3b85afffb (patch) | |
tree | 90a656f917c166026925661f94ab6cf8ca9ab503 /searchcorespi | |
parent | 8e5629fcfa8da53aed44d2778ec5efbfcea017dd (diff) |
Split the source selector out too.
Diffstat (limited to 'searchcorespi')
6 files changed, 34 insertions, 44 deletions
diff --git a/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.cpp b/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.cpp index 13bef302083..339ceab83c8 100644 --- a/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.cpp +++ b/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.cpp @@ -37,8 +37,7 @@ FusionRunner::FusionRunner(const string &base_dir, _schema(schema), _tuneFileAttributes(tuneFileAttributes), _fileHeaderContext(fileHeaderContext) -{ -} +{ } namespace { @@ -47,13 +46,12 @@ void readSelectorArray(const string &selector_name, SelectorArray &selector_arra FixedSourceSelector::UP selector = FixedSourceSelector::load(selector_name); if (base_id != selector->getBaseId()) { - selector = selector->cloneAndSubtract( - "tmp_for_fusion", base_id - selector->getBaseId()); + selector = selector->cloneAndSubtract("tmp_for_fusion", base_id - selector->getBaseId()); } const uint32_t num_docs = selector->getDocIdLimit(); selector_array.reserve(num_docs); - ISourceSelector::Iterator::UP it = selector->createIterator(); + auto it = selector->createIterator(); for (uint32_t i = 0; i < num_docs; ++i) { search::queryeval::Source source = it->getSource(i); assert(source < id_map.size()); @@ -71,12 +69,9 @@ writeFusionSelector(const IndexDiskLayout &diskLayout, uint32_t fusion_id, FixedSourceSelector fusion_selector(default_source, "fusion_selector"); fusion_selector.setSource(highest_doc_id, default_source); fusion_selector.setBaseId(fusion_id); - string selector_name = - IndexDiskLayout::getSelectorFileName(diskLayout.getFusionDir(fusion_id)); - if (!fusion_selector.extractSaveInfo(selector_name)->save( - tuneFileAttributes, fileHeaderContext)) { - LOG(warning, - "Unable to write source selector data for fusion.%u.", fusion_id); + string selector_name = IndexDiskLayout::getSelectorFileName(diskLayout.getFusionDir(fusion_id)); + if (!fusion_selector.extractSaveInfo(selector_name)->save(tuneFileAttributes, fileHeaderContext)) { + LOG(warning, "Unable to write source selector data for fusion.%u.", fusion_id); return false; } return true; @@ -99,8 +94,7 @@ FusionRunner::fuse(const FusionSpec &fusion_spec, vector<uint8_t> id_map(fusion_id + 1); if (fusion_spec.last_fusion_id != 0) { id_map[0] = sources.size(); - sources.push_back( - _diskLayout.getFusionDir(fusion_spec.last_fusion_id)); + sources.push_back(_diskLayout.getFusionDir(fusion_spec.last_fusion_id)); } for (size_t i = 0; i < ids.size(); ++i) { id_map[ids[i] - fusion_spec.last_fusion_id] = sources.size(); @@ -108,35 +102,27 @@ FusionRunner::fuse(const FusionSpec &fusion_spec, } if (LOG_WOULD_LOG(event)) { - EventLogger::diskFusionStart(sources, - fusion_dir); + EventLogger::diskFusionStart(sources, fusion_dir); } FastOS_Time timer; timer.SetNow(); - const string selector_name = - IndexDiskLayout::getSelectorFileName(_diskLayout.getFlushDir(fusion_id)); + 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); - if (!operations.runFusion(_schema, fusion_dir, sources, selector_array, - lastSerialNum)) { + if (!operations.runFusion(_schema, fusion_dir, sources, selector_array, lastSerialNum)) { return 0; } const uint32_t highest_doc_id = selector_array.size() - 1; - SerialNumFileHeaderContext fileHeaderContext(_fileHeaderContext, - lastSerialNum); - if (!writeFusionSelector(_diskLayout, fusion_id, highest_doc_id, - _tuneFileAttributes, - fileHeaderContext)) { + SerialNumFileHeaderContext fileHeaderContext(_fileHeaderContext, lastSerialNum); + if (!writeFusionSelector(_diskLayout, fusion_id, highest_doc_id, _tuneFileAttributes, fileHeaderContext)) { return 0; } if (LOG_WOULD_LOG(event)) { - EventLogger::diskFusionComplete(fusion_dir, - (int64_t)timer.MilliSecsToNow()); + EventLogger::diskFusionComplete(fusion_dir, (int64_t)timer.MilliSecsToNow()); } return fusion_id; } diff --git a/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.cpp b/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.cpp index 961e908f1bb..b2ab7707c90 100644 --- a/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.cpp +++ b/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.cpp @@ -1,7 +1,8 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/searchcorespi/index/iindexcollection.h> -#include <vespa/searchcorespi/index/idiskindex.h> +#include "iindexcollection.h" +#include "idiskindex.h" #include <vespa/vespalib/stllike/asciistream.h> +#include <vespa/searchlib/queryeval/isourceselector.h> namespace searchcorespi { diff --git a/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.h b/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.h index e4b90f11bac..13e9d6f5b15 100644 --- a/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.h +++ b/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.h @@ -3,9 +3,12 @@ #pragma once #include "indexsearchable.h" -#include <vespa/searchlib/queryeval/isourceselector.h> -#include <vespa/searchlib/util/searchable_stats.h> +namespace search { + namespace queryeval { + class ISourceSelector; + } +} namespace searchcorespi { /** @@ -14,7 +17,7 @@ namespace searchcorespi { */ class IIndexCollection { protected: - typedef search::queryeval::ISourceSelector ISourceSelector; + using ISourceSelector = search::queryeval::ISourceSelector; public: typedef std::unique_ptr<IIndexCollection> UP; typedef std::shared_ptr<IIndexCollection> SP; diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexcollection.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexcollection.cpp index 653cf0a28b4..cf9c06ac468 100644 --- a/searchcorespi/src/vespa/searchcorespi/index/indexcollection.cpp +++ b/searchcorespi/src/vespa/searchcorespi/index/indexcollection.cpp @@ -1,15 +1,14 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/fastos/fastos.h> -#include <vespa/log/log.h> -LOG_SETUP(".searchcorespi.index.indexcollection"); - #include "indexcollection.h" +#include "indexsearchablevisitor.h" #include <vespa/searchlib/queryeval/isourceselector.h> #include <vespa/searchlib/queryeval/create_blueprint_visitor_helper.h> #include <vespa/searchlib/queryeval/intermediate_blueprints.h> #include <vespa/searchlib/queryeval/leaf_blueprints.h> -#include "indexsearchablevisitor.h" + +#include <vespa/log/log.h> +LOG_SETUP(".searchcorespi.index.indexcollection"); using namespace search::queryeval; using namespace search::query; diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexcollection.h b/searchcorespi/src/vespa/searchcorespi/index/indexcollection.h index 38942abc9dc..1f5e17d7099 100644 --- a/searchcorespi/src/vespa/searchcorespi/index/indexcollection.h +++ b/searchcorespi/src/vespa/searchcorespi/index/indexcollection.h @@ -3,7 +3,6 @@ #pragma once #include "isearchableindexcollection.h" -#include <vespa/searchlib/queryeval/isourceselector.h> #include <vespa/searchlib/util/searchable_stats.h> #include <memory> #include <set> @@ -29,12 +28,13 @@ class IndexCollection : public ISearchableIndexCollection }; // Selector shared across memory dumps, replaced on disk fusion operations - ISourceSelector::SP _source_selector; + using ISourceSelectorSP = std::shared_ptr<ISourceSelector>; + ISourceSelectorSP _source_selector; std::vector<SourceWithId> _sources; public: - IndexCollection(const ISourceSelector::SP & selector); - IndexCollection(const ISourceSelector::SP & selector, + IndexCollection(const ISourceSelectorSP & selector); + IndexCollection(const ISourceSelectorSP & selector, const ISearchableIndexCollection &sources); virtual void append(uint32_t id, const IndexSearchable::SP &source); @@ -65,7 +65,7 @@ public: virtual void accept(IndexSearchableVisitor &visitor) const override; static ISearchableIndexCollection::UP replaceAndRenumber( - const ISourceSelector::SP & selector, + const ISourceSelectorSP & selector, const ISearchableIndexCollection &fsc, uint32_t id_diff, const IndexSearchable::SP &new_source); diff --git a/searchcorespi/src/vespa/searchcorespi/index/isearchableindexcollection.cpp b/searchcorespi/src/vespa/searchcorespi/index/isearchableindexcollection.cpp index 484a5137a81..c5d9f8b2962 100644 --- a/searchcorespi/src/vespa/searchcorespi/index/isearchableindexcollection.cpp +++ b/searchcorespi/src/vespa/searchcorespi/index/isearchableindexcollection.cpp @@ -1,6 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/searchcorespi/index/isearchableindexcollection.h> +#include "isearchableindexcollection.h" +#include <vespa/searchlib/queryeval/isourceselector.h> namespace searchcorespi { |