aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorauzhegov <auzhegov@yandex-team.com>2023-08-07 18:32:36 +0300
committerauzhegov <auzhegov@yandex-team.com>2023-08-07 21:21:59 +0300
commitcd3be4969549639f46002004e670f64424e7f2f8 (patch)
tree77739702849d6f90a17a80d2ed280c8904dba5ba
parent5d24f77351bfdc93dab16732f73aad2c6254d1e3 (diff)
downloadydb-cd3be4969549639f46002004e670f64424e7f2f8.tar.gz
enable compute selection based on FolderId
-rw-r--r--ydb/core/fq/libs/actors/pending_fetcher.cpp3
-rw-r--r--ydb/core/fq/libs/compute/common/config.h65
-rw-r--r--ydb/core/fq/libs/config/protos/CMakeLists.darwin-x86_64.txt13
-rw-r--r--ydb/core/fq/libs/config/protos/CMakeLists.linux-aarch64.txt13
-rw-r--r--ydb/core/fq/libs/config/protos/CMakeLists.linux-x86_64.txt13
-rw-r--r--ydb/core/fq/libs/config/protos/CMakeLists.windows-x86_64.txt13
-rw-r--r--ydb/core/fq/libs/config/protos/activation.proto13
-rw-r--r--ydb/core/fq/libs/config/protos/compute.proto20
-rw-r--r--ydb/core/fq/libs/config/protos/ya.make1
-rw-r--r--ydb/core/fq/libs/control_plane_proxy/control_plane_proxy.cpp50
10 files changed, 147 insertions, 57 deletions
diff --git a/ydb/core/fq/libs/actors/pending_fetcher.cpp b/ydb/core/fq/libs/actors/pending_fetcher.cpp
index 3e7c660e63b..a584951edc8 100644
--- a/ydb/core/fq/libs/actors/pending_fetcher.cpp
+++ b/ydb/core/fq/libs/actors/pending_fetcher.cpp
@@ -41,7 +41,6 @@
#include <ydb/public/sdk/cpp/client/ydb_driver/driver.h>
#include <ydb/public/sdk/cpp/client/ydb_value/value.h>
#include <ydb/public/sdk/cpp/client/ydb_result/result.h>
-#include <ydb/public/lib/fq/scope.h>
#include <ydb/core/fq/libs/common/compression.h>
#include <ydb/core/fq/libs/common/entity_id.h>
@@ -398,7 +397,7 @@ private:
);
auto runActorId =
- ComputeConfig.GetComputeType(task) == NConfig::EComputeType::YDB
+ ComputeConfig.GetComputeType(task.query_type(), task.scope()) == NConfig::EComputeType::YDB
? Register(CreateYdbRunActor(std::move(params), queryCounters))
: Register(CreateRunActor(SelfId(), queryCounters, std::move(params)));
diff --git a/ydb/core/fq/libs/compute/common/config.h b/ydb/core/fq/libs/compute/common/config.h
index d8cac7d8713..f735dcdeeb3 100644
--- a/ydb/core/fq/libs/compute/common/config.h
+++ b/ydb/core/fq/libs/compute/common/config.h
@@ -1,11 +1,10 @@
#pragma once
#include <ydb/core/fq/libs/config/protos/compute.pb.h>
-#include <ydb/core/fq/libs/protos/fq_private.pb.h>
-
-#include <util/generic/algorithm.h>
#include <util/digest/multi.h>
+#include <util/generic/algorithm.h>
+#include <util/generic/yexception.h>
namespace NFq {
@@ -13,24 +12,40 @@ class TComputeConfig {
public:
explicit TComputeConfig(const NFq::NConfig::TComputeConfig& computeConfig)
: ComputeConfig(computeConfig)
- {}
+ , DefaultCompute(ComputeConfig.GetDefaultCompute() != NFq::NConfig::EComputeType::UNKNOWN
+ ? ComputeConfig.GetDefaultCompute()
+ : NFq::NConfig::EComputeType::IN_PLACE) {
+ for (const auto& mapping : ComputeConfig.GetComputeMapping()) {
+ if (mapping.HasActivation()) {
+ auto percentage = mapping.GetActivation().GetPercentage();
+ Y_ENSURE(percentage == 0 || percentage == 100,
+ "Activation percentage must be either 0 or 100");
+ }
+ }
+ }
- NFq::NConfig::EComputeType GetComputeType(const Fq::Private::GetTaskResult::Task& task) const {
- for (const auto& rule: ComputeConfig.GetComputeMapping().GetRule()) {
- const bool isMatched = AllOf(rule.GetKey(),
- [&task](const auto& key) {
- switch (key.key_case()) {
- case NConfig::TComputeMappingRuleKey::kQueryType:
- return key.GetQueryType() == task.query_type();
- case NConfig::TComputeMappingRuleKey::KEY_NOT_SET:
- return false;
+ NFq::NConfig::EComputeType GetComputeType(const FederatedQuery::QueryContent::QueryType queryType, const TString& scope) const {
+ for (const auto& mapping : ComputeConfig.GetComputeMapping()) {
+ if (mapping.GetQueryType() == queryType) {
+ if (mapping.HasActivation()) {
+ const auto& activation = mapping.GetActivation();
+ const auto& includeScopes = activation.GetIncludeScopes();
+ const auto& excludeScopes = activation.GetExcludeScopes();
+ auto isActivatedCase1 =
+ activation.GetPercentage() == 0 &&
+ Find(includeScopes, scope) == includeScopes.end();
+ auto isActivatedCase2 =
+ activation.GetPercentage() == 100 &&
+ Find(excludeScopes, scope) != excludeScopes.end();
+ if (isActivatedCase1 || isActivatedCase2) {
+ return mapping.GetCompute();
}
- });
- if (isMatched) {
- return rule.GetCompute();
+ }
+ return mapping.GetCompute();
}
}
- return NFq::NConfig::EComputeType::IN_PLACE;
+
+ return DefaultCompute;
}
NFq::NConfig::TYdbStorageConfig GetConnection(const TString& scope) const {
@@ -52,11 +67,20 @@ public:
if (it != databaseMapping.GetScopeToComputeDatabase().end()) {
return it->second.GetConnection();
}
- return databaseMapping.GetCommon().empty() ? NFq::NConfig::TYdbStorageConfig{} : databaseMapping.GetCommon(MultiHash(scope) % databaseMapping.GetCommon().size()).GetConnection();
+ return databaseMapping.GetCommon().empty()
+ ? NFq::NConfig::TYdbStorageConfig{}
+ : databaseMapping
+ .GetCommon(MultiHash(scope) % databaseMapping.GetCommon().size())
+ .GetConnection();
}
- bool YdbComputeControlPlaneEnabled() const {
- return ComputeConfig.GetYdb().GetEnable() && ComputeConfig.GetYdb().GetControlPlane().GetEnable();
+ bool YdbComputeControlPlaneEnabled(const TString& scope) const {
+ return ComputeConfig.GetYdb().GetEnable() &&
+ ComputeConfig.GetYdb().GetControlPlane().GetEnable() &&
+ (GetComputeType(FederatedQuery::QueryContent::ANALYTICS, scope) ==
+ NFq::NConfig::EComputeType::YDB ||
+ GetComputeType(FederatedQuery::QueryContent::STREAMING, scope) ==
+ NFq::NConfig::EComputeType::YDB);
}
const NFq::NConfig::TComputeConfig& GetProto() const {
@@ -65,6 +89,7 @@ public:
private:
NFq::NConfig::TComputeConfig ComputeConfig;
+ NFq::NConfig::EComputeType DefaultCompute;
};
} /* NFq */
diff --git a/ydb/core/fq/libs/config/protos/CMakeLists.darwin-x86_64.txt b/ydb/core/fq/libs/config/protos/CMakeLists.darwin-x86_64.txt
index 98a204fd31c..af844d5199b 100644
--- a/ydb/core/fq/libs/config/protos/CMakeLists.darwin-x86_64.txt
+++ b/ydb/core/fq/libs/config/protos/CMakeLists.darwin-x86_64.txt
@@ -282,6 +282,18 @@ get_built_tool_path(
contrib/tools/protoc/plugins/cpp_styleguide
cpp_styleguide
)
+get_built_tool_path(
+ TOOL_protoc_bin
+ TOOL_protoc_dependency
+ contrib/tools/protoc/bin
+ protoc
+)
+get_built_tool_path(
+ TOOL_cpp_styleguide_bin
+ TOOL_cpp_styleguide_dependency
+ contrib/tools/protoc/plugins/cpp_styleguide
+ cpp_styleguide
+)
add_library(libs-config-protos)
target_link_libraries(libs-config-protos PUBLIC
@@ -294,6 +306,7 @@ target_link_libraries(libs-config-protos PUBLIC
contrib-libs-protobuf
)
target_proto_messages(libs-config-protos PRIVATE
+ ${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/activation.proto
${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/audit.proto
${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/checkpoint_coordinator.proto
${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/common.proto
diff --git a/ydb/core/fq/libs/config/protos/CMakeLists.linux-aarch64.txt b/ydb/core/fq/libs/config/protos/CMakeLists.linux-aarch64.txt
index 1ec6d5c4fa6..494977cd87e 100644
--- a/ydb/core/fq/libs/config/protos/CMakeLists.linux-aarch64.txt
+++ b/ydb/core/fq/libs/config/protos/CMakeLists.linux-aarch64.txt
@@ -282,6 +282,18 @@ get_built_tool_path(
contrib/tools/protoc/plugins/cpp_styleguide
cpp_styleguide
)
+get_built_tool_path(
+ TOOL_protoc_bin
+ TOOL_protoc_dependency
+ contrib/tools/protoc/bin
+ protoc
+)
+get_built_tool_path(
+ TOOL_cpp_styleguide_bin
+ TOOL_cpp_styleguide_dependency
+ contrib/tools/protoc/plugins/cpp_styleguide
+ cpp_styleguide
+)
add_library(libs-config-protos)
target_link_libraries(libs-config-protos PUBLIC
@@ -295,6 +307,7 @@ target_link_libraries(libs-config-protos PUBLIC
contrib-libs-protobuf
)
target_proto_messages(libs-config-protos PRIVATE
+ ${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/activation.proto
${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/audit.proto
${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/checkpoint_coordinator.proto
${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/common.proto
diff --git a/ydb/core/fq/libs/config/protos/CMakeLists.linux-x86_64.txt b/ydb/core/fq/libs/config/protos/CMakeLists.linux-x86_64.txt
index 1ec6d5c4fa6..494977cd87e 100644
--- a/ydb/core/fq/libs/config/protos/CMakeLists.linux-x86_64.txt
+++ b/ydb/core/fq/libs/config/protos/CMakeLists.linux-x86_64.txt
@@ -282,6 +282,18 @@ get_built_tool_path(
contrib/tools/protoc/plugins/cpp_styleguide
cpp_styleguide
)
+get_built_tool_path(
+ TOOL_protoc_bin
+ TOOL_protoc_dependency
+ contrib/tools/protoc/bin
+ protoc
+)
+get_built_tool_path(
+ TOOL_cpp_styleguide_bin
+ TOOL_cpp_styleguide_dependency
+ contrib/tools/protoc/plugins/cpp_styleguide
+ cpp_styleguide
+)
add_library(libs-config-protos)
target_link_libraries(libs-config-protos PUBLIC
@@ -295,6 +307,7 @@ target_link_libraries(libs-config-protos PUBLIC
contrib-libs-protobuf
)
target_proto_messages(libs-config-protos PRIVATE
+ ${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/activation.proto
${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/audit.proto
${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/checkpoint_coordinator.proto
${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/common.proto
diff --git a/ydb/core/fq/libs/config/protos/CMakeLists.windows-x86_64.txt b/ydb/core/fq/libs/config/protos/CMakeLists.windows-x86_64.txt
index 98a204fd31c..af844d5199b 100644
--- a/ydb/core/fq/libs/config/protos/CMakeLists.windows-x86_64.txt
+++ b/ydb/core/fq/libs/config/protos/CMakeLists.windows-x86_64.txt
@@ -282,6 +282,18 @@ get_built_tool_path(
contrib/tools/protoc/plugins/cpp_styleguide
cpp_styleguide
)
+get_built_tool_path(
+ TOOL_protoc_bin
+ TOOL_protoc_dependency
+ contrib/tools/protoc/bin
+ protoc
+)
+get_built_tool_path(
+ TOOL_cpp_styleguide_bin
+ TOOL_cpp_styleguide_dependency
+ contrib/tools/protoc/plugins/cpp_styleguide
+ cpp_styleguide
+)
add_library(libs-config-protos)
target_link_libraries(libs-config-protos PUBLIC
@@ -294,6 +306,7 @@ target_link_libraries(libs-config-protos PUBLIC
contrib-libs-protobuf
)
target_proto_messages(libs-config-protos PRIVATE
+ ${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/activation.proto
${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/audit.proto
${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/checkpoint_coordinator.proto
${CMAKE_SOURCE_DIR}/ydb/core/fq/libs/config/protos/common.proto
diff --git a/ydb/core/fq/libs/config/protos/activation.proto b/ydb/core/fq/libs/config/protos/activation.proto
new file mode 100644
index 00000000000..4f64805a88a
--- /dev/null
+++ b/ydb/core/fq/libs/config/protos/activation.proto
@@ -0,0 +1,13 @@
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NFq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
+////////////////////////////////////////////////////////////
+
+message TActivationPercentage {
+ uint32 Percentage = 1;
+ repeated string IncludeScopes = 2;
+ repeated string ExcludeScopes = 3;
+}
diff --git a/ydb/core/fq/libs/config/protos/compute.proto b/ydb/core/fq/libs/config/protos/compute.proto
index e200c65998b..2166d7d1b05 100644
--- a/ydb/core/fq/libs/config/protos/compute.proto
+++ b/ydb/core/fq/libs/config/protos/compute.proto
@@ -4,6 +4,7 @@ option cc_enable_arenas = true;
package NFq.NConfig;
option java_package = "ru.yandex.kikimr.proto";
+import "ydb/core/fq/libs/config/protos/activation.proto";
import "ydb/core/fq/libs/config/protos/storage.proto";
import "ydb/public/api/protos/draft/fq.proto";
@@ -59,24 +60,15 @@ enum EComputeType {
YDB = 2;
}
-message TComputeMappingRuleKey {
- oneof key {
- FederatedQuery.QueryContent.QueryType QueryType = 1;
- // FederatedQuery.QueryContent.EngineType EngineType = 2;
- }
-}
-
-message TComputeMappingRule {
- repeated TComputeMappingRuleKey Key = 1;
- EComputeType Compute = 2;
-}
-
message TComputeMapping {
- repeated TComputeMappingRule Rule = 1;
+ FederatedQuery.QueryContent.QueryType QueryType = 1;
+ EComputeType Compute = 2;
+ TActivationPercentage Activation = 3;
}
message TComputeConfig {
TInPlaceCompute InPlace = 1;
TYdbCompute Ydb = 2;
- TComputeMapping ComputeMapping = 3;
+ EComputeType DefaultCompute = 3;
+ repeated TComputeMapping ComputeMapping = 4;
}
diff --git a/ydb/core/fq/libs/config/protos/ya.make b/ydb/core/fq/libs/config/protos/ya.make
index a71cc23aa53..2bf50a9a41f 100644
--- a/ydb/core/fq/libs/config/protos/ya.make
+++ b/ydb/core/fq/libs/config/protos/ya.make
@@ -1,6 +1,7 @@
PROTO_LIBRARY()
SRCS(
+ activation.proto
audit.proto
checkpoint_coordinator.proto
common.proto
diff --git a/ydb/core/fq/libs/control_plane_proxy/control_plane_proxy.cpp b/ydb/core/fq/libs/control_plane_proxy/control_plane_proxy.cpp
index e135721d1da..c2db1d6771e 100644
--- a/ydb/core/fq/libs/control_plane_proxy/control_plane_proxy.cpp
+++ b/ydb/core/fq/libs/control_plane_proxy/control_plane_proxy.cpp
@@ -413,7 +413,7 @@ public:
void Bootstrap() {
CPP_LOG_T("Create database bootstrap. CloudId: " << CloudId << " Scope: " << Scope << " Actor id: " << SelfId());
- if (!ComputeConfig.YdbComputeControlPlaneEnabled()) {
+ if (!ComputeConfig.YdbComputeControlPlaneEnabled(Scope)) {
Event->Get()->ComputeDatabase = FederatedQuery::Internal::ComputeDatabaseInternal{};
TActivationContext::Send(Event->Forward(ControlPlaneProxyActorId()));
PassAway();
@@ -1310,7 +1310,7 @@ private:
return;
}
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled() && !ev->Get()->RequestValidationPassed) {
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope) && !ev->Get()->RequestValidationPassed) {
auto requestValidationIssues =
::NFq::ValidateConnection(ev,
Config.StorageConfig.Proto.GetMaxRequestSize(),
@@ -1340,7 +1340,7 @@ private:
TPermissions::TPermission::MANAGE_PUBLIC
};
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled() && !ydbOperationWasPerformed) {
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope) && !ydbOperationWasPerformed) {
if (!ev->Get()->YDBClient) {
ev->Get()->YDBClient = CreateNewTableClient(ev,
Config.ComputeConfig,
@@ -1564,7 +1564,7 @@ private:
return;
}
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled() &&
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope) &&
!ev->Get()->RequestValidationPassed) {
auto requestValidationIssues =
::NFq::ValidateConnection(ev,
@@ -1598,19 +1598,19 @@ private:
| TPermissions::TPermission::VIEW_PRIVATE
};
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled() && !ev->Get()->OldConnectionContent) {
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope) && !ev->Get()->OldConnectionContent) {
auto permissions = ExtractPermissions(ev, availablePermissions);
Register(MakeDiscoverYDBConnectionName(
ControlPlaneProxyActorId(), ev, Counters, Config.RequestTimeout, permissions));
return;
}
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled() && !ev->Get()->OldBindingNamesDiscoveryFinished) {
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope) && !ev->Get()->OldBindingNamesDiscoveryFinished) {
auto permissions = ExtractPermissions(ev, availablePermissions);
Register(MakeListBindingIds(
ControlPlaneProxyActorId(), ev, Counters, Config.RequestTimeout, permissions));
return;
}
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled() && ev->Get()->OldBindingIds.size() != ev->Get()->OldBindingContents.size()) {
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope) && ev->Get()->OldBindingIds.size() != ev->Get()->OldBindingContents.size()) {
auto permissions = ExtractPermissions(ev, availablePermissions);
Register(MakeDescribeListedBinding(
ControlPlaneProxyActorId(), ev, Counters, Config.RequestTimeout, permissions));
@@ -1618,6 +1618,8 @@ private:
}
const bool controlPlaneYDBOperationWasPerformed = ev->Get()->ControlPlaneYDBOperationWasPerformed;
if (!controlPlaneYDBOperationWasPerformed) {
+ auto shouldReplyWithResponse =
+ !Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope);
Register(new TRequestActor<FederatedQuery::ModifyConnectionRequest,
TEvControlPlaneStorage::TEvModifyConnectionRequest,
TEvControlPlaneStorage::TEvModifyConnectionResponse,
@@ -1629,11 +1631,11 @@ private:
requestCounters,
probe,
availablePermissions,
- !Config.ComputeConfig.YdbComputeControlPlaneEnabled()));
+ shouldReplyWithResponse));
return;
}
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled()) {
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope)) {
if (!ev->Get()->YDBClient) {
ev->Get()->YDBClient = CreateNewTableClient(ev,
Config.ComputeConfig,
@@ -1721,7 +1723,7 @@ private:
| TPermissions::TPermission::VIEW_PRIVATE
};
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled() && !ev->Get()->ConnectionContent) {
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope) && !ev->Get()->ConnectionContent) {
auto permissions = ExtractPermissions(ev, availablePermissions);
Register(MakeDiscoverYDBConnectionName(
ControlPlaneProxyActorId(), ev, Counters, Config.RequestTimeout, permissions));
@@ -1730,6 +1732,8 @@ private:
const bool controlPlaneYDBOperationWasPerformed = ev->Get()->ControlPlaneYDBOperationWasPerformed;
if (!controlPlaneYDBOperationWasPerformed) {
+ auto shouldReplyWithResponse =
+ !Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope);
Register(new TRequestActor<FederatedQuery::DeleteConnectionRequest,
TEvControlPlaneStorage::TEvDeleteConnectionRequest,
TEvControlPlaneStorage::TEvDeleteConnectionResponse,
@@ -1741,11 +1745,11 @@ private:
requestCounters,
probe,
availablePermissions,
- !Config.ComputeConfig.YdbComputeControlPlaneEnabled()));
+ shouldReplyWithResponse));
return;
}
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled()) {
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope)) {
if (!ev->Get()->YDBClient) {
ev->Get()->YDBClient = CreateNewTableClient(ev,
Config.ComputeConfig,
@@ -1884,7 +1888,7 @@ private:
return;
}
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled() &&
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope) &&
!ev->Get()->RequestValidationPassed) {
auto requestValidationIssues =
::NFq::ValidateBinding(ev,
@@ -1916,7 +1920,7 @@ private:
| TPermissions::TPermission::MANAGE_PRIVATE
};
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled() && !ydbOperationWasPerformed) {
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope) && !ydbOperationWasPerformed) {
if (!ev->Get()->ConnectionName) {
auto permissions = ExtractPermissions(ev, availablePermissions);
Register(MakeDiscoverYDBConnectionName(
@@ -2137,7 +2141,7 @@ private:
return;
}
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled() &&
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope) &&
!ev->Get()->RequestValidationPassed) {
auto requestValidationIssues =
::NFq::ValidateBinding(ev,
@@ -2170,7 +2174,7 @@ private:
| TPermissions::TPermission::VIEW_PRIVATE
};
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled()) {
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope)) {
if (!ev->Get()->OldBindingContent) {
auto permissions = ExtractPermissions(ev, availablePermissions);
Register(MakeDiscoverYDBBindingName(
@@ -2187,6 +2191,8 @@ private:
const bool controlPlaneYDBOperationWasPerformed = ev->Get()->ControlPlaneYDBOperationWasPerformed;
if (!controlPlaneYDBOperationWasPerformed) {
+ auto shouldReplyWithResponse =
+ !Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope);
Register(new TRequestActor<FederatedQuery::ModifyBindingRequest,
TEvControlPlaneStorage::TEvModifyBindingRequest,
TEvControlPlaneStorage::TEvModifyBindingResponse,
@@ -2198,11 +2204,11 @@ private:
requestCounters,
probe,
availablePermissions,
- !Config.ComputeConfig.YdbComputeControlPlaneEnabled()));
+ shouldReplyWithResponse));
return;
}
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled()) {
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope)) {
if (!ev->Get()->YDBClient) {
ev->Get()->YDBClient = CreateNewTableClient(ev,
Config.ComputeConfig,
@@ -2287,7 +2293,7 @@ private:
| TPermissions::TPermission::VIEW_PRIVATE
};
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled() &&
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope) &&
!ev->Get()->OldBindingName) {
auto permissions = ExtractPermissions(ev, availablePermissions);
Register(MakeDiscoverYDBBindingName(
@@ -2297,6 +2303,8 @@ private:
const bool controlPlaneYDBOperationWasPerformed = ev->Get()->ControlPlaneYDBOperationWasPerformed;
if (!controlPlaneYDBOperationWasPerformed) {
+ auto shouldReplyWithResponse =
+ !Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope);
Register(new TRequestActor<FederatedQuery::DeleteBindingRequest,
TEvControlPlaneStorage::TEvDeleteBindingRequest,
TEvControlPlaneStorage::TEvDeleteBindingResponse,
@@ -2308,11 +2316,11 @@ private:
requestCounters,
probe,
availablePermissions,
- !Config.ComputeConfig.YdbComputeControlPlaneEnabled()));
+ shouldReplyWithResponse));
return;
}
- if (Config.ComputeConfig.YdbComputeControlPlaneEnabled()) {
+ if (Config.ComputeConfig.YdbComputeControlPlaneEnabled(ev->Get()->Scope)) {
if (!ev->Get()->YDBClient) {
ev->Get()->YDBClient = CreateNewTableClient(ev,
Config.ComputeConfig,