diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-05-26 13:19:04 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-05-26 13:23:23 +0000 |
commit | 9b7fbd40636763509335a93df7d9611441b1ceaf (patch) | |
tree | 33aeaa67e495ee42ae29ccbabb72d1e3b604b655 | |
parent | fd13f73b5ef66dcc81f60a6319be4f01b5e1d68e (diff) |
Inherit from vespalib::GrowStrategy
19 files changed, 38 insertions, 61 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.cpp index da1b733ca0a..663491e9c64 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.cpp +++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.cpp @@ -2,15 +2,14 @@ #include "attribute_collection_spec_factory.h" #include <vespa/searchlib/attribute/configconverter.h> +#include <vespa/searchcommon/attribute/config.h> using search::attribute::ConfigConverter; using search::GrowStrategy; namespace proton { -AttributeCollectionSpecFactory::AttributeCollectionSpecFactory( - const AllocStrategy &alloc_strategy, - bool fastAccessOnly) +AttributeCollectionSpecFactory::AttributeCollectionSpecFactory(const AllocStrategy &alloc_strategy, bool fastAccessOnly) : _alloc_strategy(alloc_strategy), _fastAccessOnly(fastAccessOnly) { @@ -18,7 +17,7 @@ AttributeCollectionSpecFactory::AttributeCollectionSpecFactory( AttributeCollectionSpecFactory::~AttributeCollectionSpecFactory() = default; -AttributeCollectionSpec::UP +std::unique_ptr<AttributeCollectionSpec> AttributeCollectionSpecFactory::create(const AttributesConfig &attrCfg, uint32_t docIdLimit, search::SerialNum serialNum) const @@ -27,18 +26,18 @@ AttributeCollectionSpecFactory::create(const AttributesConfig &attrCfg, // Amortize memory spike cost over N docs const size_t skew = _alloc_strategy.get_amortize_count()/(attrCfg.attribute.size()+1); GrowStrategy grow = _alloc_strategy.get_grow_strategy(); - grow.setDocsInitialCapacity(std::max(grow.getDocsInitialCapacity(),docIdLimit)); + grow.setInitialCapacity(std::max(grow.getInitialCapacity(), size_t(docIdLimit))); for (const auto &attr : attrCfg.attribute) { search::attribute::Config cfg = ConfigConverter::convert(attr); if (_fastAccessOnly && !cfg.fastAccess()) { continue; } - grow.setDocsGrowDelta(grow.getDocsGrowDelta() + skew); + grow.setGrowDelta(grow.getGrowDelta() + skew); cfg.setGrowStrategy(grow); cfg.setCompactionStrategy(_alloc_strategy.get_compaction_strategy()); attrs.push_back(AttributeSpec(attr.name, cfg)); } - return std::make_unique<AttributeCollectionSpec>(attrs, docIdLimit, serialNum); + return std::make_unique<AttributeCollectionSpec>(std::move(attrs), docIdLimit, serialNum); } } // namespace proton diff --git a/searchcore/src/vespa/searchcore/proton/common/alloc_config.cpp b/searchcore/src/vespa/searchcore/proton/common/alloc_config.cpp index 8525b0ea779..1c8eae81949 100644 --- a/searchcore/src/vespa/searchcore/proton/common/alloc_config.cpp +++ b/searchcore/src/vespa/searchcore/proton/common/alloc_config.cpp @@ -31,7 +31,7 @@ AllocStrategy AllocConfig::make_alloc_strategy(SubDbType sub_db_type) const { auto &baseline = _alloc_strategy.get_grow_strategy(); - size_t initial_capacity = baseline.getDocsInitialCapacity(); + size_t initial_capacity = baseline.getInitialCapacity(); switch (sub_db_type) { case SubDbType::READY: initial_capacity *= _searchable_copies; @@ -44,7 +44,7 @@ AllocConfig::make_alloc_strategy(SubDbType sub_db_type) const initial_capacity = std::max(1024ul, initial_capacity / 100); break; } - GrowStrategy grow_strategy(initial_capacity, baseline.getDocsGrowFactor(), baseline.getDocsGrowDelta(), initial_capacity, baseline.getMultiValueAllocGrowFactor()); + GrowStrategy grow_strategy(initial_capacity, baseline.getGrowFactor(), baseline.getGrowDelta(), initial_capacity, baseline.getMultiValueAllocGrowFactor()); return AllocStrategy(grow_strategy, _alloc_strategy.get_compaction_strategy(), _alloc_strategy.get_amortize_count()); } diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp index dafb0affc0f..c0d291ca695 100644 --- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp +++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp @@ -416,7 +416,7 @@ DocumentMetaStore::DocumentMetaStore(BucketDBOwnerSP bucketDB, const GrowStrategy &grow, SubDbType subDbType) : DocumentMetaStoreAttribute(name), - _metaDataStore(grow.to_generic_strategy(), getGenerationHolder()), + _metaDataStore(grow, getGenerationHolder()), _gidToLidMap(), _gid_to_lid_map_write_itr(vespalib::datastore::EntryRef(), _gidToLidMap.getAllocator()), _gid_to_lid_map_write_itr_prepare_serial_num(0u), diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp index 9f8afa0ad19..c3f9bba24e6 100644 --- a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp @@ -253,7 +253,7 @@ createDocumentMetaStoreInitializer(const AllocStrategy& alloc_strategy, { GrowStrategy grow = alloc_strategy.get_grow_strategy(); // Amortize memory spike cost over N docs - grow.setDocsGrowDelta(grow.getDocsGrowDelta() + alloc_strategy.get_amortize_count()); + grow.setGrowDelta(grow.getGrowDelta() + alloc_strategy.get_amortize_count()); vespalib::string baseDir(_baseDir + "/documentmetastore"); vespalib::string name = DocumentMetaStore::getFixedName(); vespalib::string attrFileName = baseDir + "/" + name; // XXX: Wrong @@ -457,7 +457,7 @@ StoreOnlyDocSubDB::reconfigure(const search::LogDocumentStore::Config & config, auto cfg = _dms->getConfig(); GrowStrategy grow = alloc_strategy.get_grow_strategy(); // Amortize memory spike cost over N docs - grow.setDocsGrowDelta(grow.getDocsGrowDelta() + alloc_strategy.get_amortize_count()); + grow.setGrowDelta(grow.getGrowDelta() + alloc_strategy.get_amortize_count()); cfg.setGrowStrategy(grow); cfg.setCompactionStrategy(computeCompactionStrategy(alloc_strategy.get_compaction_strategy())); _dms->update_config(cfg); // Update grow and compaction config diff --git a/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.cpp b/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.cpp index ad082b3375a..55266841c67 100644 --- a/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.cpp +++ b/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.cpp @@ -477,7 +477,7 @@ PostingListAttributeTest::checkPostingList(const VectorType & vec, const std::ve } EXPECT_EQ(doc, docEnd); } else { - EXPECT_TRUE(has_bitvector && vec.getConfig().getEnableOnlyBitVector()); + EXPECT_TRUE(has_bitvector && vec.getEnableOnlyBitVector()); numHits = postingList.getBitVectorEntry(find_result.second)->_bv->reader().countTrueBits(); } if (has_bitvector) { diff --git a/searchlib/src/tests/searchcommon/attribute/config/attribute_config_test.cpp b/searchlib/src/tests/searchcommon/attribute/config/attribute_config_test.cpp index 8abe5dcc414..f9e77376b25 100644 --- a/searchlib/src/tests/searchcommon/attribute/config/attribute_config_test.cpp +++ b/searchlib/src/tests/searchcommon/attribute/config/attribute_config_test.cpp @@ -102,11 +102,10 @@ TEST("test operator== on attribute config for tensor type") TEST("Test GrowStrategy consistency") { GrowStrategy g(1024, 0.5, 17, 3, 0.4f); - EXPECT_EQUAL(1024u, g.getDocsInitialCapacity()); - EXPECT_EQUAL(50u, g.getDocsGrowPercent()); - EXPECT_EQUAL(0.5, g.getDocsGrowFactor()); - EXPECT_EQUAL(17u, g.getDocsGrowDelta()); - EXPECT_EQUAL(3u, g.getDocsMinimumCapacity()); + EXPECT_EQUAL(1024u, g.getInitialCapacity()); + EXPECT_EQUAL(0.5, g.getGrowFactor()); + EXPECT_EQUAL(17u, g.getGrowDelta()); + EXPECT_EQUAL(3u, g.getMinimumCapacity()); EXPECT_EQUAL(0.4f, g.getMultiValueAllocGrowFactor()); } diff --git a/searchlib/src/vespa/searchcommon/common/growstrategy.cpp b/searchlib/src/vespa/searchcommon/common/growstrategy.cpp index 36c577b1048..27bd5ea904e 100644 --- a/searchlib/src/vespa/searchcommon/common/growstrategy.cpp +++ b/searchlib/src/vespa/searchcommon/common/growstrategy.cpp @@ -8,10 +8,10 @@ namespace search { std::ostream& operator<<(std::ostream& os, const GrowStrategy& grow_strategy) { - os << "{docsInitialCapacity=" << grow_strategy.getDocsInitialCapacity() << - ", docsMinimumCapacity=" << grow_strategy.getDocsMinimumCapacity() << - ", docsGrowFactor=" << grow_strategy.getDocsGrowFactor() << - ", docsGrowDelta=" << grow_strategy.getDocsGrowDelta() << + os << "{docsInitialCapacity=" << grow_strategy.getInitialCapacity() << + ", docsMinimumCapacity=" << grow_strategy.getMinimumCapacity() << + ", docsGrowFactor=" << grow_strategy.getGrowFactor() << + ", docsGrowDelta=" << grow_strategy.getGrowDelta() << ", multiValueAllocGrowFactor=" << grow_strategy.getMultiValueAllocGrowFactor() << "}"; return os; diff --git a/searchlib/src/vespa/searchcommon/common/growstrategy.h b/searchlib/src/vespa/searchcommon/common/growstrategy.h index 3320e6ead6e..bc04047aa3c 100644 --- a/searchlib/src/vespa/searchcommon/common/growstrategy.h +++ b/searchlib/src/vespa/searchcommon/common/growstrategy.h @@ -8,13 +8,9 @@ namespace search { -class GrowStrategy +class GrowStrategy : public vespalib::GrowStrategy { private: - uint32_t _docsInitialCapacity; - uint32_t _docsMinimumCapacity; - float _docsGrowFactor; - uint32_t _docsGrowDelta; float _multiValueAllocGrowFactor; public: GrowStrategy() noexcept @@ -22,10 +18,7 @@ public: {} GrowStrategy(uint32_t docsInitialCapacity, float docsGrowFactor, uint32_t docsGrowDelta, uint32_t docsMinimumCapacity, float multiValueAllocGrowFactor) noexcept - : _docsInitialCapacity(docsInitialCapacity), - _docsMinimumCapacity(docsMinimumCapacity), - _docsGrowFactor(docsGrowFactor), - _docsGrowDelta(docsGrowDelta), + : vespalib::GrowStrategy(docsInitialCapacity, docsGrowFactor, docsGrowDelta, docsMinimumCapacity), _multiValueAllocGrowFactor(multiValueAllocGrowFactor) { } @@ -34,25 +27,11 @@ public: return GrowStrategy(docsInitialCapacity, docsGrowFactor, docsGrowDelta, 0, 0.2); } - uint32_t getDocsInitialCapacity() const { return _docsInitialCapacity; } - uint32_t getDocsMinimumCapacity() const { return _docsMinimumCapacity; } - uint32_t getDocsGrowPercent() const { return _docsGrowFactor*100; } - float getDocsGrowFactor() const { return _docsGrowFactor; } - uint32_t getDocsGrowDelta() const { return _docsGrowDelta; } float getMultiValueAllocGrowFactor() const { return _multiValueAllocGrowFactor; } - void setDocsInitialCapacity(uint32_t v) { _docsInitialCapacity = v; } - void setDocsMinimumCapacity(uint32_t v) { _docsMinimumCapacity = v; } - void setDocsGrowDelta(uint32_t v) { _docsGrowDelta = v; } - - vespalib::GrowStrategy to_generic_strategy() const { - return vespalib::GrowStrategy(_docsInitialCapacity, _docsGrowFactor, _docsGrowDelta, _docsMinimumCapacity); - } bool operator==(const GrowStrategy & rhs) const { - return _docsInitialCapacity == rhs._docsInitialCapacity && - _docsGrowFactor == rhs._docsGrowFactor && - _docsGrowDelta == rhs._docsGrowDelta && - _multiValueAllocGrowFactor == rhs._multiValueAllocGrowFactor; + return vespalib::GrowStrategy::operator==(rhs) && + (_multiValueAllocGrowFactor == rhs._multiValueAllocGrowFactor); } bool operator!=(const GrowStrategy & rhs) const { return !(operator==(rhs)); diff --git a/searchlib/src/vespa/searchlib/attribute/attributevector.h b/searchlib/src/vespa/searchlib/attribute/attributevector.h index 983c4c4ae22..a35fb13b9ff 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributevector.h +++ b/searchlib/src/vespa/searchlib/attribute/attributevector.h @@ -5,7 +5,6 @@ #include "address_space_usage.h" #include "changevector.h" #include "readable_attribute_vector.h" -#include <vespa/searchcommon/attribute/config.h> #include <vespa/searchcommon/attribute/i_search_context.h> #include <vespa/searchcommon/attribute/iattributevector.h> #include <vespa/searchcommon/attribute/search_context_params.h> diff --git a/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp b/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp index 6e19d35a966..ef796d3f3d2 100644 --- a/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp +++ b/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp @@ -46,7 +46,7 @@ FlagAttributeT<B>::FlagAttributeT(const vespalib::string & baseFileName, const A _bitVectorHolder(), _bitVectorStore(256), _bitVectors(256), - _bitVectorSize(cfg.getGrowStrategy().getDocsInitialCapacity()) + _bitVectorSize(cfg.getGrowStrategy().getInitialCapacity()) { } @@ -211,7 +211,7 @@ void FlagAttributeT<B>::resizeBitVectors(uint32_t neededSize) { const GrowStrategy & gs = this->getConfig().getGrowStrategy(); - uint32_t newSize = neededSize + (neededSize * gs.getDocsGrowFactor()) + gs.getDocsGrowDelta(); + uint32_t newSize = neededSize + (neededSize * gs.getGrowFactor()) + gs.getGrowDelta(); for (size_t i(0), m(_bitVectors.size()); i < m; i++) { BitVector *bv = _bitVectors[i].load_relaxed(); if (bv != nullptr) { diff --git a/searchlib/src/vespa/searchlib/attribute/multivalueattribute.hpp b/searchlib/src/vespa/searchlib/attribute/multivalueattribute.hpp index 622058550a2..cbe46a8cb2e 100644 --- a/searchlib/src/vespa/searchlib/attribute/multivalueattribute.hpp +++ b/searchlib/src/vespa/searchlib/attribute/multivalueattribute.hpp @@ -6,6 +6,7 @@ #include "raw_multi_value_read_view.h" #include "copy_multi_value_read_view.h" #include <vespa/searchlib/attribute/multivalueattribute.h> +#include <vespa/searchcommon/attribute/config.h> #include <vespa/vespalib/stllike/hash_map.h> #include <vespa/vespalib/stllike/hash_map.hpp> #include <vespa/vespalib/util/memory_allocator.h> @@ -31,7 +32,7 @@ MultiValueAttribute(const vespalib::string &baseFileName, 8 * 1024, cfg.getGrowStrategy().getMultiValueAllocGrowFactor(), multivalueattribute::enable_free_lists), - cfg.getGrowStrategy().to_generic_strategy(), this->get_memory_allocator()) + cfg.getGrowStrategy(), this->get_memory_allocator()) { } diff --git a/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp b/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp index 56484813828..ae10c07d12f 100644 --- a/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp +++ b/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp @@ -65,7 +65,7 @@ adjustUpperBound(int32_t arity, int64_t upper_bound) { SimpleIndexConfig createSimpleIndexConfig(const search::attribute::Config &config) { return SimpleIndexConfig(config.predicateParams().dense_posting_list_threshold(), - config.getGrowStrategy().to_generic_strategy()); + config.getGrowStrategy()); } } // namespace @@ -81,8 +81,8 @@ PredicateAttribute::PredicateAttribute(const vespalib::string &base_file_name, c createSimpleIndexConfig(config), config.predicateParams().arity())), _lower_bound(adjustLowerBound(config.predicateParams().arity(), config.predicateParams().lower_bound())), _upper_bound(adjustUpperBound(config.predicateParams().arity(), config.predicateParams().upper_bound())), - _min_feature(config.getGrowStrategy().to_generic_strategy(), getGenerationHolder()), - _interval_range_vector(config.getGrowStrategy().to_generic_strategy(), getGenerationHolder()), + _min_feature(config.getGrowStrategy(), getGenerationHolder()), + _interval_range_vector(config.getGrowStrategy(), getGenerationHolder()), _max_interval_range(1) { } diff --git a/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp b/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp index 489073e8cb2..9c12293c22a 100644 --- a/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp +++ b/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp @@ -47,7 +47,7 @@ ReferenceAttribute::ReferenceAttribute(const vespalib::stringref baseFileName) ReferenceAttribute::ReferenceAttribute(const vespalib::stringref baseFileName, const Config & cfg) : NotImplementedAttribute(baseFileName, cfg), _store({}), - _indices(cfg.getGrowStrategy().to_generic_strategy(), getGenerationHolder()), + _indices(cfg.getGrowStrategy(), getGenerationHolder()), _compaction_spec(), _gidToLidMapperFactory(), _referenceMappings(getGenerationHolder(), getCommittedDocIdLimitRef()) diff --git a/searchlib/src/vespa/searchlib/attribute/singleboolattribute.cpp b/searchlib/src/vespa/searchlib/attribute/singleboolattribute.cpp index a5bb901be31..bb45e5dbbf3 100644 --- a/searchlib/src/vespa/searchlib/attribute/singleboolattribute.cpp +++ b/searchlib/src/vespa/searchlib/attribute/singleboolattribute.cpp @@ -35,7 +35,7 @@ void SingleBoolAttribute::ensureRoom(DocId docIdLimit) { if (_bv.writer().capacity() < docIdLimit) { const GrowStrategy & gs = this->getConfig().getGrowStrategy(); - uint32_t newSize = docIdLimit + (docIdLimit * gs.getDocsGrowFactor()) + gs.getDocsGrowDelta(); + uint32_t newSize = docIdLimit + (docIdLimit * gs.getGrowFactor()) + gs.getGrowDelta(); bool incGen = _bv.reserve(newSize); if (incGen) { incGeneration(); diff --git a/searchlib/src/vespa/searchlib/attribute/singleenumattribute.cpp b/searchlib/src/vespa/searchlib/attribute/singleenumattribute.cpp index e6695ef6c6c..aada952a7c9 100644 --- a/searchlib/src/vespa/searchlib/attribute/singleenumattribute.cpp +++ b/searchlib/src/vespa/searchlib/attribute/singleenumattribute.cpp @@ -15,7 +15,7 @@ using attribute::Config; SingleValueEnumAttributeBase:: SingleValueEnumAttributeBase(const Config & c, GenerationHolder &genHolder, const vespalib::alloc::Alloc& initial_alloc) - : _enumIndices(c.getGrowStrategy().to_generic_strategy(), genHolder, initial_alloc) + : _enumIndices(c.getGrowStrategy(), genHolder, initial_alloc) { } diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp b/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp index 15f745cf311..7a72572745a 100644 --- a/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp +++ b/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp @@ -25,7 +25,7 @@ template <typename B> SingleValueNumericAttribute<B>:: SingleValueNumericAttribute(const vespalib::string & baseFileName, const AttributeVector::Config & c) : B(baseFileName, c), - _data(c.getGrowStrategy().to_generic_strategy(), getGenerationHolder(), this->get_initial_alloc()) + _data(c.getGrowStrategy(), getGenerationHolder(), this->get_initial_alloc()) { } template <typename B> diff --git a/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.cpp b/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.cpp index 3ee2671d7e1..a98b32d705a 100644 --- a/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.cpp +++ b/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.cpp @@ -25,7 +25,7 @@ SingleValueSmallNumericAttribute(const vespalib::string & baseFileName, _valueShiftShift(valueShiftShift), _valueShiftMask(valueShiftMask), _wordShift(wordShift), - _wordData(c.getGrowStrategy().to_generic_strategy(), getGenerationHolder()) + _wordData(c.getGrowStrategy(), getGenerationHolder()) { assert(_valueMask + 1 == (1u << (1u << valueShiftShift))); assert((_valueShiftMask + 1) * (1u << valueShiftShift) == 8 * sizeof(Word)); diff --git a/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp b/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp index 3c47a5592bc..8531ea66d38 100644 --- a/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp +++ b/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp @@ -66,7 +66,7 @@ LogDataStore::LogDataStore(vespalib::Executor &executor, const vespalib::string _tune(tune), _fileHeaderContext(fileHeaderContext), _genHandler(), - _lidInfo(growStrategy.to_generic_strategy()), + _lidInfo(growStrategy), _fileChunks(), _holdFileChunks(), _active(0), diff --git a/searchlib/src/vespa/searchlib/tensor/tensor_attribute.cpp b/searchlib/src/vespa/searchlib/tensor/tensor_attribute.cpp index 4a6dfecb388..c836ac6bd5b 100644 --- a/searchlib/src/vespa/searchlib/tensor/tensor_attribute.cpp +++ b/searchlib/src/vespa/searchlib/tensor/tensor_attribute.cpp @@ -49,7 +49,7 @@ vespalib::string makeWrongTensorTypeMsg(const ValueType &fieldTensorType, const TensorAttribute::TensorAttribute(vespalib::stringref name, const Config &cfg, TensorStore &tensorStore) : NotImplementedAttribute(name, cfg), - _refVector(cfg.getGrowStrategy().to_generic_strategy(), getGenerationHolder()), + _refVector(cfg.getGrowStrategy(), getGenerationHolder()), _tensorStore(tensorStore), _is_dense(cfg.tensorType().is_dense()), _emptyTensor(createEmptyTensor(cfg.tensorType())), |