aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-11-12 13:20:07 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-11-12 13:20:07 +0000
commitf370d1e0a6a9fae3d0cb2b5240562f61703f25f7 (patch)
tree0c0367628b495fef9a3deb0d237cb947553baf96
parent8a0fc71d26790955ef72c166fd46af00439c1272 (diff)
Correct config for retired nodes both after reconfig and retired -> up for both attributes and document meta store.
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.cpp5
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp37
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h2
3 files changed, 28 insertions, 16 deletions
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 5bd9ba64bae..8451f3268b8 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
@@ -10,13 +10,11 @@
#include <vespa/searchcore/proton/attribute/attribute_collection_spec_factory.h>
#include <vespa/searchcore/proton/attribute/attribute_factory.h>
#include <vespa/searchcore/proton/attribute/attribute_manager_initializer.h>
-#include <vespa/searchcore/proton/attribute/attribute_populator.h>
#include <vespa/searchcore/proton/attribute/filter_attribute_manager.h>
#include <vespa/searchcore/proton/attribute/sequential_attributes_initializer.h>
#include <vespa/searchcore/proton/common/alloc_config.h>
#include <vespa/searchcore/proton/matching/sessionmanager.h>
#include <vespa/searchcore/proton/reprocessing/attribute_reprocessing_initializer.h>
-#include <vespa/searchcore/proton/reprocessing/document_reprocessing_handler.h>
#include <vespa/searchcore/proton/reprocessing/reprocess_documents_task.h>
#include <vespa/searchlib/docstore/document_store_visitor_progress.h>
#include <vespa/log/log.h>
@@ -275,6 +273,9 @@ FastAccessDocSubDB::applyConfig(const DocumentDBConfig &newConfigSnapshot, const
reconfigureAttributeMetrics(*newMgr, *oldMgr);
}
_iFeedView.set(_fastAccessFeedView.get());
+ if (isNodeRetired()) {
+ reconfigureAttributesConsideringNodeState();
+ }
}
return tasks;
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp
index 5b1b547fcfc..97e55c37aff 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp
@@ -422,23 +422,27 @@ namespace {
constexpr double RETIRED_DEAD_RATIO = 0.5;
struct UpdateConfig : public search::attribute::IAttributeFunctor {
+ UpdateConfig(search::CompactionStrategy compactionStrategy) noexcept
+ : _compactionStrategy(compactionStrategy)
+ {}
void operator()(search::attribute::IAttributeVector &iAttributeVector) override {
auto attributeVector = dynamic_cast<search::AttributeVector *>(&iAttributeVector);
if (attributeVector != nullptr) {
auto cfg = attributeVector->getConfig();
- cfg.setCompactionStrategy(search::CompactionStrategy(RETIRED_DEAD_RATIO, RETIRED_DEAD_RATIO));
+ cfg.setCompactionStrategy(_compactionStrategy);
attributeVector->update_config(cfg);
}
}
+ search::CompactionStrategy _compactionStrategy;
};
-search::CompactionStrategy
-computeCompactionStrategy(search::CompactionStrategy strategy, bool isNodeRetired) {
- return isNodeRetired
- ? search::CompactionStrategy(RETIRED_DEAD_RATIO, RETIRED_DEAD_RATIO)
- : strategy;
}
+search::CompactionStrategy
+StoreOnlyDocSubDB::computeCompactionStrategy(search::CompactionStrategy strategy) const {
+ return isNodeRetired()
+ ? search::CompactionStrategy(RETIRED_DEAD_RATIO, RETIRED_DEAD_RATIO)
+ : strategy;
}
void
@@ -450,25 +454,30 @@ StoreOnlyDocSubDB::reconfigure(const search::LogDocumentStore::Config & config,
// Amortize memory spike cost over N docs
grow.setDocsGrowDelta(grow.getDocsGrowDelta() + alloc_strategy.get_amortize_count());
cfg.setGrowStrategy(grow);
- cfg.setCompactionStrategy(computeCompactionStrategy(alloc_strategy.get_compaction_strategy(), isNodeRetired()));
+ cfg.setCompactionStrategy(computeCompactionStrategy(alloc_strategy.get_compaction_strategy()));
_dms->update_config(cfg); // Update grow and compaction config
_rSummaryMgr->reconfigure(config);
}
void
-StoreOnlyDocSubDB::setBucketStateCalculator(const std::shared_ptr<IBucketStateCalculator> & calc)
-{
+StoreOnlyDocSubDB::setBucketStateCalculator(const std::shared_ptr<IBucketStateCalculator> & calc) {
bool wasNodeRetired = isNodeRetired();
_nodeRetired = calc->nodeRetired();
if (wasNodeRetired != isNodeRetired()) {
+ search::CompactionStrategy compactionStrategy = computeCompactionStrategy(_lastConfiguredCompactionStrategy);
auto cfg = _dms->getConfig();
- cfg.setCompactionStrategy(computeCompactionStrategy(_lastConfiguredCompactionStrategy, isNodeRetired()));
+ cfg.setCompactionStrategy(compactionStrategy);
_dms->update_config(cfg);
+ reconfigureAttributesConsideringNodeState();
+ }
+}
- auto attrMan = getAttributeManager();
- if (attrMan) {
- attrMan->asyncForEachAttribute(std::make_shared<UpdateConfig>());
- }
+void
+StoreOnlyDocSubDB::reconfigureAttributesConsideringNodeState() {
+ search::CompactionStrategy compactionStrategy = computeCompactionStrategy(_lastConfiguredCompactionStrategy);
+ auto attrMan = getAttributeManager();
+ if (attrMan) {
+ attrMan->asyncForEachAttribute(std::make_shared<UpdateConfig>(compactionStrategy));
}
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h
index ddb6522493f..10ef88d0eaa 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h
@@ -184,6 +184,7 @@ protected:
vespalib::string getSubDbName() const;
bool isNodeRetired() const { return _nodeRetired; }
void reconfigure(const search::LogDocumentStore::Config & protonConfig, const AllocStrategy& alloc_strategy);
+ void reconfigureAttributesConsideringNodeState();
public:
StoreOnlyDocSubDB(const Config &cfg, const Context &ctx);
~StoreOnlyDocSubDB() override;
@@ -234,6 +235,7 @@ public:
std::shared_ptr<IDocumentDBReference> getDocumentDBReference() override;
void tearDownReferences(IDocumentDBReferenceResolver &resolver) override;
PendingLidTrackerBase & getUncommittedLidsTracker() override { return *_pendingLidsForCommit; }
+ search::CompactionStrategy computeCompactionStrategy(search::CompactionStrategy strategy) const;
};
}