summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@yahoo-inc.com>2017-05-22 10:38:41 +0000
committerTor Egge <Tor.Egge@yahoo-inc.com>2017-05-22 10:38:41 +0000
commitb5eb310aa8a6cd8b44d73891d8064692dca7421a (patch)
tree9a1ff4d2cecbae1ca0ee27e46e6b67d15a84c9be /searchcore
parent1fd919358e1a3f843a8c5a067477d7a5f0e15d5d (diff)
Reduce number of component configs reported by proton.
Move setting of simple component config producer from proton to proton configurer. Delay setting of "proton" component until document dbs have been updated.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/tests/proton/proton_configurer/proton_configurer_test.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb.cpp6
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb.h5
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_document_db_config_owner.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton.cpp26
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton_configurer.cpp17
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton_configurer.h3
8 files changed, 32 insertions, 31 deletions
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 7a8247c8944..712ac681f30 100644
--- a/searchcore/src/tests/proton/proton_configurer/proton_configurer_test.cpp
+++ b/searchcore/src/tests/proton/proton_configurer/proton_configurer_test.cpp
@@ -210,6 +210,8 @@ struct MyDocumentDBConfigOwner : public IDocumentDBConfigOwner
virtual ~MyDocumentDBConfigOwner() { }
virtual void reconfigure(const DocumentDBConfig::SP & config) override;
+ virtual bool getDelayedConfig() const override { return false; }
+ virtual int64_t getActiveGeneration() const override { return 0; }
};
struct MyProtonConfigurerOwner : public IProtonConfigurerOwner
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp
index 307707b7c6a..c3c2f95b059 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp
@@ -827,6 +827,12 @@ DocumentDB::reconfigure(const DocumentDBConfig::SP & snapshot)
}
}
+bool
+DocumentDB::getDelayedConfig() const
+{
+ return _state.getDelayedConfig();
+}
+
void
DocumentDB::enterRedoReprocessState()
{
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.h b/searchcore/src/vespa/searchcore/proton/server/documentdb.h
index da933faeeb0..61c683ccf08 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdb.h
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.h
@@ -397,7 +397,6 @@ public:
void retain() { _refCount.retain(); }
void release() { _refCount.release(); }
- bool getDelayedConfig() const { return _state.getDelayedConfig(); }
/**
* Implements IReplayConfig API.
@@ -416,8 +415,8 @@ public:
// Implements DocumentDBConfigOwner
void reconfigure(const DocumentDBConfig::SP & snapshot) override;
-
- int64_t getActiveGeneration() const;
+ virtual bool getDelayedConfig() const override;
+ virtual int64_t getActiveGeneration() const override;
// Implements IDocumentSubDBOwner
void syncFeedView() override;
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_document_db_config_owner.h b/searchcore/src/vespa/searchcore/proton/server/i_document_db_config_owner.h
index fd64dc6253f..60b5da3cbd4 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_document_db_config_owner.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_document_db_config_owner.h
@@ -16,6 +16,8 @@ class IDocumentDBConfigOwner
public:
virtual ~IDocumentDBConfigOwner() { }
virtual void reconfigure(const std::shared_ptr<DocumentDBConfig> & config) = 0;
+ virtual bool getDelayedConfig() const = 0;
+ virtual int64_t getActiveGeneration() const = 0;
};
} // namespace proton
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.cpp b/searchcore/src/vespa/searchcore/proton/server/proton.cpp
index ae9aa130b72..2c9231a40ff 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/proton.cpp
@@ -178,7 +178,6 @@ Proton::Proton(const config::ConfigUri & configUri,
_flushEngine(),
_rpcHooks(),
_healthAdapter(*this),
- _componentConfig(),
_genericStateHandler(CUSTOM_COMPONENT_API_PATH, *this),
_customComponentBindToken(),
_customComponentRootToken(),
@@ -251,10 +250,6 @@ Proton::init(const BootstrapConfig::SP & configSnapshot)
(protonConfig.basedir,
diskMemUsageSamplerConfig(protonConfig));
- _componentConfig.addConfig(vespalib::ComponentConfigProducer::Config("proton",
- configSnapshot->getGeneration(),
- "config obtained at startup"));
-
_metricsEngine.reset(new MetricsEngine());
_metricsEngine->addMetricsHook(_metricsHook);
_fileHeaderContext.setClusterName(protonConfig.clustername,
@@ -425,8 +420,6 @@ Proton::applyConfig(const BootstrapConfig::SP & configSnapshot)
if (_persistenceProxy.get() != NULL) {
_persistenceProxy->setRepo(*repo);
}
- _componentConfig.addConfig(vespalib::ComponentConfigProducer::Config("proton.documentdbs",
- configSnapshot->getGeneration()));
_diskMemUsageSampler->
setConfig(diskMemUsageSamplerConfig(protonConfig));
if (_memoryFlushConfigUpdater) {
@@ -883,24 +876,7 @@ Proton::waitForOnlineState()
void
Proton::getComponentConfig(Consumer &consumer)
{
- _componentConfig.getComponentConfig(consumer);
- std::vector<DocumentDB::SP> dbs;
- {
- std::shared_lock<std::shared_timed_mutex> guard(_mutex);
- for (const auto &kv : _documentDBMap) {
- dbs.push_back(kv.second);
- }
- }
- for (const auto &docDb : dbs) {
- vespalib::string name("proton.documentdb.");
- name.append(docDb->getDocTypeName().getName());
- int64_t gen = docDb->getActiveGeneration();
- if (docDb->getDelayedConfig()) {
- consumer.add(Config(name, gen, "has delayed attribute aspect change in config"));
- } else {
- consumer.add(Config(name, gen));
- }
- }
+ _protonConfigurer.getComponentConfig().getComponentConfig(consumer);
}
int64_t
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.h b/searchcore/src/vespa/searchcore/proton/server/proton.h
index 68f6f4efc6a..9c107d92c3c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton.h
+++ b/searchcore/src/vespa/searchcore/proton/server/proton.h
@@ -32,7 +32,6 @@
#include <vespa/vespalib/net/component_config_producer.h>
#include <vespa/vespalib/net/generic_state_handler.h>
#include <vespa/vespalib/net/json_get_handler.h>
-#include <vespa/vespalib/net/simple_component_config_producer.h>
#include <vespa/vespalib/net/state_explorer.h>
#include <vespa/vespalib/net/state_server.h>
#include <vespa/vespalib/util/varholder.h>
@@ -118,7 +117,6 @@ private:
FlushEngine::UP _flushEngine;
RPCHooks::UP _rpcHooks;
HealthAdapter _healthAdapter;
- vespalib::SimpleComponentConfigProducer _componentConfig;
vespalib::GenericStateHandler _genericStateHandler;
vespalib::JsonHandlerRepo::Token::UP _customComponentBindToken;
vespalib::JsonHandlerRepo::Token::UP _customComponentRootToken;
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton_configurer.cpp b/searchcore/src/vespa/searchcore/proton/server/proton_configurer.cpp
index c7009754899..18ac1cf2ed5 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton_configurer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/proton_configurer.cpp
@@ -23,7 +23,8 @@ ProtonConfigurer::ProtonConfigurer(vespalib::ThreadStackExecutorBase &executor,
_pendingConfigSnapshot(),
_activeConfigSnapshot(),
_mutex(),
- _allowReconfig(false)
+ _allowReconfig(false),
+ _componentConfig()
{
}
@@ -116,6 +117,8 @@ ProtonConfigurer::applyConfig(std::shared_ptr<ProtonConfigSnapshot> configSnapsh
configureDocumentDB(*configSnapshot, docTypeName, ddbConfig.configid, initializeThreads);
}
pruneDocumentDBs(*configSnapshot);
+ size_t gen = bootstrapConfig->getGeneration();
+ _componentConfig.addConfig({"proton", gen});
std::lock_guard<std::mutex> guard(_mutex);
_activeConfigSnapshot = configSnapshot;
}
@@ -135,10 +138,20 @@ ProtonConfigurer::configureDocumentDB(const ProtonConfigSnapshot &configSnapshot
if (newdb != nullptr) {
auto insres = _documentDBs.insert(std::make_pair(docTypeName, newdb));
assert(insres.second);
+ dbitr = insres.first;
+ } else {
+ return;
}
} else {
dbitr->second->reconfigure(documentDBConfig);
}
+ vespalib::string componentName("proton.documentdb." + docTypeName.getName());
+ size_t gen = dbitr->second->getActiveGeneration();
+ if (dbitr->second->getDelayedConfig()) {
+ _componentConfig.addConfig({componentName, gen, "has delayed attribute aspect change in config"});
+ } else {
+ _componentConfig.addConfig({componentName, gen});
+ }
}
void
@@ -157,8 +170,10 @@ ProtonConfigurer::pruneDocumentDBs(const ProtonConfigSnapshot &configSnapshot)
while (dbitr != _documentDBs.end()) {
auto found(newDocTypes.find(dbitr->first));
if (found == newDocTypes.end()) {
+ vespalib::string componentName("proton.documentdb." + dbitr->first.getName());
_owner.removeDocumentDB(dbitr->first);
dbitr = _documentDBs.erase(dbitr);
+ _componentConfig.removeConfig(componentName);
} else {
++dbitr;
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton_configurer.h b/searchcore/src/vespa/searchcore/proton/server/proton_configurer.h
index 17f25274876..b8c80602691 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton_configurer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/proton_configurer.h
@@ -4,6 +4,7 @@
#include "i_proton_configurer.h"
#include <vespa/searchcore/proton/common/doctypename.h>
+#include <vespa/vespalib/net/simple_component_config_producer.h>
#include <map>
#include <mutex>
#include "executor_thread_service.h"
@@ -30,6 +31,7 @@ class ProtonConfigurer : public IProtonConfigurer
std::shared_ptr<ProtonConfigSnapshot> _activeConfigSnapshot;
mutable std::mutex _mutex;
bool _allowReconfig;
+ vespalib::SimpleComponentConfigProducer _componentConfig;
void performReconfigure();
bool skipConfig(const ProtonConfigSnapshot *configSnapshot, bool initialConfig);
@@ -52,6 +54,7 @@ public:
virtual void reconfigure(std::shared_ptr<ProtonConfigSnapshot> configSnapshot) override;
void applyInitialConfig(InitializeThreads initializeThreads);
+ vespalib::SimpleComponentConfigProducer &getComponentConfig() { return _componentConfig; }
};
} // namespace proton