summaryrefslogtreecommitdiffstats
path: root/configd/src/apps/sentinel/config-owner.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'configd/src/apps/sentinel/config-owner.cpp')
-rw-r--r--configd/src/apps/sentinel/config-owner.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/configd/src/apps/sentinel/config-owner.cpp b/configd/src/apps/sentinel/config-owner.cpp
index 3feec70d2e5..d5f06dff76b 100644
--- a/configd/src/apps/sentinel/config-owner.cpp
+++ b/configd/src/apps/sentinel/config-owner.cpp
@@ -2,6 +2,7 @@
#include "config-owner.h"
#include <vespa/vespalib/util/exceptions.h>
+#include <vespa/config/common/exceptions.h>
#include <string>
#include <vespa/log/log.h>
@@ -41,4 +42,29 @@ ConfigOwner::checkForConfigUpdate() {
return false;
}
+std::unique_ptr<ModelConfig>
+ConfigOwner::fetchModelConfig(std::chrono::milliseconds timeout)
+{
+ std::unique_ptr<ModelConfig> modelConfig;
+ ConfigSubscriber tempSubscriber;
+ try {
+ ConfigHandle<ModelConfig>::UP modelHandle =
+ tempSubscriber.subscribe<ModelConfig>("admin/model", timeout);
+ if (tempSubscriber.nextGenerationNow()) {
+ modelConfig = modelHandle->getConfig();
+ LOG(config, "Sentinel got model info [version %s] for %zd hosts [config generation %zd",
+ modelConfig->vespaVersion.c_str(), modelConfig->hosts.size(),
+ tempSubscriber.getGeneration());
+ }
+ } catch (ConfigTimeoutException & ex) {
+ LOG(warning, "Timeout getting model config: %s [skipping connectivity checks]", ex.getMessage().c_str());
+ } catch (InvalidConfigException& ex) {
+ LOG(warning, "Invalid model config: %s [skipping connectivity checks]", ex.getMessage().c_str());
+ } catch (ConfigRuntimeException& ex) {
+ LOG(warning, "Runtime exception getting model config: %s [skipping connectivity checks]", ex.getMessage().c_str());
+
+ }
+ return modelConfig;
+}
+
}