summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@yahooinc.com>2021-11-30 16:39:26 +0100
committerGitHub <noreply@github.com>2021-11-30 16:39:26 +0100
commitc105ea3963f924c3bd501e7f65cdaae3eb9edf56 (patch)
tree27d30f52be1c8b4edd3253775eb6fe4c2a0e029c /config
parent59df5c1c18eb9fc7c171f54fae776d81042de1d4 (diff)
parent569b584eb7e9a85f8f0d75406b1f9477a498bf07 (diff)
Merge pull request #20299 from vespa-engine/vekterli/preserve-change-flag-for-concurrent-config-updates
Preserve change flag for concurrent config updates [run-systemtest]
Diffstat (limited to 'config')
-rw-r--r--config/src/vespa/config/common/configvalue.cpp2
-rw-r--r--config/src/vespa/config/common/configvalue.h4
-rw-r--r--config/src/vespa/config/frt/frtconfigagent.cpp2
-rw-r--r--config/src/vespa/config/subscription/configsubscription.cpp6
4 files changed, 9 insertions, 5 deletions
diff --git a/config/src/vespa/config/common/configvalue.cpp b/config/src/vespa/config/common/configvalue.cpp
index d770c126d38..da1cbfc792c 100644
--- a/config/src/vespa/config/common/configvalue.cpp
+++ b/config/src/vespa/config/common/configvalue.cpp
@@ -55,7 +55,7 @@ ConfigValue::getLegacyFormat() const
return lines;
}
-const vespalib::string
+vespalib::string
ConfigValue::asJson() const {
if (_payload) {
const vespalib::slime::Inspector & payload(_payload->getSlimePayload());
diff --git a/config/src/vespa/config/common/configvalue.h b/config/src/vespa/config/common/configvalue.h
index 553a609b9db..bf4c320c061 100644
--- a/config/src/vespa/config/common/configvalue.h
+++ b/config/src/vespa/config/common/configvalue.h
@@ -35,8 +35,8 @@ public:
const vespalib::string & getLine(int i) const { return _lines.at(i); }
const std::vector<vespalib::string> & getLines() const { return _lines; }
std::vector<vespalib::string> getLegacyFormat() const;
- const vespalib::string asJson() const;
- const vespalib::string getXxhash64() const { return _xxhash64; }
+ vespalib::string asJson() const;
+ const vespalib::string& getXxhash64() const { return _xxhash64; }
void serializeV1(::vespalib::slime::Cursor & cursor) const;
void serializeV2(::vespalib::slime::Cursor & cursor) const;
diff --git a/config/src/vespa/config/frt/frtconfigagent.cpp b/config/src/vespa/config/frt/frtconfigagent.cpp
index 2b66e806270..827ef75251b 100644
--- a/config/src/vespa/config/frt/frtconfigagent.cpp
+++ b/config/src/vespa/config/frt/frtconfigagent.cpp
@@ -71,7 +71,7 @@ FRTConfigAgent::handleUpdatedGeneration(const ConfigKey & key, const ConfigState
if (LOG_WOULD_LOG(spam)) {
LOG(spam, "updating holder for key %s,", key.toString().c_str());
}
- _holder->handle(ConfigUpdate::UP(new ConfigUpdate(_latest, changed, newState.generation)));
+ _holder->handle(std::make_unique<ConfigUpdate>(_latest, changed, newState.generation));
_numConfigured++;
}
diff --git a/config/src/vespa/config/subscription/configsubscription.cpp b/config/src/vespa/config/subscription/configsubscription.cpp
index 4aaa30323c7..9790541906b 100644
--- a/config/src/vespa/config/subscription/configsubscription.cpp
+++ b/config/src/vespa/config/subscription/configsubscription.cpp
@@ -31,7 +31,11 @@ ConfigSubscription::nextUpdate(int64_t generation, std::chrono::milliseconds tim
if (_closed || !_holder->poll()) {
return false;
}
+ auto old = std::move(_next);
_next = _holder->provide();
+ if (old) {
+ _next->merge(*old);
+ }
if (isGenerationNewer(_next->getGeneration(), generation)) {
return true;
}
@@ -98,7 +102,7 @@ ConfigSubscription::flip()
_current = std::move(_next);
_lastGenerationChanged = _current->getGeneration();
} else {
- _current.reset(new ConfigUpdate(_current->getValue(), false, _next->getGeneration()));
+ _current = std::make_unique<ConfigUpdate>(_current->getValue(), false, _next->getGeneration());
}
_isChanged = change;
}