summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2023-02-07 13:21:51 +0100
committerTor Egge <Tor.Egge@online.no>2023-02-07 13:21:51 +0100
commit22998a859cdee573fc14fd9cb18572f9c7cd2498 (patch)
treedde4670a50fd4cf253a263ee8fc47b4e33b79f1d /searchcore
parent1acb5e0824379ac8869fd31d231306a826e2675c (diff)
Call complete_prepare_reconfig() to adjust prepared reconfig when
docid limit and serial number is known.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_manager/attribute_manager_test.cpp6
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_reconfig.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_reconfig.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp14
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_db_reconfig.cpp4
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_db_reconfig.h19
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_subdb_reconfig.cpp7
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_subdb_reconfig.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb.cpp3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.cpp7
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.h1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.cpp4
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/idocumentsubdb.h3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp10
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h3
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/dummy_document_sub_db.h5
26 files changed, 75 insertions, 39 deletions
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 29639448023..88d0752461b 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
@@ -214,6 +214,8 @@ struct Fixture : public BaseFixture, public AttributeManagerFixture
struct SequentialAttributeManager
{
SequentialAttributesInitializer initializer;
+ uint32_t docid_limit;
+ SerialNum serial_num;
proton::AttributeManager mgr;
SequentialAttributeManager(const AttributeManager &currMgr, AttrMgrSpec && newSpec);
~SequentialAttributeManager();
@@ -221,9 +223,11 @@ struct SequentialAttributeManager
SequentialAttributeManager::SequentialAttributeManager(const AttributeManager &currMgr, AttrMgrSpec && newSpec)
: initializer(newSpec.getDocIdLimit()),
+ docid_limit(newSpec.getDocIdLimit()),
+ serial_num(newSpec.getCurrentSerialNum().value_or(0)),
mgr(currMgr, std::move(newSpec), initializer)
{
- mgr.addInitializedAttributes(initializer.getInitializedAttributes(), std::nullopt, std::nullopt);
+ mgr.addInitializedAttributes(initializer.getInitializedAttributes(), docid_limit, serial_num);
}
SequentialAttributeManager::~SequentialAttributeManager() = default;
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 c15a15e44e5..77cc1142f75 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.cpp
@@ -86,7 +86,7 @@ void
AttributeManagerInitializerTask::run()
{
_attrMgr->addExtraAttribute(_documentMetaStore);
- _attrMgr->addInitializedAttributes(_attributesResult.get(), std::nullopt, std::nullopt);
+ _attrMgr->addInitializedAttributes(_attributesResult.get(), 1, _configSerialNum);
_attrMgr->pruneRemovedFields(_configSerialNum);
_promise.set_value();
}
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_reconfig.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_reconfig.cpp
index 2942256f534..06c03c80785 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_reconfig.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_reconfig.cpp
@@ -17,7 +17,7 @@ AttributeManagerReconfig::AttributeManagerReconfig(std::shared_ptr<AttributeMana
AttributeManagerReconfig::~AttributeManagerReconfig() = default;
std::shared_ptr<AttributeManager>
-AttributeManagerReconfig::create(std::optional<uint32_t> docid_limit, std::optional<search::SerialNum> serial_num)
+AttributeManagerReconfig::create(uint32_t docid_limit, search::SerialNum serial_num)
{
assert(_mgr);
_mgr->addInitializedAttributes(_initializer->getInitializedAttributes(), docid_limit, serial_num);
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_reconfig.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_reconfig.h
index da8ae163fb5..9e4f8b71a7a 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_reconfig.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_reconfig.h
@@ -22,7 +22,7 @@ public:
AttributeManagerReconfig(std::shared_ptr<AttributeManager> mgr,
std::unique_ptr<SequentialAttributesInitializer> initializer);
~AttributeManagerReconfig();
- std::shared_ptr<AttributeManager> create(std::optional<uint32_t> docid_limit, std::optional<search::SerialNum> serial_num);
+ std::shared_ptr<AttributeManager> create(uint32_t docid_limit, search::SerialNum serial_num);
};
}
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp
index e27fae65de3..636cb992b25 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp
@@ -325,16 +325,14 @@ AttributeManager::addAttribute(AttributeSpec && spec, uint64_t serialNum)
}
void
-AttributeManager::addInitializedAttributes(const std::vector<AttributeInitializerResult> &attributes, std::optional<uint32_t> docid_limit, std::optional<SerialNum> serial_num)
+AttributeManager::addInitializedAttributes(const std::vector<AttributeInitializerResult> &attributes, uint32_t docid_limit, SerialNum serial_num)
{
for (const auto &result : attributes) {
assert(result);
auto attr = result.getAttribute();
- if (docid_limit.has_value()) {
- AttributeManager::padAttribute(*attr, docid_limit.value());
- }
- if (serial_num.has_value()) {
- attr->setCreateSerialNum(serial_num.value());
+ if (attr->getCreateSerialNum() == 0) {
+ AttributeManager::padAttribute(*attr, docid_limit);
+ attr->setCreateSerialNum(serial_num);
}
attr->setInterlock(_interlock);
auto shrinker = allocShrinker(attr, _attributeFieldWriter, *_diskLayout);
@@ -503,8 +501,10 @@ proton::IAttributeManager::SP
AttributeManager::create(Spec&& spec) const
{
assert(spec.getCurrentSerialNum().has_value());
+ auto docid_limit = spec.getDocIdLimit();
+ auto serial_num = spec.getCurrentSerialNum().value();
auto prepared_result = prepare_create(std::move(spec));
- return prepared_result->create(std::nullopt, std::nullopt);
+ return prepared_result->create(docid_limit, serial_num);
}
std::vector<IFlushTarget::SP>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h
index 35895e5422c..c8c5da7f4e4 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h
@@ -123,7 +123,7 @@ public:
AttributeVectorSP addAttribute(AttributeSpec && spec, uint64_t serialNum);
- void addInitializedAttributes(const std::vector<AttributeInitializerResult> &attributes, std::optional<uint32_t> docid_limit, std::optional<SerialNum> serial_num);
+ void addInitializedAttributes(const std::vector<AttributeInitializerResult> &attributes, uint32_t docid_limit, SerialNum serial_num);
void addExtraAttribute(const AttributeVectorSP &attribute);
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_db_reconfig.cpp b/searchcore/src/vespa/searchcore/proton/server/document_db_reconfig.cpp
index 903c9d0a899..f0d028f924f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_db_reconfig.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/document_db_reconfig.cpp
@@ -5,8 +5,8 @@
namespace proton {
-DocumentDBReconfig::DocumentDBReconfig(std::unique_ptr<const DocumentSubDBReconfig> ready_reconfig_in,
- std::unique_ptr<const DocumentSubDBReconfig> not_ready_reconfig_in)
+DocumentDBReconfig::DocumentDBReconfig(std::unique_ptr<DocumentSubDBReconfig> ready_reconfig_in,
+ std::unique_ptr<DocumentSubDBReconfig> not_ready_reconfig_in)
: _ready_reconfig(std::move(ready_reconfig_in)),
_not_ready_reconfig(std::move(not_ready_reconfig_in))
{
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_db_reconfig.h b/searchcore/src/vespa/searchcore/proton/server/document_db_reconfig.h
index 21ea117f7e9..d35a2211397 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_db_reconfig.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_db_reconfig.h
@@ -10,26 +10,31 @@ class DocumentSubDBReconfig;
/**
* Class representing the result of the prepare step of a DocumentDB reconfig.
*
- * The reconfig is performed in two steps:
+ * The reconfig is performed in three steps:
* Prepare:
* Based on the config that is changed, new components are instantiated in each subdb.
* This can be costly and is handled by helper threads from the shared executor pool.
*
+ * Complete prepare:
+ * Docid limit and serial number are used to complete prepared reconfig.
+ *
* Apply:
* The new components are swapped with the old ones in the DocumentDB master write thread.
*/
class DocumentDBReconfig {
private:
- std::unique_ptr<const DocumentSubDBReconfig> _ready_reconfig;
- std::unique_ptr<const DocumentSubDBReconfig> _not_ready_reconfig;
+ std::unique_ptr<DocumentSubDBReconfig> _ready_reconfig;
+ std::unique_ptr<DocumentSubDBReconfig> _not_ready_reconfig;
public:
- DocumentDBReconfig(std::unique_ptr<const DocumentSubDBReconfig> ready_reconfig_in,
- std::unique_ptr<const DocumentSubDBReconfig> not_ready_reconfig_in);
+ DocumentDBReconfig(std::unique_ptr<DocumentSubDBReconfig> ready_reconfig_in,
+ std::unique_ptr<DocumentSubDBReconfig> not_ready_reconfig_in);
~DocumentDBReconfig();
- const DocumentSubDBReconfig& ready_reconfig() const { return *_ready_reconfig; }
- const DocumentSubDBReconfig& not_ready_reconfig() const { return *_not_ready_reconfig; }
+ const DocumentSubDBReconfig& ready_reconfig() const noexcept { return *_ready_reconfig; }
+ DocumentSubDBReconfig& ready_reconfig() noexcept { return *_ready_reconfig; }
+ const DocumentSubDBReconfig& not_ready_reconfig() const noexcept { return *_not_ready_reconfig; }
+ DocumentSubDBReconfig& not_ready_reconfig() noexcept { return *_not_ready_reconfig; }
};
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_subdb_reconfig.cpp b/searchcore/src/vespa/searchcore/proton/server/document_subdb_reconfig.cpp
index 2fd222338e7..60514b91aab 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_subdb_reconfig.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/document_subdb_reconfig.cpp
@@ -12,5 +12,12 @@ DocumentSubDBReconfig::DocumentSubDBReconfig(std::shared_ptr<Matchers> matchers_
DocumentSubDBReconfig::~DocumentSubDBReconfig() = default;
+void
+DocumentSubDBReconfig::complete(uint32_t docid_limit, search::SerialNum serial_num)
+{
+ (void) docid_limit;
+ (void) serial_num;
+}
+
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_subdb_reconfig.h b/searchcore/src/vespa/searchcore/proton/server/document_subdb_reconfig.h
index 89129a6b0d0..0554056100e 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_subdb_reconfig.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_subdb_reconfig.h
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
+#include <vespa/searchlib/common/serialnum.h>
#include <memory>
namespace proton {
@@ -26,7 +27,8 @@ public:
return _old_matchers != _new_matchers;
}
std::shared_ptr<Matchers> matchers() const { return _new_matchers; }
+
+ void complete(uint32_t docid_limit, search::SerialNum serial_num);
};
}
-
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp
index 356ddb6ddf3..a217e3b719e 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp
@@ -423,7 +423,7 @@ DocumentDB::applySubDBConfig(const DocumentDBConfig &newConfigSnapshot,
}
void
-DocumentDB::applyConfig(DocumentDBConfig::SP configSnapshot, SerialNum serialNum, std::unique_ptr<const DocumentDBReconfig> prepared_reconfig)
+DocumentDB::applyConfig(DocumentDBConfig::SP configSnapshot, SerialNum serialNum, std::unique_ptr<DocumentDBReconfig> prepared_reconfig)
{
// Always called by executor thread:
// Called by performReconfig() by executor thread during normal
@@ -472,6 +472,7 @@ DocumentDB::applyConfig(DocumentDBConfig::SP configSnapshot, SerialNum serialNum
bool elidedConfigSave = equalReplayConfig && tlsReplayDone;
forceCommitAndWait(*_feedView.get(), elidedConfigSave ? serialNum : serialNum - 1, std::move(commit_result));
}
+ _subDBs.complete_prepare_reconfig(*prepared_reconfig, serialNum);
if (params.shouldMaintenanceControllerChange()) {
_maintenanceController.killJobs();
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.h b/searchcore/src/vespa/searchcore/proton/server/documentdb.h
index 3e81a0505a0..6e611917a79 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdb.h
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.h
@@ -156,7 +156,7 @@ private:
void applySubDBConfig(const DocumentDBConfig &newConfigSnapshot,
SerialNum serialNum, const ReconfigParams &params,
const DocumentDBReconfig& prepared_reconfig);
- void applyConfig(DocumentDBConfigSP configSnapshot, SerialNum serialNum, std::unique_ptr<const DocumentDBReconfig> prepared_reconfig);
+ void applyConfig(DocumentDBConfigSP configSnapshot, SerialNum serialNum, std::unique_ptr<DocumentDBReconfig> prepared_reconfig);
/**
* Save initial config if we don't have any saved config snapshots.
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.cpp b/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.cpp
index 2f0aecf9675..73f90df11ab 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.cpp
@@ -259,6 +259,13 @@ DocumentSubDBCollection::prepare_reconfig(const DocumentDBConfig& new_config_sna
}
void
+DocumentSubDBCollection::complete_prepare_reconfig(DocumentDBReconfig& prepared_reconfig, SerialNum serial_num)
+{
+ getReadySubDB()->complete_prepare_reconfig(prepared_reconfig.ready_reconfig(), serial_num);
+ getNotReadySubDB()->complete_prepare_reconfig(prepared_reconfig.not_ready_reconfig(), serial_num);
+}
+
+void
DocumentSubDBCollection::applyConfig(const DocumentDBConfig &newConfigSnapshot,
const DocumentDBConfig &oldConfigSnapshot,
SerialNum serialNum,
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.h b/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.h
index 38b18f5406f..a359ee8f0f3 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.h
+++ b/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.h
@@ -139,6 +139,7 @@ public:
void pruneRemovedFields(SerialNum serialNum);
std::unique_ptr<DocumentDBReconfig> prepare_reconfig(const DocumentDBConfig& new_config_snapshot, const DocumentDBConfig& old_config_snapshot, const ReconfigParams& reconfig_params, std::optional<SerialNum> serial_num);
+ void complete_prepare_reconfig(DocumentDBReconfig& prepared_reconfig, SerialNum serial_num);
void applyConfig(const DocumentDBConfig &newConfigSnapshot, const DocumentDBConfig &oldConfigSnapshot,
SerialNum serialNum, const ReconfigParams &params, IDocumentDBReferenceResolver &resolver, const DocumentDBReconfig& prepared_reconfig);
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 dfc463dc313..eef605cea3c 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
@@ -243,7 +243,7 @@ FastAccessDocSubDB::initViews(const DocumentDBConfig &configSnapshot)
}
}
-std::unique_ptr<const DocumentSubDBReconfig>
+std::unique_ptr<DocumentSubDBReconfig>
FastAccessDocSubDB::prepare_reconfig(const DocumentDBConfig& new_config_snapshot, const DocumentDBConfig& old_config_snapshot, const ReconfigParams& reconfig_params, std::optional<SerialNum> serial_num)
{
return _configurer.prepare_reconfig(new_config_snapshot, old_config_snapshot, reconfig_params, serial_num);
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 c211a49f999..e4c140e43e6 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
@@ -110,7 +110,7 @@ public:
void setup(const DocumentSubDbInitializerResult &initResult) override;
void initViews(const DocumentDBConfig &configSnapshot) override;
- std::unique_ptr<const DocumentSubDBReconfig>
+ std::unique_ptr<DocumentSubDBReconfig>
prepare_reconfig(const DocumentDBConfig& new_config_snapshot, const DocumentDBConfig& old_config_snapshot, const ReconfigParams& reconfig_params, std::optional<SerialNum> serial_num) override;
IReprocessingTask::List
applyConfig(const DocumentDBConfig &newConfigSnapshot, const DocumentDBConfig &oldConfigSnapshot,
diff --git a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.cpp b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.cpp
index a4108767d22..0a88b591f9f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.cpp
@@ -45,14 +45,14 @@ FastAccessDocSubDBConfigurer::FastAccessDocSubDBConfigurer(FeedViewVarHolder &fe
FastAccessDocSubDBConfigurer::~FastAccessDocSubDBConfigurer() = default;
-std::unique_ptr<const DocumentSubDBReconfig>
+std::unique_ptr<DocumentSubDBReconfig>
FastAccessDocSubDBConfigurer::prepare_reconfig(const DocumentDBConfig& new_config_snapshot, const DocumentDBConfig& old_config_snapshot, const ReconfigParams& reconfig_params, std::optional<search::SerialNum> serial_num)
{
(void) new_config_snapshot;
(void) old_config_snapshot;
(void) reconfig_params;
(void) serial_num;
- return std::make_unique<const DocumentSubDBReconfig>(std::shared_ptr<Matchers>());
+ return std::make_unique<DocumentSubDBReconfig>(std::shared_ptr<Matchers>());
}
IReprocessingInitializer::UP
diff --git a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.h b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.h
index 0bd71638128..7a50aa35c81 100644
--- a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.h
@@ -33,7 +33,7 @@ public:
const vespalib::string &subDbName);
~FastAccessDocSubDBConfigurer();
- std::unique_ptr<const DocumentSubDBReconfig> prepare_reconfig(const DocumentDBConfig& new_config_snapshot, const DocumentDBConfig& old_config_snapshot, const ReconfigParams& reconfig_params, std::optional<search::SerialNum> serial_num);
+ std::unique_ptr<DocumentSubDBReconfig> prepare_reconfig(const DocumentDBConfig& new_config_snapshot, const DocumentDBConfig& old_config_snapshot, const ReconfigParams& reconfig_params, std::optional<search::SerialNum> serial_num);
IReprocessingInitializer::UP reconfigure(const DocumentDBConfig &newConfig,
const DocumentDBConfig &oldConfig,
diff --git a/searchcore/src/vespa/searchcore/proton/server/idocumentsubdb.h b/searchcore/src/vespa/searchcore/proton/server/idocumentsubdb.h
index 71f5b86cf87..bdf3d7c7102 100644
--- a/searchcore/src/vespa/searchcore/proton/server/idocumentsubdb.h
+++ b/searchcore/src/vespa/searchcore/proton/server/idocumentsubdb.h
@@ -80,8 +80,9 @@ public:
virtual void setup(const DocumentSubDbInitializerResult &initResult) = 0;
virtual void initViews(const DocumentDBConfig &configSnapshot) = 0;
- virtual std::unique_ptr<const DocumentSubDBReconfig>
+ virtual std::unique_ptr<DocumentSubDBReconfig>
prepare_reconfig(const DocumentDBConfig& new_config_snapshot, const DocumentDBConfig& old_config_snapshot, const ReconfigParams& reconfig_params, std::optional<SerialNum> serial_num) = 0;
+ virtual void complete_prepare_reconfig(DocumentSubDBReconfig& prepared_reconfig, SerialNum serial_num) = 0;
virtual IReprocessingTask::List
applyConfig(const DocumentDBConfig &newConfigSnapshot, const DocumentDBConfig &oldConfigSnapshot,
SerialNum serialNum, const ReconfigParams &params, IDocumentDBReferenceResolver &resolver, const DocumentSubDBReconfig& prepared_reconfig) = 0;
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.cpp b/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.cpp
index f9801e10981..fa4340f7659 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.cpp
@@ -140,7 +140,7 @@ SearchableDocSubDBConfigurer::reconfigureIndexSearchable()
reconfigureMatchView(indexManager->getSearchable());
}
-std::unique_ptr<const DocumentSubDBReconfig>
+std::unique_ptr<DocumentSubDBReconfig>
SearchableDocSubDBConfigurer::prepare_reconfig(const DocumentDBConfig& new_config_snapshot, const DocumentDBConfig& old_config_snapshot, const ReconfigParams& reconfig_params, std::optional<search::SerialNum> serial_num)
{
(void) old_config_snapshot;
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.h b/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.h
index c397a41004f..e6b0ebda7c1 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.h
@@ -78,7 +78,7 @@ public:
void reconfigureIndexSearchable();
- std::unique_ptr<const DocumentSubDBReconfig> prepare_reconfig(const DocumentDBConfig& new_config_snapshot, const DocumentDBConfig& old_config_snapshot, const ReconfigParams& reconfig_params, std::optional<search::SerialNum> serial_num);
+ std::unique_ptr<DocumentSubDBReconfig> prepare_reconfig(const DocumentDBConfig& new_config_snapshot, const DocumentDBConfig& old_config_snapshot, const ReconfigParams& reconfig_params, std::optional<search::SerialNum> serial_num);
void reconfigure(const DocumentDBConfig &newConfig,
const DocumentDBConfig &oldConfig,
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
index 7ee46d3f7a2..187be079d03 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
@@ -132,7 +132,7 @@ reconfigureMatchingMetrics(const RankProfilesConfig &cfg)
}
}
-std::unique_ptr<const DocumentSubDBReconfig>
+std::unique_ptr<DocumentSubDBReconfig>
SearchableDocSubDB::prepare_reconfig(const DocumentDBConfig& new_config_snapshot, const DocumentDBConfig& old_config_snapshot, const ReconfigParams& reconfig_params, std::optional<SerialNum> serial_num)
{
return _configurer.prepare_reconfig(new_config_snapshot, old_config_snapshot, reconfig_params, serial_num);
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h
index 075199ab891..522ccd69b2a 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h
+++ b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h
@@ -100,7 +100,7 @@ public:
void setup(const DocumentSubDbInitializerResult &initResult) override;
void initViews(const DocumentDBConfig &configSnapshot) override;
- std::unique_ptr<const DocumentSubDBReconfig>
+ std::unique_ptr<DocumentSubDBReconfig>
prepare_reconfig(const DocumentDBConfig& new_config_snapshot, const DocumentDBConfig& old_config_snapshot, const ReconfigParams& reconfig_params, std::optional<SerialNum> serial_num) override;
IReprocessingTask::List
applyConfig(const DocumentDBConfig &newConfigSnapshot, const DocumentDBConfig &oldConfigSnapshot,
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp
index a099ac4f492..e3cf394c143 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp
@@ -405,14 +405,20 @@ StoreOnlyDocSubDB::getSubDbName() const {
return vespalib::make_string("%s.%s", _owner.getName().c_str(), _subName.c_str());
}
-std::unique_ptr<const DocumentSubDBReconfig>
+std::unique_ptr<DocumentSubDBReconfig>
StoreOnlyDocSubDB::prepare_reconfig(const DocumentDBConfig& new_config_snapshot, const DocumentDBConfig& old_config_snapshot, const ReconfigParams& reconfig_params, std::optional<SerialNum> serial_num)
{
(void) new_config_snapshot;
(void) old_config_snapshot;
(void) reconfig_params;
(void) serial_num;
- return std::make_unique<const DocumentSubDBReconfig>(std::shared_ptr<Matchers>());
+ return std::make_unique<DocumentSubDBReconfig>(std::shared_ptr<Matchers>());
+}
+
+void
+StoreOnlyDocSubDB::complete_prepare_reconfig(DocumentSubDBReconfig& prepared_reconfig, SerialNum serial_num)
+{
+ prepared_reconfig.complete(_dms->getCommittedDocIdLimit(), serial_num);
}
IReprocessingTask::List
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h
index 574ba106339..0abb06a76aa 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h
@@ -200,8 +200,9 @@ public:
void validateDocStore(FeedHandler & feedHandler, SerialNum serialNum) const override;
- std::unique_ptr<const DocumentSubDBReconfig>
+ std::unique_ptr<DocumentSubDBReconfig>
prepare_reconfig(const DocumentDBConfig& new_config_snapshot, const DocumentDBConfig& old_config_snapshot, const ReconfigParams& reconfig_params, std::optional<SerialNum> serial_num) override;
+ void complete_prepare_reconfig(DocumentSubDBReconfig& prepared_reconfig, SerialNum serial_num) override;
IReprocessingTask::List
applyConfig(const DocumentDBConfig &newConfigSnapshot, const DocumentDBConfig &oldConfigSnapshot,
SerialNum serialNum, const ReconfigParams &params, IDocumentDBReferenceResolver &resolver, const DocumentSubDBReconfig &prepared_reconfig) override;
diff --git a/searchcore/src/vespa/searchcore/proton/test/dummy_document_sub_db.h b/searchcore/src/vespa/searchcore/proton/test/dummy_document_sub_db.h
index 10e53625ace..5ab0109578c 100644
--- a/searchcore/src/vespa/searchcore/proton/test/dummy_document_sub_db.h
+++ b/searchcore/src/vespa/searchcore/proton/test/dummy_document_sub_db.h
@@ -52,9 +52,10 @@ struct DummyDocumentSubDb : public IDocumentSubDB
}
void setup(const DocumentSubDbInitializerResult &) override {}
void initViews(const DocumentDBConfig &) override {}
- std::unique_ptr<const DocumentSubDBReconfig> prepare_reconfig(const DocumentDBConfig&, const DocumentDBConfig&, const ReconfigParams&, std::optional<SerialNum>) override {
- return std::make_unique<const DocumentSubDBReconfig>(std::shared_ptr<Matchers>());
+ std::unique_ptr<DocumentSubDBReconfig> prepare_reconfig(const DocumentDBConfig&, const DocumentDBConfig&, const ReconfigParams&, std::optional<SerialNum>) override {
+ return std::make_unique<DocumentSubDBReconfig>(std::shared_ptr<Matchers>());
}
+ void complete_prepare_reconfig(DocumentSubDBReconfig&, SerialNum) override { }
IReprocessingTask::List applyConfig(const DocumentDBConfig &, const DocumentDBConfig &,
SerialNum, const ReconfigParams &, IDocumentDBReferenceResolver &, const DocumentSubDBReconfig&) override
{