From d3eebb65bd7fa84b3b04245c23f1f648e665516f Mon Sep 17 00:00:00 2001 From: Oleg Doronin Date: Thu, 14 Nov 2024 14:34:03 +0100 Subject: [PATCH] scope mapping has been supported for streaming (#11585) --- .../control_plane_config/control_plane_config.cpp | 12 +++++++++++- .../fq/libs/control_plane_config/events/events.h | 10 ++++++++-- ydb/core/fq/libs/quota_manager/events/events.h | 1 + 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/ydb/core/fq/libs/control_plane_config/control_plane_config.cpp b/ydb/core/fq/libs/control_plane_config/control_plane_config.cpp index 6249994b4285..5a9f4962c1c5 100644 --- a/ydb/core/fq/libs/control_plane_config/control_plane_config.cpp +++ b/ydb/core/fq/libs/control_plane_config/control_plane_config.cpp @@ -65,8 +65,18 @@ class TControlPlaneConfigActor : public NActors::TActorBootstrappedSubjectMapping[SUBJECT_TYPE_SCOPE].emplace(scopeToTenant.GetKey(), scopeToTenant.GetValue()); + if (!isInserted) { + CPC_LOG_E("Invalid configuation, the scope with the name " << scopeToTenant.GetKey() << " already exists"); + } + TenantInfo->TenantMapping.emplace(scopeToTenant.GetValue(), scopeToTenant.GetValue()); + } for (const auto& cloudToTenant : mapping.GetCloudIdToTenantName()) { - TenantInfo->SubjectMapping[SUBJECT_TYPE_CLOUD].emplace(cloudToTenant.GetKey(), cloudToTenant.GetValue()); + auto [_, isInserted] = TenantInfo->SubjectMapping[SUBJECT_TYPE_CLOUD].emplace(cloudToTenant.GetKey(), cloudToTenant.GetValue()); + if (!isInserted) { + CPC_LOG_E("Invalid configuation, the cloud with the name " << cloudToTenant.GetKey() << " already exists"); + } TenantInfo->TenantMapping.emplace(cloudToTenant.GetValue(), cloudToTenant.GetValue()); } for (const auto& commonTenantName : mapping.GetCommonTenantName()) { diff --git a/ydb/core/fq/libs/control_plane_config/events/events.h b/ydb/core/fq/libs/control_plane_config/events/events.h index 1d8d0e97c02d..0d790376d5a8 100644 --- a/ydb/core/fq/libs/control_plane_config/events/events.h +++ b/ydb/core/fq/libs/control_plane_config/events/events.h @@ -46,8 +46,14 @@ struct TTenantInfo { return pinTenants[MultiHash(cloudId) % pinTenants.size()]; } - auto it = SubjectMapping.find(SUBJECT_TYPE_CLOUD); - auto vTenant = it == SubjectMapping.end() ? "" : it->second.Value(cloudId, ""); + auto it = SubjectMapping.find(SUBJECT_TYPE_SCOPE); + auto vTenant = it == SubjectMapping.end() ? "" : it->second.Value(scope, ""); + + if (!vTenant) { + auto it = SubjectMapping.find(SUBJECT_TYPE_CLOUD); + vTenant = it == SubjectMapping.end() ? "" : it->second.Value(cloudId, ""); + } + if (!vTenant && CommonVTenants.size()) { vTenant = CommonVTenants[MultiHash(cloudId) % CommonVTenants.size()]; } diff --git a/ydb/core/fq/libs/quota_manager/events/events.h b/ydb/core/fq/libs/quota_manager/events/events.h index e4636d28cdd8..a70ae8eebcb4 100644 --- a/ydb/core/fq/libs/quota_manager/events/events.h +++ b/ydb/core/fq/libs/quota_manager/events/events.h @@ -18,6 +18,7 @@ namespace NFq { constexpr auto SUBJECT_TYPE_CLOUD = "cloud"; +constexpr auto SUBJECT_TYPE_SCOPE = "scope"; // Quota per cloud constexpr auto QUOTA_ANALYTICS_COUNT_LIMIT = "yq.analyticsQuery.count";