aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorinnokentii <innokentii@ydb.tech>2023-12-04 23:07:39 +0300
committerinnokentii <innokentii@ydb.tech>2023-12-05 07:43:28 +0300
commitd287ea81ce0e08a8db8839a7d764c7178c1086c6 (patch)
treecb27394c46296b9d813a3312e0af2d496a01628e
parent13a0c7240bec3fb689296001a29f836bd7c5abfe (diff)
downloadydb-d287ea81ce0e08a8db8839a7d764c7178c1086c6.tar.gz
Fix yaml handling for non subscribers
fix yaml handling for non subscribers
-rw-r--r--ydb/core/cms/console/configs_dispatcher.cpp42
1 files changed, 29 insertions, 13 deletions
diff --git a/ydb/core/cms/console/configs_dispatcher.cpp b/ydb/core/cms/console/configs_dispatcher.cpp
index 2f4cad0111..db85bbe440 100644
--- a/ydb/core/cms/console/configs_dispatcher.cpp
+++ b/ydb/core/cms/console/configs_dispatcher.cpp
@@ -152,6 +152,13 @@ public:
void UpdateYamlVersion(const TSubscription::TPtr &kinds) const;
+ struct TCheckKindsResult {
+ bool HasYamlKinds = false;
+ bool HasNonYamlKinds = false;
+ };
+
+ TCheckKindsResult CheckKinds(const TVector<ui32>& kinds, const char* errorContext) const;
+
NKikimrConfig::TAppConfig ParseYamlProtoConfig();
void Handle(NMon::TEvHttpInfo::TPtr &ev);
@@ -760,16 +767,17 @@ void TConfigsDispatcher::Handle(TEvConfigsDispatcher::TEvGetConfigRequest::TPtr
{
auto resp = MakeHolder<TEvConfigsDispatcher::TEvGetConfigResponse>();
- for (auto kind : ev->Get()->ConfigItemKinds) {
- if (!DYNAMIC_KINDS.contains(kind)) {
- TStringStream sstr;
- sstr << static_cast<NKikimrConsole::TConfigItem::EKind>(kind);
- Y_ABORT("unexpected kind in GetConfigRequest: %s", sstr.Str().data());
- }
- }
+ auto [yamlKinds, _] = CheckKinds(
+ ev->Get()->ConfigItemKinds,
+ "TEvGetConfigRequest handler");
auto trunc = std::make_shared<NKikimrConfig::TAppConfig>();
- ReplaceConfigItems(CurrentConfig, *trunc, KindsToBitMap(ev->Get()->ConfigItemKinds), InitialConfig);
+ auto kinds = KindsToBitMap(ev->Get()->ConfigItemKinds);
+ if (YamlConfigEnabled && yamlKinds) {
+ ReplaceConfigItems(YamlProtoConfig, *trunc, kinds, InitialConfig);
+ } else {
+ ReplaceConfigItems(CurrentConfig, *trunc, kinds, InitialConfig);
+ }
resp->Config = trunc;
BLOG_TRACE("Send TEvConfigsDispatcher::TEvGetConfigResponse"
@@ -778,15 +786,14 @@ void TConfigsDispatcher::Handle(TEvConfigsDispatcher::TEvGetConfigRequest::TPtr
Send(ev->Sender, std::move(resp), 0, ev->Cookie);
}
-void TConfigsDispatcher::Handle(TEvConfigsDispatcher::TEvSetConfigSubscriptionRequest::TPtr &ev)
-{
+TConfigsDispatcher::TCheckKindsResult TConfigsDispatcher::CheckKinds(const TVector<ui32>& kinds, const char* errorContext) const {
bool yamlKinds = false;
bool nonYamlKinds = false;
- for (auto kind : ev->Get()->ConfigItemKinds) {
+ for (auto kind : kinds) {
if (!DYNAMIC_KINDS.contains(kind)) {
TStringStream sstr;
sstr << static_cast<NKikimrConsole::TConfigItem::EKind>(kind);
- Y_ABORT("unexpected kind in SetConfigSubscriptionRequest: %s", sstr.Str().data());
+ Y_ABORT("unexpected kind in %s: %s", errorContext, sstr.Str().data());
}
if (NON_YAML_KINDS.contains(kind)) {
@@ -797,9 +804,18 @@ void TConfigsDispatcher::Handle(TEvConfigsDispatcher::TEvSetConfigSubscriptionRe
}
if (yamlKinds && nonYamlKinds) {
- Y_ABORT("both yaml and non yaml kinds in SetConfigSubscriptionRequest");
+ Y_ABORT("both yaml and non yaml kinds in %s", errorContext);
}
+ return {yamlKinds, nonYamlKinds};
+}
+
+void TConfigsDispatcher::Handle(TEvConfigsDispatcher::TEvSetConfigSubscriptionRequest::TPtr &ev)
+{
+ auto [yamlKinds, nonYamlKinds] = CheckKinds(
+ ev->Get()->ConfigItemKinds,
+ "SetConfigSubscriptionRequest handler");
+ Y_UNUSED(nonYamlKinds);
auto kinds = KindsToBitMap(ev->Get()->ConfigItemKinds);
auto subscriberActor = ev->Get()->Subscriber ? ev->Get()->Subscriber : ev->Sender;