summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeir Storli <geirstorli@yahoo.no>2017-04-20 14:57:15 +0200
committerGitHub <noreply@github.com>2017-04-20 14:57:15 +0200
commit386413e2452d17bc2c65a6b302a9a55b9725551e (patch)
treeed0d7ededc1a5a1565843cb2af9788b0756b8d6f
parent4077f420c5fb5f6d2dcbd42bbd6bc2bf6c40094b (diff)
parent4d6a3cafce3cd2a40e3437d80a4c5d35f66394d4 (diff)
Merge pull request #2206 from yahoo/toregge/rename-attribute-specs-builder-to-attribute-aspect-delayer
Toregge/rename attribute specs builder to attribute aspect delayer
-rw-r--r--searchcore/CMakeLists.txt2
-rw-r--r--searchcore/src/apps/tests/persistenceconformance_test.cpp8
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_aspect_delayer/CMakeLists.txt9
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_aspect_delayer/DESC1
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_aspect_delayer/FILES1
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_aspect_delayer/attribute_aspect_delayer_test.cpp (renamed from searchcore/src/tests/proton/attribute/attribute_specs_builder/attribute_specs_builder_test.cpp)93
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_manager/attribute_manager_test.cpp26
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_specs_builder/CMakeLists.txt9
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_specs_builder/DESC1
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_specs_builder/FILES1
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_test.cpp14
-rw-r--r--searchcore/src/tests/proton/documentdb/documentdbconfig/documentdbconfig_test.cpp8
-rw-r--r--searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp17
-rw-r--r--searchcore/src/tests/proton/proton_configurer/proton_configurer_test.cpp8
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.cpp (renamed from searchcore/src/vespa/searchcore/proton/attribute/attribute_specs_builder.cpp)48
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.h (renamed from searchcore/src/vespa/searchcore/proton/attribute/attribute_specs_builder.h)16
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.cpp11
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.h7
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.cpp4
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.cpp8
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.h8
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.cpp7
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.h6
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.cpp16
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.h8
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_specs.h31
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp26
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h8
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdbconfig.cpp15
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdbconfig.h9
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp8
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdbconfigscout.cpp6
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.cpp8
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/documentdb_config_builder.cpp8
37 files changed, 116 insertions, 346 deletions
diff --git a/searchcore/CMakeLists.txt b/searchcore/CMakeLists.txt
index 8b2025462ed..3e7dfc1f45c 100644
--- a/searchcore/CMakeLists.txt
+++ b/searchcore/CMakeLists.txt
@@ -61,11 +61,11 @@ vespa_define_module(
src/tests/fdispatch/search_path
src/tests/grouping
src/tests/proton/attribute
+ src/tests/proton/attribute/attribute_aspect_delayer
src/tests/proton/attribute/attribute_directory
src/tests/proton/attribute/attribute_initializer
src/tests/proton/attribute/attribute_manager
src/tests/proton/attribute/attribute_populator
- src/tests/proton/attribute/attribute_specs_builder
src/tests/proton/attribute/attribute_usage_filter
src/tests/proton/attribute/attributes_state_explorer
src/tests/proton/attribute/document_field_populator
diff --git a/searchcore/src/apps/tests/persistenceconformance_test.cpp b/searchcore/src/apps/tests/persistenceconformance_test.cpp
index 18a51115089..75c37394e83 100644
--- a/searchcore/src/apps/tests/persistenceconformance_test.cpp
+++ b/searchcore/src/apps/tests/persistenceconformance_test.cpp
@@ -27,7 +27,6 @@ LOG_SETUP("persistenceconformance_test");
#include <tests/proton/common/dummydbowner.h>
#include <vespa/vespalib/io/fileutil.h>
#include <vespa/searchcore/proton/common/hw_info.h>
-#include <vespa/searchcore/proton/attribute/attribute_specs_builder.h>
using namespace config;
@@ -113,17 +112,14 @@ public:
SchemaBuilder::build(*indexschema, *schema);
SchemaBuilder::build(*attributes, *schema);
SchemaBuilder::build(*summary, *schema);
- AttributeSpecsBuilder attributeSpecsBuilder;
- attributeSpecsBuilder.setup(*attributes, SummarymapConfig());
return DocumentDBConfig::SP(new DocumentDBConfig(
1,
std::make_shared<RankProfilesConfig>(),
std::make_shared<matching::RankingConstants>(),
indexschema,
- attributeSpecsBuilder.getAttributesConfig(),
- attributeSpecsBuilder.getAttributeSpecs(),
+ attributes,
summary,
- attributeSpecsBuilder.getSummarymapConfig(),
+ std::make_shared<SummarymapConfig>(),
std::make_shared<JuniperrcConfig>(),
_typeCfg,
_repo,
diff --git a/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/CMakeLists.txt b/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/CMakeLists.txt
new file mode 100644
index 00000000000..72842d6a59a
--- /dev/null
+++ b/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Copyright 2017 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(searchcore_attribute_aspect_delayer_test_app TEST
+ SOURCES
+ attribute_aspect_delayer_test.cpp
+ DEPENDS
+ searchcore_attribute
+ searchcore_pcommon
+)
+vespa_add_test(NAME searchcore_attribute_aspect_delayer_test_app COMMAND searchcore_attribute_aspect_delayer_test_app)
diff --git a/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/DESC b/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/DESC
new file mode 100644
index 00000000000..0ad2e46da02
--- /dev/null
+++ b/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/DESC
@@ -0,0 +1 @@
+attribute aspect delayer test. Take a look at attribute_aspect_delayer_test.cpp for details.
diff --git a/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/FILES b/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/FILES
new file mode 100644
index 00000000000..459c36ca3b4
--- /dev/null
+++ b/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/FILES
@@ -0,0 +1 @@
+attribute_aspect_delayer_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/attribute_specs_builder/attribute_specs_builder_test.cpp b/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/attribute_aspect_delayer_test.cpp
index 585ffc88414..d8407355e41 100644
--- a/searchcore/src/tests/proton/attribute/attribute_specs_builder/attribute_specs_builder_test.cpp
+++ b/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/attribute_aspect_delayer_test.cpp
@@ -1,12 +1,9 @@
// Copyright 2017 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("attribute_specs_builder_test");
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/stllike/string.h>
#include <vespa/searchcore/proton/test/attribute_utils.h>
-#include <vespa/searchcore/proton/attribute/attribute_specs_builder.h>
-#include <vespa/searchcore/proton/attribute/attribute_specs.h>
+#include <vespa/searchcore/proton/attribute/attribute_aspect_delayer.h>
#include <vespa/searchcore/proton/common/i_document_type_inspector.h>
#include <vespa/searchcore/proton/common/indexschema_inspector.h>
#include <vespa/vespalib/test/insertion_operators.h>
@@ -24,36 +21,9 @@ using search::attribute::Config;
using search::attribute::BasicType;
using search::attribute::CollectionType;
-namespace {
-
-const char *boolStr(bool val) {
- return val ? "true" : "false";
-}
-
-}
-
namespace std
{
-ostream &operator<<(ostream &os, const Config &cfg)
-{
- os << "{basicType=" << cfg.basicType().asString();
- os << ", collectionType=" << cfg.collectionType().asString();
- os << ", fastAccess=" << boolStr(cfg.fastAccess());
- os << "}";
- return os;
-}
-
-ostream &operator<<(ostream &os, const proton::AttributeSpec &spec)
-{
- os << "{name=" << spec.getName();
- os << ", hideFromReading=" << boolStr(spec.getHideFromReading());
- os << ", hideFromWriting=" << boolStr(spec.getHideFromWriting());
- os << ", " << spec.getConfig();
- os << "}";
- return os;
-}
-
ostream &operator<<(ostream &os, const SummarymapConfig::Override &override)
{
os << "{field=" << override.field << ", command=" << override.command << ", arguments=" << override.arguments << "}";
@@ -117,23 +87,6 @@ AttributesConfig::Attribute make_fa(const AttributesConfig::Attribute &cfg)
return attr;
}
-Config make_fa(const Config &cfg)
-{
- Config modCfg(cfg);
- modCfg.setFastAccess(true);
- return modCfg;
-}
-
-const Config int32_sv(BasicType::Type::INT32);
-const Config string_sv(BasicType::Type::STRING);
-
-Config getTensor(const vespalib::string &spec)
-{
- Config ret(BasicType::Type::TENSOR);
- ret.setTensorType(vespalib::eval::ValueType::from_spec(spec));
- return ret;
-}
-
SummarymapConfig::Override make_attribute_override(const vespalib::string &name)
{
SummarymapConfig::Override override;
@@ -184,12 +137,12 @@ class Fixture
{
MyInspector _inspector;
IndexschemaConfigBuilder _oldIndexSchema;
- AttributeSpecsBuilder _builder;
+ AttributeAspectDelayer _delayer;
public:
Fixture()
: _inspector(),
- _builder()
+ _delayer()
{
}
~Fixture() { }
@@ -201,44 +154,35 @@ public:
field.name = name;
_oldIndexSchema.indexfield.emplace_back(field);
}
- void setup(const AttributesConfig &newAttributesConfig, const SummarymapConfig &newSummarymapConfig) {
- _builder.setup(newAttributesConfig, newSummarymapConfig);
- }
void setup(const AttributesConfig &oldAttributesConfig, const SummarymapConfig &oldSummarymapConfig,
const AttributesConfig &newAttributesConfig, const SummarymapConfig &newSummarymapConfig) {
IndexschemaInspector indexschemaInspector(_oldIndexSchema);
- _builder.setup(oldAttributesConfig, oldSummarymapConfig,
+ _delayer.setup(oldAttributesConfig, oldSummarymapConfig,
newAttributesConfig, newSummarymapConfig,
indexschemaInspector, _inspector);
}
- void assertSpecs(const std::vector<AttributeSpec> &expSpecs)
- {
- const auto &actSpecs = _builder.getAttributeSpecs();
- EXPECT_EQUAL(expSpecs, actSpecs->getSpecs());
- }
void assertAttributeConfig(const std::vector<AttributesConfig::Attribute> &exp)
{
- auto actConfig = _builder.getAttributesConfig();
+ auto actConfig = _delayer.getAttributesConfig();
EXPECT_TRUE(exp == actConfig->attribute);
}
void assertSummarymapConfig(const std::vector<SummarymapConfig::Override> &exp)
{
- auto summarymapConfig = _builder.getSummarymapConfig();
+ auto summarymapConfig = _delayer.getSummarymapConfig();
EXPECT_EQUAL(exp, summarymapConfig->override);
}
};
-TEST_F("require that empty specs is OK", Fixture)
+TEST_F("require that empty config is OK", Fixture)
{
- f.setup(attrCfg({}), smCfg({}));
- TEST_DO(f.assertSpecs({}));
+ f.setup(attrCfg({}), smCfg({}), attrCfg({}), smCfg({}));
TEST_DO(f.assertAttributeConfig({}));
+ TEST_DO(f.assertSummarymapConfig({}));
}
-TEST_F("require that simple attribute specs is OK", Fixture)
+TEST_F("require that simple attribute config is OK", Fixture)
{
- f.setup(attrCfg({make_int32_sv_cfg()}), smCfg({make_attribute_override("a")}));
- TEST_DO(f.assertSpecs({AttributeSpec("a", int32_sv, false, false)}));
+ f.setup(attrCfg({make_int32_sv_cfg()}), smCfg({make_attribute_override("a")}), attrCfg({make_int32_sv_cfg()}), smCfg({make_attribute_override("a")}));
TEST_DO(f.assertAttributeConfig({make_int32_sv_cfg()}));
TEST_DO(f.assertSummarymapConfig({make_attribute_override("a")}));
}
@@ -247,7 +191,6 @@ TEST_F("require that adding attribute aspect is delayed if field type is unchang
{
f.addFields({"a"});
f.setup(attrCfg({}), smCfg({}), attrCfg({make_int32_sv_cfg()}), smCfg({make_attribute_override("a")}));
- TEST_DO(f.assertSpecs({AttributeSpec("a", int32_sv, false, true)}));
TEST_DO(f.assertAttributeConfig({}));
TEST_DO(f.assertSummarymapConfig({}));
}
@@ -256,7 +199,6 @@ TEST_F("require that adding attribute aspect is delayed if field type is unchang
{
f.addFields({"a"});
f.setup(attrCfg({}), smCfg({}), attrCfg({make_int32_sv_cfg()}), smCfg({make_geopos_override("a")}));
- TEST_DO(f.assertSpecs({AttributeSpec("a", int32_sv, false, true)}));
TEST_DO(f.assertAttributeConfig({}));
TEST_DO(f.assertSummarymapConfig({make_geopos_override("a")}));
}
@@ -264,7 +206,6 @@ TEST_F("require that adding attribute aspect is delayed if field type is unchang
TEST_F("require that adding attribute is not delayed if field type changed", Fixture)
{
f.setup(attrCfg({}), smCfg({}), attrCfg({make_int32_sv_cfg()}), smCfg({make_attribute_override("a")}));
- TEST_DO(f.assertSpecs({AttributeSpec("a", int32_sv, false, false)}));
TEST_DO(f.assertAttributeConfig({make_int32_sv_cfg()}));
TEST_DO(f.assertSummarymapConfig({make_attribute_override("a")}));
}
@@ -273,7 +214,6 @@ TEST_F("require that removing attribute aspect is delayed if field type is uncha
{
f.addFields({"a"});
f.setup(attrCfg({make_int32_sv_cfg()}), smCfg({make_attribute_override("a")}), attrCfg({}), smCfg({}));
- TEST_DO(f.assertSpecs({AttributeSpec("a", int32_sv, true, false)}));
TEST_DO(f.assertAttributeConfig({make_int32_sv_cfg()}));
TEST_DO(f.assertSummarymapConfig({make_attribute_override("a")}));
}
@@ -282,7 +222,6 @@ TEST_F("require that removing attribute aspect is delayed if field type is uncha
{
f.addFields({"a"});
f.setup(attrCfg({make_int32_sv_cfg()}), smCfg({make_geopos_override("a")}), attrCfg({}), smCfg({}));
- TEST_DO(f.assertSpecs({AttributeSpec("a", int32_sv, true, false)}));
TEST_DO(f.assertAttributeConfig({make_int32_sv_cfg()}));
TEST_DO(f.assertSummarymapConfig({}));
}
@@ -290,7 +229,6 @@ TEST_F("require that removing attribute aspect is delayed if field type is uncha
TEST_F("require that removing attribute aspect is not delayed if field type changed", Fixture)
{
f.setup(attrCfg({make_int32_sv_cfg()}), smCfg({make_attribute_override("a")}), attrCfg({}), smCfg({}));
- TEST_DO(f.assertSpecs({}));
TEST_DO(f.assertAttributeConfig({}));
TEST_DO(f.assertSummarymapConfig({}));
}
@@ -300,7 +238,6 @@ TEST_F("require that removing attribute aspect is not delayed if also indexed",
f.addFields({"a"});
f.addOldIndexField("a");
f.setup(attrCfg({make_string_sv_cfg()}), smCfg({make_attribute_override("a")}), attrCfg({}), smCfg({}));
- TEST_DO(f.assertSpecs({}));
TEST_DO(f.assertAttributeConfig({}));
TEST_DO(f.assertSummarymapConfig({}));
}
@@ -309,7 +246,6 @@ TEST_F("require that removing attribute aspect is not delayed for tensor", Fixtu
{
f.addFields({"a"});
f.setup(attrCfg({make_tensor_cfg("tensor(x[10])")}), smCfg({make_attribute_override("a")}), attrCfg({}), smCfg({}));
- TEST_DO(f.assertSpecs({}));
TEST_DO(f.assertAttributeConfig({}));
TEST_DO(f.assertSummarymapConfig({}));
}
@@ -318,7 +254,6 @@ TEST_F("require that removing attribute aspect is not delayed for predicate", Fi
{
f.addFields({"a"});
f.setup(attrCfg({make_predicate_cfg(4)}), smCfg({}), attrCfg({}), smCfg({}));
- TEST_DO(f.assertSpecs({}));
TEST_DO(f.assertAttributeConfig({}));
TEST_DO(f.assertSummarymapConfig({}));
}
@@ -327,7 +262,6 @@ TEST_F("require that removing attribute aspect is not delayed for reference", Fi
{
f.addFields({"a"});
f.setup(attrCfg({make_reference_cfg()}), smCfg({}), attrCfg({}), smCfg({}));
- TEST_DO(f.assertSpecs({}));
TEST_DO(f.assertAttributeConfig({}));
TEST_DO(f.assertSummarymapConfig({}));
}
@@ -336,7 +270,6 @@ TEST_F("require that fast access flag change is delayed, false->true edge", Fixt
{
f.addFields({"a"});
f.setup(attrCfg({make_int32_sv_cfg()}), smCfg({make_attribute_override("a")}), attrCfg({make_fa(make_int32_sv_cfg())}), smCfg({make_attribute_override("a")}));
- TEST_DO(f.assertSpecs({AttributeSpec("a", int32_sv)}));
TEST_DO(f.assertAttributeConfig({make_int32_sv_cfg()}));
TEST_DO(f.assertSummarymapConfig({make_attribute_override("a")}));
}
@@ -345,7 +278,6 @@ TEST_F("require that fast access flag change is delayed, true->false edge", Fixt
{
f.addFields({"a"});
f.setup(attrCfg({make_fa(make_int32_sv_cfg())}), smCfg({make_attribute_override("a")}), attrCfg({make_int32_sv_cfg()}), smCfg({make_attribute_override("a")}));
- TEST_DO(f.assertSpecs({AttributeSpec("a", make_fa(int32_sv))}));
TEST_DO(f.assertAttributeConfig({make_fa(make_int32_sv_cfg())}));
TEST_DO(f.assertSummarymapConfig({make_attribute_override("a")}));
}
@@ -354,7 +286,6 @@ TEST_F("require that fast access flag change is delayed, false->true edge, tenso
{
f.addFields({"a"});
f.setup(attrCfg({make_tensor_cfg("tensor(x[10])")}), smCfg({make_attribute_override("a")}), attrCfg({make_fa(make_tensor_cfg("tensor(x[10])"))}), smCfg({make_attribute_override("a")}));
- TEST_DO(f.assertSpecs({AttributeSpec("a", getTensor("tensor(x[10])"))}));
TEST_DO(f.assertAttributeConfig({make_tensor_cfg("tensor(x[10])")}));
TEST_DO(f.assertSummarymapConfig({make_attribute_override("a")}));
}
@@ -363,7 +294,6 @@ TEST_F("require that fast access flag change is not delayed, true->false edge, t
{
f.addFields({"a"});
f.setup(attrCfg({make_fa(make_tensor_cfg("tensor(x[10])"))}), smCfg({make_attribute_override("a")}), attrCfg({make_tensor_cfg("tensor(x[10])")}), smCfg({make_attribute_override("a")}));
- TEST_DO(f.assertSpecs({AttributeSpec("a", getTensor("tensor(x[10])"))}));
TEST_DO(f.assertAttributeConfig({make_tensor_cfg("tensor(x[10])")}));
TEST_DO(f.assertSummarymapConfig({make_attribute_override("a")}));
}
@@ -373,7 +303,6 @@ TEST_F("require that fast access flag change is not delayed, true->false edge, s
f.addFields({"a"});
f.addOldIndexField("a");
f.setup(attrCfg({make_fa(make_string_sv_cfg())}), smCfg({make_attribute_override("a")}), attrCfg({make_string_sv_cfg()}), smCfg({make_attribute_override("a")}));
- TEST_DO(f.assertSpecs({AttributeSpec("a", string_sv, false, false)}));
TEST_DO(f.assertAttributeConfig({make_string_sv_cfg()}));
TEST_DO(f.assertSummarymapConfig({make_attribute_override("a")}));
}
diff --git a/searchcore/src/tests/proton/attribute/attribute_manager/attribute_manager_test.cpp b/searchcore/src/tests/proton/attribute/attribute_manager/attribute_manager_test.cpp
index 4e33a433655..2036c6e1145 100644
--- a/searchcore/src/tests/proton/attribute/attribute_manager/attribute_manager_test.cpp
+++ b/searchcore/src/tests/proton/attribute/attribute_manager/attribute_manager_test.cpp
@@ -225,12 +225,12 @@ struct ParallelAttributeManager
AttributeManagerInitializer::SP initializer;
ParallelAttributeManager(search::SerialNum configSerialNum, AttributeManager::SP baseAttrMgr,
- const AttributeSpecs &attrSpecs, uint32_t docIdLimit);
+ const AttributesConfig &attrCfg, uint32_t docIdLimit);
~ParallelAttributeManager();
};
ParallelAttributeManager::ParallelAttributeManager(search::SerialNum configSerialNum, AttributeManager::SP baseAttrMgr,
- const AttributeSpecs &attrSpecs, uint32_t docIdLimit)
+ const AttributesConfig &attrCfg, uint32_t docIdLimit)
: documentMetaStoreInitTask(std::make_shared<DummyInitializerTask>()),
bucketDbOwner(std::make_shared<BucketDBOwner>()),
documentMetaStore(std::make_shared<DocumentMetaStore>(bucketDbOwner)),
@@ -239,7 +239,7 @@ ParallelAttributeManager::ParallelAttributeManager(search::SerialNum configSeria
fastAccessAttributesOnly(false),
mgr(std::make_shared<AttributeManager::SP>()),
initializer(std::make_shared<AttributeManagerInitializer>(configSerialNum, documentMetaStoreInitTask,
- documentMetaStore, baseAttrMgr, attrSpecs,
+ documentMetaStore, baseAttrMgr, attrCfg,
attributeGrow, attributeGrowNumDocs,
fastAccessAttributesOnly, mgr))
{
@@ -670,6 +670,16 @@ TEST_F("require that attributes can be initialized and loaded in sequence", Base
}
}
+AttributesConfigBuilder::Attribute
+createAttributeConfig(const vespalib::string &name)
+{
+ AttributesConfigBuilder::Attribute result;
+ result.name = name;
+ result.datatype = AttributesConfigBuilder::Attribute::Datatype::INT32;
+ result.collectiontype = AttributesConfigBuilder::Attribute::Collectiontype::SINGLE;
+ return result;
+}
+
TEST_F("require that attributes can be initialized and loaded in parallel", BaseFixture)
{
{
@@ -679,12 +689,12 @@ TEST_F("require that attributes can be initialized and loaded in parallel", Base
{
AttributeManagerFixture amf(f);
- AttributeSpecs attrSpecs;
- attrSpecs.emplace_back("a1", INT32_SINGLE);
- attrSpecs.emplace_back("a2", INT32_SINGLE);
- attrSpecs.emplace_back("a3", INT32_SINGLE);
+ AttributesConfigBuilder attrCfg;
+ attrCfg.attribute.push_back(createAttributeConfig("a1"));
+ attrCfg.attribute.push_back(createAttributeConfig("a2"));
+ attrCfg.attribute.push_back(createAttributeConfig("a3"));
- ParallelAttributeManager newMgr(createSerialNum + 5, amf._msp, attrSpecs, 10);
+ ParallelAttributeManager newMgr(createSerialNum + 5, amf._msp, attrCfg, 10);
AttributeGuard::UP a1 = newMgr.mgr->get()->getAttribute("a1");
TEST_DO(validateAttribute(*a1->get()));
diff --git a/searchcore/src/tests/proton/attribute/attribute_specs_builder/CMakeLists.txt b/searchcore/src/tests/proton/attribute/attribute_specs_builder/CMakeLists.txt
deleted file mode 100644
index b676722c504..00000000000
--- a/searchcore/src/tests/proton/attribute/attribute_specs_builder/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright 2017 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-vespa_add_executable(searchcore_attribute_specs_builder_test_app TEST
- SOURCES
- attribute_specs_builder_test.cpp
- DEPENDS
- searchcore_attribute
- searchcore_pcommon
-)
-vespa_add_test(NAME searchcore_attribute_specs_builder_test_app COMMAND searchcore_attribute_specs_builder_test_app)
diff --git a/searchcore/src/tests/proton/attribute/attribute_specs_builder/DESC b/searchcore/src/tests/proton/attribute/attribute_specs_builder/DESC
deleted file mode 100644
index 5cfe2ba2167..00000000000
--- a/searchcore/src/tests/proton/attribute/attribute_specs_builder/DESC
+++ /dev/null
@@ -1 +0,0 @@
-attribute specs builder test. Take a look at attribute_specs_builder_test.cpp for details.
diff --git a/searchcore/src/tests/proton/attribute/attribute_specs_builder/FILES b/searchcore/src/tests/proton/attribute/attribute_specs_builder/FILES
deleted file mode 100644
index 0c648bd92f6..00000000000
--- a/searchcore/src/tests/proton/attribute/attribute_specs_builder/FILES
+++ /dev/null
@@ -1 +0,0 @@
-attribute_specs_builder_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/attribute_test.cpp b/searchcore/src/tests/proton/attribute/attribute_test.cpp
index 3eb69b045f9..114fd3b43bd 100644
--- a/searchcore/src/tests/proton/attribute/attribute_test.cpp
+++ b/searchcore/src/tests/proton/attribute/attribute_test.cpp
@@ -9,7 +9,6 @@ LOG_SETUP("attribute_test");
#include <vespa/document/update/arithmeticvalueupdate.h>
#include <vespa/searchcommon/attribute/attributecontent.h>
#include <vespa/searchcore/proton/attribute/attribute_collection_spec_factory.h>
-#include <vespa/searchcore/proton/attribute/attribute_specs.h>
#include <vespa/searchcore/proton/attribute/attribute_writer.h>
#include <vespa/searchcore/proton/attribute/attributemanager.h>
#include <vespa/searchcore/proton/attribute/filter_attribute_manager.h>
@@ -449,23 +448,24 @@ TEST_F("require that attribute adapter handles predicate update", Fixture)
struct AttributeCollectionSpecFixture
{
- AttributeSpecs _specs;
+ AttributesConfigBuilder _builder;
AttributeCollectionSpecFactory _factory;
AttributeCollectionSpecFixture(bool fastAccessOnly)
- : _specs(),
+ : _builder(),
_factory(search::GrowStrategy(), 100, fastAccessOnly)
{
addAttribute("a1", false);
addAttribute("a2", true);
}
void addAttribute(const vespalib::string &name, bool fastAccess) {
- AVConfig cfg;
- cfg.setFastAccess(fastAccess);
- _specs.emplace_back(name, cfg);
+ AttributesConfigBuilder::Attribute attr;
+ attr.name = name;
+ attr.fastaccess = fastAccess;
+ _builder.attribute.push_back(attr);
}
AttributeCollectionSpec::UP create(uint32_t docIdLimit,
search::SerialNum serialNum) {
- return _factory.create(_specs, docIdLimit, serialNum);
+ return _factory.create(_builder, docIdLimit, serialNum);
}
};
diff --git a/searchcore/src/tests/proton/documentdb/documentdbconfig/documentdbconfig_test.cpp b/searchcore/src/tests/proton/documentdb/documentdbconfig/documentdbconfig_test.cpp
index 90532670e74..a1f5b606415 100644
--- a/searchcore/src/tests/proton/documentdb/documentdbconfig/documentdbconfig_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/documentdbconfig/documentdbconfig_test.cpp
@@ -3,7 +3,6 @@
#include <vespa/config-attributes.h>
#include <vespa/config-imported-fields.h>
#include <vespa/config-rank-profiles.h>
-#include <vespa/searchcore/proton/attribute/attribute_specs.h>
#include <vespa/searchcore/proton/server/documentdbconfig.h>
#include <vespa/searchcore/proton/test/documentdb_config_builder.h>
#include <vespa/vespalib/testkit/testapp.h>
@@ -114,11 +113,4 @@ TEST_F("require that makeReplayConfig() drops unneeded configs", Fixture)
EXPECT_TRUE(DDBC::preferOriginalConfig(f.nullCfg).get() == nullptr);
}
-TEST_F("require that attribute spec is setup", Fixture)
-{
- const auto &attributeSpecs = f.fullCfg->getAttributeSpecs().getSpecs();
- EXPECT_EQUAL(1, attributeSpecs.size());
- EXPECT_EQUAL("my_attribute", attributeSpecs[0].getName());
-}
-
TEST_MAIN() { TEST_RUN_ALL(); }
diff --git a/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp b/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp
index d5c556c2db4..b9d8a55b302 100644
--- a/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp
+++ b/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp
@@ -14,7 +14,6 @@
#include <vespa/searchcore/proton/server/proton_config_fetcher.h>
#include <vespa/searchcore/proton/server/proton_config_snapshot.h>
#include <vespa/searchcore/proton/server/i_proton_configurer.h>
-#include <vespa/searchcore/proton/attribute/attribute_specs.h>
#include <vespa/searchsummary/config/config-juniperrc.h>
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/varholder.h>
@@ -250,22 +249,6 @@ TEST_FF("require that documentdb config manager builds schema with imported attr
EXPECT_EQUAL("imported", schema->getImportedAttributeFields()[0].getName());
}
-TEST_FF("require that documentdb config manager builds attribute specs",
- ConfigTestFixture("search"),
- DocumentDBConfigManager(f1.configId + "/typea", "typea"))
-{
- auto *docType = f1.addDocType("typea");
- docType->attributesBuilder.attribute.resize(1);
- docType->attributesBuilder.attribute[0].name = "attrname";
-
- ConfigRetriever retriever(f2.createConfigKeySet(), f1.context);
- f2.forwardConfig(f1.getBootstrapConfig(1));
- f2.update(retriever.getBootstrapConfigs()); // Cheating, but we only need the configs
- const auto &attrSpecs = f2.getConfig()->getAttributeSpecs().getSpecs();
- EXPECT_EQUAL(1u, attrSpecs.size());
- EXPECT_EQUAL("attrname", attrSpecs[0].getName());
-}
-
TEST_FFF("require that proton config fetcher follows changes to bootstrap",
ConfigTestFixture("search"),
ProtonConfigOwner(),
diff --git a/searchcore/src/tests/proton/proton_configurer/proton_configurer_test.cpp b/searchcore/src/tests/proton/proton_configurer/proton_configurer_test.cpp
index 19abad7ed03..7a8247c8944 100644
--- a/searchcore/src/tests/proton/proton_configurer/proton_configurer_test.cpp
+++ b/searchcore/src/tests/proton/proton_configurer/proton_configurer_test.cpp
@@ -20,7 +20,6 @@
#include <vespa/searchcommon/common/schemaconfigurer.h>
#include <vespa/vespalib/util/threadstackexecutor.h>
#include <vespa/vespalib/test/insertion_operators.h>
-#include <vespa/searchcore/proton/attribute/attribute_specs_builder.h>
using namespace config;
using namespace proton;
@@ -72,17 +71,14 @@ struct DBConfigFixture {
const vespalib::string &configId,
const vespalib::string &docTypeName)
{
- AttributeSpecsBuilder attributeSpecsBuilder;
- attributeSpecsBuilder.setup(_attributesBuilder, _summarymapBuilder);
return std::make_shared<DocumentDBConfig>
(generation,
std::make_shared<RankProfilesConfig>(_rankProfilesBuilder),
buildRankingConstants(),
std::make_shared<IndexschemaConfig>(_indexschemaBuilder),
- attributeSpecsBuilder.getAttributesConfig(),
- attributeSpecsBuilder.getAttributeSpecs(),
+ std::make_shared<AttributesConfig>(_attributesBuilder),
std::make_shared<SummaryConfig>(_summaryBuilder),
- attributeSpecsBuilder.getSummarymapConfig(),
+ std::make_shared<SummarymapConfig>(_summarymapBuilder),
std::make_shared<JuniperrcConfig>(_juniperrcBuilder),
documentTypes,
repo,
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/attribute/CMakeLists.txt
index c4e9e4f2969..cdb7b01254e 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/attribute/CMakeLists.txt
@@ -2,6 +2,7 @@
vespa_add_library(searchcore_attribute STATIC
SOURCES
address_space_usage_stats.cpp
+ attribute_aspect_delayer.cpp
attribute_collection_spec_factory.cpp
attribute_collection_spec.cpp
attribute_directory.cpp
@@ -12,7 +13,6 @@ vespa_add_library(searchcore_attribute STATIC
attribute_manager_initializer.cpp
attribute_populator.cpp
attribute_spec.cpp
- attribute_specs_builder.cpp
attribute_usage_filter.cpp
attribute_usage_sampler_context.cpp
attribute_usage_sampler_functor.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_specs_builder.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.cpp
index 9abb02cf2f7..f69036ba316 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_specs_builder.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.cpp
@@ -1,6 +1,6 @@
// Copyright 2017 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "attribute_specs_builder.h"
+#include "attribute_aspect_delayer.h"
#include <vespa/searchlib/attribute/configconverter.h>
#include <vespa/searchcore/proton/common/i_document_type_inspector.h>
#include <vespa/searchcore/proton/common/i_indexschema_inspector.h>
@@ -8,7 +8,6 @@
#include <vespa/vespalib/stllike/hash_set.hpp>
#include <vespa/config-attributes.h>
#include <vespa/config-summarymap.h>
-#include "attribute_specs.h"
using search::attribute::ConfigConverter;
using vespa::config::search::AttributesConfig;
@@ -40,46 +39,28 @@ bool willTriggerReprocessOnAttributeAspectRemoval(const search::attribute::Confi
}
-AttributeSpecsBuilder::AttributeSpecsBuilder()
- : _specs(std::make_shared<AttributeSpecs>()),
- _attributesConfig(std::make_shared<AttributesConfigBuilder>()),
+AttributeAspectDelayer::AttributeAspectDelayer()
+ : _attributesConfig(std::make_shared<AttributesConfigBuilder>()),
_summarymapConfig(std::make_shared<SummarymapConfigBuilder>())
{
}
-AttributeSpecsBuilder::~AttributeSpecsBuilder()
+AttributeAspectDelayer::~AttributeAspectDelayer()
{
}
-std::shared_ptr<const AttributeSpecs>
-AttributeSpecsBuilder::getAttributeSpecs() const
-{
- return _specs;
-}
-
-std::shared_ptr<AttributeSpecsBuilder::AttributesConfig>
-AttributeSpecsBuilder::getAttributesConfig() const
+std::shared_ptr<AttributeAspectDelayer::AttributesConfig>
+AttributeAspectDelayer::getAttributesConfig() const
{
return _attributesConfig;
}
-std::shared_ptr<AttributeSpecsBuilder::SummarymapConfig>
-AttributeSpecsBuilder::getSummarymapConfig() const
+std::shared_ptr<AttributeAspectDelayer::SummarymapConfig>
+AttributeAspectDelayer::getSummarymapConfig() const
{
return _summarymapConfig;
}
-void
-AttributeSpecsBuilder::setup(const AttributesConfig &newAttributesConfig, const SummarymapConfig &newSummarymapConfig)
-{
- for (const auto &attr : newAttributesConfig.attribute) {
- search::attribute::Config cfg = ConfigConverter::convert(attr);
- _specs->emplace_back(attr.name, cfg);
- }
- _attributesConfig = std::make_shared<AttributesConfigBuilder>(newAttributesConfig);
- _summarymapConfig = std::make_shared<SummarymapConfigBuilder>(newSummarymapConfig);
-}
-
namespace {
void
@@ -88,7 +69,6 @@ handleNewAttributes(const AttributesConfig &oldAttributesConfig,
const SummarymapConfig &newSummarymapConfig,
const IIndexschemaInspector &oldIndexschemaInspector,
const IDocumentTypeInspector &inspector,
- AttributeSpecs &specs,
AttributesConfigBuilder &attributesConfig,
SummarymapConfigBuilder &summarymapConfig)
{
@@ -98,7 +78,6 @@ handleNewAttributes(const AttributesConfig &oldAttributesConfig,
search::attribute::Config newCfg = ConfigConverter::convert(newAttr);
if (!inspector.hasUnchangedField(newAttr.name)) {
// No reprocessing due to field type change, just use new config
- specs.emplace_back(newAttr.name, newCfg);
attributesConfig.attribute.emplace_back(newAttr);
} else {
auto oldAttr = oldAttrs.lookup(newAttr.name);
@@ -107,7 +86,6 @@ handleNewAttributes(const AttributesConfig &oldAttributesConfig,
if (willTriggerReprocessOnAttributeAspectRemoval(oldCfg, oldIndexschemaInspector, newAttr.name) || !oldAttr->fastaccess) {
// Delay change of fast access flag
newCfg.setFastAccess(oldAttr->fastaccess);
- specs.emplace_back(newAttr.name, newCfg);
auto modNewAttr = newAttr;
modNewAttr.fastaccess = oldAttr->fastaccess;
attributesConfig.attribute.emplace_back(modNewAttr);
@@ -119,12 +97,10 @@ handleNewAttributes(const AttributesConfig &oldAttributesConfig,
// Don't delay change of fast access flag from true to
// false when removing attribute aspect in a way that
// doesn't trigger reprocessing.
- specs.emplace_back(newAttr.name, newCfg);
attributesConfig.attribute.emplace_back(newAttr);
}
} else {
// Delay addition of attribute aspect
- specs.emplace_back(newAttr.name, newCfg, false, true);
delayed.insert(newAttr.name);
}
}
@@ -147,7 +123,6 @@ handleOldAttributes(const AttributesConfig &oldAttributesConfig,
const SummarymapConfig &oldSummarymapConfig,
const IIndexschemaInspector &oldIndexschemaInspector,
const IDocumentTypeInspector &inspector,
- AttributeSpecs &specs,
AttributesConfigBuilder &attributesConfig,
SummarymapConfigBuilder &summarymapConfig)
{
@@ -161,7 +136,6 @@ handleOldAttributes(const AttributesConfig &oldAttributesConfig,
// Delay removal of attribute aspect if it would trigger
// reprocessing.
if (willTriggerReprocessOnAttributeAspectRemoval(oldCfg, oldIndexschemaInspector, oldAttr.name)) {
- specs.emplace_back(oldAttr.name, oldCfg, true, false);
attributesConfig.attribute.emplace_back(oldAttr);
delayed.insert(oldAttr.name);
}
@@ -181,7 +155,7 @@ handleOldAttributes(const AttributesConfig &oldAttributesConfig,
}
void
-AttributeSpecsBuilder::setup(const AttributesConfig &oldAttributesConfig,
+AttributeAspectDelayer::setup(const AttributesConfig &oldAttributesConfig,
const SummarymapConfig &oldSummarymapConfig,
const AttributesConfig &newAttributesConfig,
const SummarymapConfig &newSummarymapConfig,
@@ -190,11 +164,11 @@ AttributeSpecsBuilder::setup(const AttributesConfig &oldAttributesConfig,
{
handleNewAttributes(oldAttributesConfig, newAttributesConfig,
newSummarymapConfig,
- oldIndexschemaInspector, inspector, *_specs,
+ oldIndexschemaInspector, inspector,
*_attributesConfig, *_summarymapConfig);
handleOldAttributes(oldAttributesConfig, newAttributesConfig,
oldSummarymapConfig,
- oldIndexschemaInspector, inspector, *_specs,
+ oldIndexschemaInspector, inspector,
*_attributesConfig, *_summarymapConfig);
}
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_specs_builder.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.h
index f937c0e72a8..b9d387a9e30 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_specs_builder.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.h
@@ -15,13 +15,12 @@ namespace proton {
class IDocumentTypeInspector;
class IIndexschemaInspector;
-class AttributeSpecs;
/*
- * Class to build adjusted attribute config and vector of attribute specs
+ * Class to build adjusted attributes config and summary map config
* to eliminate need for reprocessing when system is online.
*/
-class AttributeSpecsBuilder
+class AttributeAspectDelayer
{
using AttributesConfigBuilder = vespa::config::search::internal::InternalAttributesType;
using AttributesConfig = const vespa::config::search::internal::InternalAttributesType;
@@ -30,20 +29,14 @@ class AttributeSpecsBuilder
using SummarymapConfigBuilder = vespa::config::search::internal::InternalSummarymapType;
using SummarymapConfig = const vespa::config::search::internal::InternalSummarymapType;
- std::shared_ptr<AttributeSpecs> _specs;
std::shared_ptr<AttributesConfigBuilder> _attributesConfig;
std::shared_ptr<SummarymapConfigBuilder> _summarymapConfig;
public:
- AttributeSpecsBuilder();
- ~AttributeSpecsBuilder();
+ AttributeAspectDelayer();
+ ~AttributeAspectDelayer();
/*
- * Setup called from document db config manager and document db
- * config scout. No adjustments.
- */
- void setup(const AttributesConfig &newAttributesConfig, const SummarymapConfig &newSummarymapConfig);
- /*
* Setup to avoid reprocessing, used to create adjusted document db
* config before applying new config when system is online.
*/
@@ -54,7 +47,6 @@ public:
const IIndexschemaInspector &oldIndexschemaInspector,
const IDocumentTypeInspector &inspector);
- std::shared_ptr<const AttributeSpecs> getAttributeSpecs() const;
std::shared_ptr<AttributesConfig> getAttributesConfig() const;
std::shared_ptr<SummarymapConfig> getSummarymapConfig() const;
};
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 e619d232f0c..b83680dc3f7 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
@@ -5,7 +5,6 @@
LOG_SETUP(".proton.attribute.attribute_collection_spec_factory");
#include "attribute_collection_spec_factory.h"
#include <vespa/searchlib/attribute/configconverter.h>
-#include "attribute_specs.h"
using search::attribute::ConfigConverter;
using search::GrowStrategy;
@@ -23,24 +22,24 @@ AttributeCollectionSpecFactory::AttributeCollectionSpecFactory(
}
AttributeCollectionSpec::UP
-AttributeCollectionSpecFactory::create(const AttributeSpecs &attrSpecs,
+AttributeCollectionSpecFactory::create(const AttributesConfig &attrCfg,
uint32_t docIdLimit,
search::SerialNum serialNum) const
{
AttributeCollectionSpec::AttributeList attrs;
// Amortize memory spike cost over N docs
- const size_t skew = _growNumDocs/(attrSpecs.getSpecs().size()+1);
+ const size_t skew = _growNumDocs/(attrCfg.attribute.size()+1);
GrowStrategy grow = _growStrategy;
grow.setDocsInitialCapacity(std::max(grow.getDocsInitialCapacity(),
docIdLimit));
- for (const auto &attr : attrSpecs.getSpecs()) {
- auto cfg = attr.getConfig();
+ for (const auto &attr : attrCfg.attribute) {
+ search::attribute::Config cfg = ConfigConverter::convert(attr);
if (_fastAccessOnly && !cfg.fastAccess()) {
continue;
}
grow.setDocsGrowDelta(grow.getDocsGrowDelta() + skew);
cfg.setGrowStrategy(grow);
- attrs.push_back(AttributeSpec(attr.getName(), cfg));
+ attrs.push_back(AttributeSpec(attr.name, cfg));
}
return AttributeCollectionSpec::UP(new AttributeCollectionSpec(attrs,
docIdLimit,
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.h
index 23ae550478d..dc3dfcbd8d4 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.h
@@ -6,11 +6,10 @@
#include <vespa/searchcommon/attribute/config.h>
#include <vespa/searchcommon/common/growstrategy.h>
#include <vespa/searchlib/common/serialnum.h>
+#include <vespa/config-attributes.h>
namespace proton {
-class AttributeSpecs;
-
/**
* A factory for generating an AttributeCollectionSpec based on AttributesConfig
* from the config server.
@@ -18,6 +17,8 @@ class AttributeSpecs;
class AttributeCollectionSpecFactory
{
private:
+ typedef vespa::config::search::AttributesConfig AttributesConfig;
+
const search::GrowStrategy _growStrategy;
const size_t _growNumDocs;
const bool _fastAccessOnly;
@@ -27,7 +28,7 @@ public:
size_t growNumDocs,
bool fastAccessOnly);
- AttributeCollectionSpec::UP create(const AttributeSpecs &attrSpecs,
+ AttributeCollectionSpec::UP create(const AttributesConfig &attrCfg,
uint32_t docIdLimit,
search::SerialNum serialNum) const;
};
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.cpp
index 7b009ef4b77..a4eae3ac1ff 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.cpp
@@ -253,9 +253,9 @@ AttributeInitializerResult
AttributeInitializer::init() const
{
if (!_attrDir->empty()) {
- return AttributeInitializerResult(tryLoadAttribute(), _spec.getHideFromReading(), _spec.getHideFromWriting());
+ return AttributeInitializerResult(tryLoadAttribute());
} else {
- return AttributeInitializerResult(createAndSetupEmptyAttribute(), _spec.getHideFromReading(), _spec.getHideFromWriting());
+ return AttributeInitializerResult(createAndSetupEmptyAttribute());
}
}
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.cpp
index 21b88f33f21..29eae463497 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.cpp
@@ -5,12 +5,8 @@
namespace proton {
-AttributeInitializerResult::AttributeInitializerResult(const AttributeVectorSP &attr,
- bool hideFromReading,
- bool hideFromWriting)
- : _attr(attr),
- _hideFromReading(hideFromReading),
- _hideFromWriting(hideFromWriting)
+AttributeInitializerResult::AttributeInitializerResult(const AttributeVectorSP &attr)
+ : _attr(attr)
{
}
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.h
index 0a6b6e607d7..6332ed2939c 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.h
@@ -17,15 +17,9 @@ class AttributeInitializerResult
{
using AttributeVectorSP = std::shared_ptr<search::AttributeVector>;
AttributeVectorSP _attr;
- bool _hideFromReading; // Delayed removal of attribute aspect
- bool _hideFromWriting; // Delayed addition of attribute aspect
public:
- AttributeInitializerResult(const AttributeVectorSP &attr,
- bool hideFromReading,
- bool hideFromWriting);
+ AttributeInitializerResult(const AttributeVectorSP &attr);
~AttributeInitializerResult();
- bool getHideFromReading() const { return _hideFromReading; }
- bool getHideFromWriting() const { return _hideFromWriting; }
const AttributeVectorSP &getAttribute() const { return _attr; }
operator bool() const { return static_cast<bool>(_attr); }
};
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.cpp
index 640171a39b0..0570020e760 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.cpp
@@ -9,6 +9,7 @@
using search::AttributeVector;
using search::GrowStrategy;
using search::SerialNum;
+using vespa::config::search::AttributesConfig;
namespace proton {
@@ -89,14 +90,14 @@ AttributeManagerInitializer::createAttributeSpec() const
{
uint32_t docIdLimit = 1; // The real docIdLimit is used after attributes are loaded to pad them
AttributeCollectionSpecFactory factory(_attributeGrow, _attributeGrowNumDocs, _fastAccessAttributesOnly);
- return factory.create(_attrSpecs, docIdLimit, _configSerialNum);
+ return factory.create(_attrCfg, docIdLimit, _configSerialNum);
}
AttributeManagerInitializer::AttributeManagerInitializer(SerialNum configSerialNum,
initializer::InitializerTask::SP documentMetaStoreInitTask,
DocumentMetaStore::SP documentMetaStore,
AttributeManager::SP baseAttrMgr,
- const AttributeSpecs &attrSpecs,
+ const AttributesConfig &attrCfg,
const GrowStrategy &attributeGrow,
size_t attributeGrowNumDocs,
bool fastAccessAttributesOnly,
@@ -104,7 +105,7 @@ AttributeManagerInitializer::AttributeManagerInitializer(SerialNum configSerialN
: _configSerialNum(configSerialNum),
_documentMetaStore(documentMetaStore),
_attrMgr(),
- _attrSpecs(attrSpecs),
+ _attrCfg(attrCfg),
_attributeGrow(attributeGrow),
_attributeGrowNumDocs(attributeGrowNumDocs),
_fastAccessAttributesOnly(fastAccessAttributesOnly),
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.h
index 16bd5217774..9e1857d5f00 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.h
@@ -8,7 +8,7 @@
#include <vespa/searchcore/proton/documentmetastore/documentmetastore.h>
#include <vespa/searchcore/proton/initializer/initializer_task.h>
#include <vespa/searchlib/common/serialnum.h>
-#include "attribute_specs.h"
+#include <vespa/config-attributes.h>
namespace proton {
@@ -21,7 +21,7 @@ private:
search::SerialNum _configSerialNum;
DocumentMetaStore::SP _documentMetaStore;
AttributeManager::SP _attrMgr;
- AttributeSpecs _attrSpecs;
+ vespa::config::search::AttributesConfig _attrCfg;
search::GrowStrategy _attributeGrow;
size_t _attributeGrowNumDocs;
bool _fastAccessAttributesOnly;
@@ -35,7 +35,7 @@ public:
initializer::InitializerTask::SP documentMetaStoreInitTask,
DocumentMetaStore::SP documentMetaStore,
AttributeManager::SP baseAttrMgr,
- const AttributeSpecs &attrSpecs,
+ const vespa::config::search::AttributesConfig &attrCfg,
const search::GrowStrategy &attributeGrow,
size_t attributeGrowNumDocs,
bool fastAccessAttributesOnly,
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.cpp
index 6cd76182659..550e7b1606a 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.cpp
@@ -6,18 +6,8 @@ namespace proton {
AttributeSpec::AttributeSpec(const vespalib::string &name,
const search::attribute::Config &cfg)
- : AttributeSpec(name, cfg, false, false)
-{
-}
-
-AttributeSpec::AttributeSpec(const vespalib::string &name,
- const search::attribute::Config &cfg,
- bool hideFromReading,
- bool hideFromWriting)
: _name(name),
- _cfg(cfg),
- _hideFromReading(hideFromReading),
- _hideFromWriting(hideFromWriting)
+ _cfg(cfg)
{
}
@@ -37,9 +27,7 @@ bool
AttributeSpec::operator==(const AttributeSpec &rhs) const
{
return ((_name == rhs._name) &&
- (_cfg == rhs._cfg) &&
- (_hideFromReading == rhs._hideFromReading) &&
- (_hideFromWriting == rhs._hideFromWriting));
+ (_cfg == rhs._cfg));
}
}
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.h
index f8c8834894a..78fe94053b4 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.h
@@ -15,15 +15,9 @@ class AttributeSpec
private:
vespalib::string _name;
search::attribute::Config _cfg;
- bool _hideFromReading;
- bool _hideFromWriting;
public:
AttributeSpec(const vespalib::string &name,
const search::attribute::Config &cfg);
- AttributeSpec(const vespalib::string &name,
- const search::attribute::Config &cfg,
- bool hideFromReading,
- bool hideFromWriting);
AttributeSpec(const AttributeSpec &);
AttributeSpec & operator=(const AttributeSpec &);
AttributeSpec(AttributeSpec &&);
@@ -31,8 +25,6 @@ public:
~AttributeSpec();
const vespalib::string &getName() const { return _name; }
const search::attribute::Config &getConfig() const { return _cfg; }
- bool getHideFromReading() const { return _hideFromReading; }
- bool getHideFromWriting() const { return _hideFromWriting; }
bool operator==(const AttributeSpec &rhs) const;
};
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_specs.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_specs.h
deleted file mode 100644
index 7c231b4f917..00000000000
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_specs.h
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2017 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#pragma once
-
-#include "attribute_spec.h"
-#include <vector>
-
-namespace proton {
-
-/**
- * A specification of attribute vectors an attribute manager should
- * instantiate and manage.
- */
-class AttributeSpecs
-{
-private:
- std::vector<AttributeSpec> _specs;
-public:
- AttributeSpecs()
- : _specs()
- {
- }
- ~AttributeSpecs() { }
- const std::vector<AttributeSpec> &getSpecs() const { return _specs; }
- bool operator==(const AttributeSpecs &rhs) const { return _specs == rhs._specs; }
- template <typename ...Args>
- void emplace_back(Args && ... args) { _specs.emplace_back(std::forward<Args>(args)...); }
-};
-
-} // namespace proton
-
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp
index c8ae63bf0ec..a7183178e91 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp
@@ -63,21 +63,15 @@ bool matchingTypes(const AttributeVector::SP &av, const search::attribute::Confi
}
AttributeManager::AttributeWrap::AttributeWrap(const AttributeVectorSP & a,
- bool isExtra_,
- bool hideFromReading,
- bool hideFromWriting)
+ bool isExtra_)
: _attr(a),
- _isExtra(isExtra_),
- _hideFromReading(hideFromReading),
- _hideFromWriting(hideFromWriting)
+ _isExtra(isExtra_)
{
}
AttributeManager::AttributeWrap::AttributeWrap()
: _attr(),
- _isExtra(false),
- _hideFromReading(false),
- _hideFromWriting(false)
+ _isExtra(false)
{
}
@@ -88,13 +82,13 @@ AttributeManager::AttributeWrap::~AttributeWrap()
AttributeManager::AttributeWrap
AttributeManager::AttributeWrap::extraAttribute(const AttributeVectorSP &a)
{
- return AttributeWrap(a, true, false, false);
+ return AttributeWrap(a, true);
}
AttributeManager::AttributeWrap
-AttributeManager::AttributeWrap::normalAttribute(const AttributeVectorSP &a, bool hideFromReading, bool hideFromWriting)
+AttributeManager::AttributeWrap::normalAttribute(const AttributeVectorSP &a)
{
- return AttributeWrap(a, false, hideFromReading, hideFromWriting);
+ return AttributeWrap(a, false);
}
@@ -107,9 +101,7 @@ AttributeManager::internalAddAttribute(const AttributeSpec &spec,
AttributeInitializerResult result = initializer.init();
if (result) {
result.getAttribute()->setInterlock(_interlock);
- assert(result.getHideFromReading() == spec.getHideFromReading());
- assert(result.getHideFromWriting() == spec.getHideFromWriting());
- addAttribute(AttributeWrap::normalAttribute(result.getAttribute(), result.getHideFromReading(), result.getHideFromWriting()));
+ addAttribute(AttributeWrap::normalAttribute(result.getAttribute()));
}
return result.getAttribute();
}
@@ -158,7 +150,7 @@ AttributeManager::transferExistingAttributes(const AttributeManager &currMgr,
if (matchingTypes(av, aspec.getConfig())) { // transfer attribute
LOG(debug, "Transferring attribute vector '%s' with %u docs and serial number %lu from current manager",
av->getName().c_str(), av->getNumDocs(), av->getStatus().getLastSyncToken());
- addAttribute(AttributeWrap::normalAttribute(av, aspec.getHideFromReading(), aspec.getHideFromWriting()));
+ addAttribute(AttributeWrap::normalAttribute(av));
} else {
toBeAdded.push_back(aspec);
}
@@ -288,7 +280,7 @@ AttributeManager::addInitializedAttributes(const std::vector<AttributeInitialize
for (const auto &result : attributes) {
assert(result);
result.getAttribute()->setInterlock(_interlock);
- addAttribute(AttributeWrap::normalAttribute(result.getAttribute(), result.getHideFromReading(), result.getHideFromWriting()));
+ addAttribute(AttributeWrap::normalAttribute(result.getAttribute()));
}
}
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h
index f8fae2730f1..7d6f7d1233b 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h
@@ -54,18 +54,14 @@ private:
private:
AttributeVectorSP _attr;
bool _isExtra;
- bool _hideFromReading;
- bool _hideFromWriting;
- AttributeWrap(const AttributeVectorSP & a, bool isExtra_, bool hideFromReading, bool hideFromWriting);
+ AttributeWrap(const AttributeVectorSP & a, bool isExtra_);
public:
AttributeWrap();
~AttributeWrap();
static AttributeWrap extraAttribute(const AttributeVectorSP &a);
- static AttributeWrap normalAttribute(const AttributeVectorSP &a, bool hideFromReading, bool hideFromWriting);
+ static AttributeWrap normalAttribute(const AttributeVectorSP &a);
bool isExtra() const { return _isExtra; }
const AttributeVectorSP getAttribute() const { return _attr; }
- bool getHideFromReading() const { return _hideFromReading; }
- bool getHideFromWriting() const { return _hideFromWriting; }
};
typedef vespalib::hash_map<vespalib::string, AttributeWrap> AttributeMap;
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.cpp
index 200402b5d82..dc1379ee316 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.cpp
@@ -9,7 +9,6 @@
#include <vespa/config-summarymap.h>
#include <vespa/searchsummary/config/config-juniperrc.h>
#include <vespa/document/config/config-documenttypes.h>
-#include <vespa/searchcore/proton/attribute/attribute_specs.h>
using namespace config;
using namespace vespa::config::search::summary;
@@ -46,7 +45,6 @@ DocumentDBConfig::DocumentDBConfig(
const RankingConstants::SP &rankingConstants,
const IndexschemaConfigSP &indexschema,
const AttributesConfigSP &attributes,
- const std::shared_ptr<const AttributeSpecs> &attributeSpecs,
const SummaryConfigSP &summary,
const SummarymapConfigSP &summarymap,
const JuniperrcConfigSP &juniperrc,
@@ -66,7 +64,6 @@ DocumentDBConfig::DocumentDBConfig(
_rankingConstants(rankingConstants),
_indexschema(indexschema),
_attributes(attributes),
- _attributeSpecs(attributeSpecs),
_summary(summary),
_summarymap(summarymap),
_juniperrc(juniperrc),
@@ -90,7 +87,6 @@ DocumentDBConfig(const DocumentDBConfig &cfg)
_rankingConstants(cfg._rankingConstants),
_indexschema(cfg._indexschema),
_attributes(cfg._attributes),
- _attributeSpecs(cfg._attributeSpecs),
_summary(cfg._summary),
_summarymap(cfg._summarymap),
_juniperrc(cfg._juniperrc),
@@ -117,8 +113,6 @@ DocumentDBConfig::operator==(const DocumentDBConfig & rhs) const
rhs._indexschema.get()) &&
equals<AttributesConfig>(_attributes.get(),
rhs._attributes.get()) &&
- equals<AttributeSpecs>(_attributeSpecs.get(),
- rhs._attributeSpecs.get()) &&
equals<SummaryConfig>(_summary.get(),
rhs._summary.get()) &&
equals<SummarymapConfig>(_summarymap.get(),
@@ -150,8 +144,7 @@ DocumentDBConfig::compare(const DocumentDBConfig &rhs) const
retval.indexschemaChanged =
!equals<IndexschemaConfig>(_indexschema.get(), rhs._indexschema.get());
retval.attributesChanged =
- !equals<AttributesConfig>(_attributes.get(), rhs._attributes.get()) ||
- !equals<AttributeSpecs>(_attributeSpecs.get(), rhs._attributeSpecs.get());
+ !equals<AttributesConfig>(_attributes.get(), rhs._attributes.get());
retval.summaryChanged =
!equals<SummaryConfig>(_summary.get(), rhs._summary.get());
retval.summarymapChanged =
@@ -183,7 +176,6 @@ DocumentDBConfig::valid() const
(_rankingConstants.get() != NULL) &&
(_indexschema.get() != NULL) &&
(_attributes.get() != NULL) &&
- _attributeSpecs &&
(_summary.get() != NULL) &&
(_summarymap.get() != NULL) &&
(_juniperrc.get() != NULL) &&
@@ -224,7 +216,6 @@ DocumentDBConfig::makeReplayConfig(const SP & orig)
std::make_shared<RankingConstants>(),
o._indexschema,
o._attributes,
- o._attributeSpecs,
o._summary,
std::make_shared<SummarymapConfig>(),
o._juniperrc,
@@ -257,8 +248,7 @@ DocumentDBConfig::preferOriginalConfig(const SP & self)
DocumentDBConfig::SP
-DocumentDBConfig::newFromAttributesConfig(const AttributesConfigSP &attributes,
- const std::shared_ptr<const AttributeSpecs> &attributeSpecs) const
+DocumentDBConfig::newFromAttributesConfig(const AttributesConfigSP &attributes) const
{
return std::make_shared<DocumentDBConfig>(
_generation,
@@ -266,7 +256,6 @@ DocumentDBConfig::newFromAttributesConfig(const AttributesConfigSP &attributes,
_rankingConstants,
_indexschema,
attributes,
- attributeSpecs,
_summary,
_summarymap,
_juniperrc,
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.h b/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.h
index 51de714ee30..b581655330d 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.h
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.h
@@ -31,8 +31,6 @@ namespace document { namespace internal { class InternalDocumenttypesType; } }
namespace proton {
-class AttributeSpecs;
-
class DocumentDBConfig
{
public:
@@ -84,7 +82,6 @@ private:
RankingConstants::SP _rankingConstants;
IndexschemaConfigSP _indexschema;
AttributesConfigSP _attributes;
- std::shared_ptr<const AttributeSpecs> _attributeSpecs;
SummaryConfigSP _summary;
SummarymapConfigSP _summarymap;
JuniperrcConfigSP _juniperrc;
@@ -112,7 +109,6 @@ public:
const RankingConstants::SP &rankingConstants,
const IndexschemaConfigSP &indexschema,
const AttributesConfigSP &attributes,
- const std::shared_ptr<const AttributeSpecs> &attributeSpecs,
const SummaryConfigSP &summary,
const SummarymapConfigSP &summarymap,
const JuniperrcConfigSP &juniperrc,
@@ -159,8 +155,6 @@ public:
const search::index::Schema::SP &getSchemaSP() const { return _schema; }
const MaintenanceConfigSP &getMaintenanceConfigSP() const { return _maintenance; }
const search::TuneFileDocumentDB::SP &getTuneFileDocumentDBSP() const { return _tuneFileDocumentDB; }
- const AttributeSpecs &getAttributeSpecs() const { return *_attributeSpecs; }
- const std::shared_ptr<const AttributeSpecs> &getAttributeSpecsSP() const { return _attributeSpecs; }
bool operator==(const DocumentDBConfig &rhs) const;
@@ -194,8 +188,7 @@ public:
/**
* Create modified attributes config.
*/
- SP newFromAttributesConfig(const AttributesConfigSP &attributes,
- const std::shared_ptr<const AttributeSpecs> &attributeSpecs) const;
+ SP newFromAttributesConfig(const AttributesConfigSP &attributes) const;
};
} // namespace proton
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp
index da17ca3fdf6..a258a282f81 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp
@@ -12,7 +12,6 @@
#include <vespa/searchlib/index/schemautil.h>
#include <vespa/searchsummary/config/config-juniperrc.h>
#include <vespa/vespalib/time/time_box.h>
-#include <vespa/searchcore/proton/attribute/attribute_specs_builder.h>
LOG_SETUP(".proton.server.documentdbconfigmanager");
@@ -269,17 +268,14 @@ DocumentDBConfigManager::update(const ConfigSnapshot &snapshot)
newMaintenanceConfig = oldMaintenanceConfig;
}
ConfigSnapshot extraConfigs(snapshot.subset(_extraConfigKeys));
- AttributeSpecsBuilder attributeSpecsBuilder;
- attributeSpecsBuilder.setup(*newAttributesConfig, *newSummarymapConfig);
DocumentDBConfig::SP newSnapshot(
new DocumentDBConfig(generation,
newRankProfilesConfig,
newRankingConstants,
newIndexschemaConfig,
- attributeSpecsBuilder.getAttributesConfig(),
- attributeSpecsBuilder.getAttributeSpecs(),
+ newAttributesConfig,
newSummaryConfig,
- attributeSpecsBuilder.getSummarymapConfig(),
+ newSummarymapConfig,
newJuniperrcConfig,
_bootstrapConfig->getDocumenttypesConfigSP(),
_bootstrapConfig->getDocumentTypeRepoSP(),
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigscout.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigscout.cpp
index c9329f893dc..2ebadce7e38 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigscout.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigscout.cpp
@@ -3,7 +3,6 @@
#include <vespa/fastos/fastos.h>
#include "documentdbconfigscout.h"
#include <vespa/searchcore/proton/attribute/attributesconfigscout.h>
-#include <vespa/searchcore/proton/attribute/attribute_specs_builder.h>
using vespa::config::search::AttributesConfig;
@@ -20,10 +19,7 @@ DocumentDBConfigScout::scout(const DocumentDBConfig::SP &config,
ac(acScout.adjust(config->getAttributesConfig()));
if (*ac == config->getAttributesConfig())
return config; // no change
- AttributeSpecsBuilder attributeSpecsBuilder;
- attributeSpecsBuilder.setup(*ac, config->getSummarymapConfig());
- return config->newFromAttributesConfig(attributeSpecsBuilder.getAttributesConfig(),
- attributeSpecsBuilder.getAttributeSpecs());
+ return config->newFromAttributesConfig(ac);
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.cpp b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.cpp
index 0337673b9da..e51ceebdbce 100644
--- a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.cpp
@@ -78,7 +78,7 @@ FastAccessDocSubDB::createAttributeManagerInitializer(const DocumentDBConfig &co
documentMetaStoreInitTask,
documentMetaStore,
baseAttrMgr,
- (_hasAttributes ? configSnapshot.getAttributeSpecs() : AttributeSpecs()),
+ (_hasAttributes ? configSnapshot.getAttributesConfig() : AttributesConfig()),
_attributeGrow,
_attributeGrowNumDocs,
_fastAccessAttributesOnly,
@@ -103,13 +103,13 @@ FastAccessDocSubDB::setupAttributeManager(AttributeManager::SP attrMgrResult)
AttributeCollectionSpec::UP
-FastAccessDocSubDB::createAttributeSpec(const AttributeSpecs &attrSpecs,
+FastAccessDocSubDB::createAttributeSpec(const AttributesConfig &attrCfg,
SerialNum serialNum) const
{
uint32_t docIdLimit(_dms->getCommittedDocIdLimit());
AttributeCollectionSpecFactory factory(_attributeGrow,
_attributeGrowNumDocs, _fastAccessAttributesOnly);
- return factory.create(attrSpecs, docIdLimit, serialNum);
+ return factory.create(attrCfg, docIdLimit, serialNum);
}
void
@@ -268,7 +268,7 @@ FastAccessDocSubDB::applyConfig(const DocumentDBConfig &newConfigSnapshot,
std::make_unique<AttributeWriterFactory>(), getSubDbName());
proton::IAttributeManager::SP oldMgr = extractAttributeManager(_fastAccessFeedView.get());
AttributeCollectionSpec::UP attrSpec =
- createAttributeSpec(newConfigSnapshot.getAttributeSpecs(), serialNum);
+ createAttributeSpec(newConfigSnapshot.getAttributesConfig(), serialNum);
IReprocessingInitializer::UP initializer =
configurer.reconfigure(newConfigSnapshot, oldConfigSnapshot, *attrSpec);
if (initializer->hasReprocessors()) {
diff --git a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.h b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.h
index 4fff4be5a75..cd35d9204b1 100644
--- a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.h
+++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.h
@@ -87,7 +87,7 @@ protected:
MetricsWireService &_metricsWireService;
DocIdLimit _docIdLimit;
- AttributeCollectionSpec::UP createAttributeSpec(const AttributeSpecs &attrCfg, SerialNum serialNum) const;
+ AttributeCollectionSpec::UP createAttributeSpec(const AttributesConfig &attrCfg, SerialNum serialNum) const;
AttributeManager::SP getAndResetInitAttributeManager();
virtual IFlushTargetList getFlushTargetsInternal() override;
void reconfigureAttributeMetrics(const IAttributeManager &newMgr, const IAttributeManager &oldMgr);
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
index aedd0678ae0..6c3de875e22 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
@@ -175,7 +175,7 @@ SearchableDocSubDB::applyConfig(const DocumentDBConfig &newConfigSnapshot,
if (params.shouldAttributeManagerChange()) {
proton::IAttributeManager::SP oldMgr = getAttributeManager();
AttributeCollectionSpec::UP attrSpec =
- createAttributeSpec(newConfigSnapshot.getAttributeSpecs(), serialNum);
+ createAttributeSpec(newConfigSnapshot.getAttributesConfig(), serialNum);
IReprocessingInitializer::UP initializer =
_configurer.reconfigure(newConfigSnapshot, oldConfigSnapshot, *attrSpec, params, resolver);
if (initializer.get() != nullptr && initializer->hasReprocessors()) {
diff --git a/searchcore/src/vespa/searchcore/proton/test/documentdb_config_builder.cpp b/searchcore/src/vespa/searchcore/proton/test/documentdb_config_builder.cpp
index 47955993ffd..14ed502cdc1 100644
--- a/searchcore/src/vespa/searchcore/proton/test/documentdb_config_builder.cpp
+++ b/searchcore/src/vespa/searchcore/proton/test/documentdb_config_builder.cpp
@@ -9,7 +9,6 @@
#include <vespa/searchsummary/config/config-juniperrc.h>
#include <vespa/document/config/config-documenttypes.h>
#include <vespa/config-imported-fields.h>
-#include <vespa/searchcore/proton/attribute/attribute_specs_builder.h>
using document::DocumenttypesConfig;
using search::TuneFileDocumentDB;
@@ -74,17 +73,14 @@ DocumentDBConfigBuilder::DocumentDBConfigBuilder(const DocumentDBConfig &cfg)
DocumentDBConfig::SP
DocumentDBConfigBuilder::build()
{
- AttributeSpecsBuilder attributeSpecsBuilder;
- attributeSpecsBuilder.setup(*_attributes, *_summarymap);
return std::make_shared<DocumentDBConfig>(
_generation,
_rankProfiles,
_rankingConstants,
_indexschema,
- attributeSpecsBuilder.getAttributesConfig(),
- attributeSpecsBuilder.getAttributeSpecs(),
+ _attributes,
_summary,
- attributeSpecsBuilder.getSummarymapConfig(),
+ _summarymap,
_juniperrc,
_documenttypes,
_repo,