Skip to content

Commit 06b0711

Browse files
authored
Fix leaky kind filters in configs dispatcher (#9917)
1 parent 7965c9b commit 06b0711

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

ydb/core/cms/console/configs_dispatcher.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -928,7 +928,7 @@ void TConfigsDispatcher::Handle(TEvConsole::TEvConfigSubscriptionNotification::T
928928
if (subscription->Yaml && YamlConfigEnabled) {
929929
ReplaceConfigItems(YamlProtoConfig, trunc, FilterKinds(subscription->Kinds), BaseConfig);
930930
} else {
931-
Y_FOR_EACH_BIT(kind, kinds) {
931+
Y_FOR_EACH_BIT(kind, FilterKinds(kinds)) {
932932
if (affectedKinds.contains(kind)) {
933933
hasAffectedKinds = true;
934934
}
@@ -942,15 +942,15 @@ void TConfigsDispatcher::Handle(TEvConsole::TEvConfigSubscriptionNotification::T
942942
ReplaceConfigItems(ev->Get()->Record.GetConfig(), trunc, FilterKinds(kinds), BaseConfig);
943943
}
944944

945-
if (hasAffectedKinds || !CompareConfigs(subscription->CurrentConfig.Config, trunc) || CurrentStateFunc() == &TThis::StateInit) {
945+
if (hasAffectedKinds || !CompareConfigs(subscription->CurrentConfig.Config, trunc, FilterKinds(kinds)) || CurrentStateFunc() == &TThis::StateInit) {
946946
subscription->UpdateInProcess = MakeHolder<TEvConsole::TEvConfigNotificationRequest>();
947947
subscription->UpdateInProcess->Record.MutableConfig()->CopyFrom(trunc);
948948
subscription->UpdateInProcess->Record.SetLocal(true);
949-
Y_FOR_EACH_BIT(kind, kinds) {
949+
Y_FOR_EACH_BIT(kind, FilterKinds(kinds)) {
950950
subscription->UpdateInProcess->Record.AddItemKinds(kind);
951951
}
952952
subscription->UpdateInProcessCookie = ++NextRequestCookie;
953-
subscription->UpdateInProcessConfigVersion = FilterVersion(ev->Get()->Record.GetConfig().GetVersion(), kinds);
953+
subscription->UpdateInProcessConfigVersion = FilterVersion(ev->Get()->Record.GetConfig().GetVersion(), FilterKinds(kinds));
954954

955955
if (YamlConfigEnabled) {
956956
UpdateYamlVersion(subscription);
@@ -1047,6 +1047,12 @@ void TConfigsDispatcher::Handle(TEvConfigsDispatcher::TEvSetConfigSubscriptionRe
10471047
"SetConfigSubscriptionRequest handler");
10481048
Y_UNUSED(nonYamlKinds);
10491049
auto kinds = KindsToBitMap(ev->Get()->ConfigItemKinds);
1050+
1051+
auto truncKinds = FilterKinds(kinds);
1052+
if (truncKinds.Empty() && !kinds.Empty()) {
1053+
return;
1054+
}
1055+
10501056
auto subscriberActor = ev->Get()->Subscriber ? ev->Get()->Subscriber : ev->Sender;
10511057

10521058
auto subscription = FindSubscription(kinds);

0 commit comments

Comments
 (0)