aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhcpp <hcpp@yandex-team.ru>2022-02-10 16:50:01 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:50:01 +0300
commitcd53b77f6fe67a131e376d74d4e6ffa25e35d412 (patch)
treee61539274ba7a458eab77a08b2765a07f94398e7
parent8cb7383a794381ba734eebe2a6737c40e0223f2f (diff)
downloadydb-cd53b77f6fe67a131e376d74d4e6ffa25e35d412.tar.gz
Restoring authorship annotation for <hcpp@yandex-team.ru>. Commit 1 of 2.
-rw-r--r--build/rules/kikimr.policy4
-rw-r--r--build/ya.conf.json16
-rw-r--r--library/cpp/actors/http/http_proxy_incoming.cpp2
-rw-r--r--library/cpp/grpc/server/grpc_request.h14
-rw-r--r--library/cpp/ya.make2
-rw-r--r--ydb/core/base/ticket_parser.h40
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp4
-rw-r--r--ydb/core/driver_lib/run/config.h2
-rw-r--r--ydb/core/driver_lib/run/config_parser.cpp8
-rw-r--r--ydb/core/driver_lib/run/factories.h2
-rw-r--r--ydb/core/driver_lib/run/kikimr_services_initializers.cpp76
-rw-r--r--ydb/core/driver_lib/run/kikimr_services_initializers.h12
-rw-r--r--ydb/core/driver_lib/run/run.cpp18
-rw-r--r--ydb/core/grpc_services/base/base.h80
-rw-r--r--ydb/core/grpc_services/grpc_helper.h4
-rw-r--r--ydb/core/grpc_services/grpc_request_check_actor.h8
-rw-r--r--ydb/core/grpc_services/local_rpc/local_rpc.h10
-rw-r--r--ydb/core/grpc_services/rpc_yq.cpp250
-rw-r--r--ydb/core/grpc_services/ya.make4
-rw-r--r--ydb/core/kesus/tablet/quoter_resource_tree.cpp2
-rw-r--r--ydb/core/kesus/tablet/tablet_ut.cpp4
-rw-r--r--ydb/core/mind/labels_maintainer.cpp4
-rw-r--r--ydb/core/protos/config.proto4
-rw-r--r--ydb/core/protos/services.proto18
-rw-r--r--ydb/core/security/secure_request.h10
-rw-r--r--ydb/core/security/ticket_parser.cpp22
-rw-r--r--ydb/core/testlib/test_client.cpp208
-rw-r--r--ydb/core/testlib/test_client.h4
-rw-r--r--ydb/core/ymq/base/ut/secure_protobuf_printer_ut.cpp4
-rw-r--r--ydb/core/yq/libs/actors/logging/log.h134
-rw-r--r--ydb/core/yq/libs/actors/nodes_health_check.cpp2
-rw-r--r--ydb/core/yq/libs/actors/nodes_manager.cpp12
-rw-r--r--ydb/core/yq/libs/actors/nodes_manager.h2
-rw-r--r--ydb/core/yq/libs/actors/pending_fetcher.cpp74
-rw-r--r--ydb/core/yq/libs/actors/pinger.cpp54
-rw-r--r--ydb/core/yq/libs/actors/proxy.h16
-rw-r--r--ydb/core/yq/libs/actors/proxy_private.cpp20
-rw-r--r--ydb/core/yq/libs/actors/proxy_private.h4
-rw-r--r--ydb/core/yq/libs/actors/result_writer.cpp38
-rw-r--r--ydb/core/yq/libs/actors/run_actor.cpp122
-rw-r--r--ydb/core/yq/libs/actors/run_actor_params.cpp30
-rw-r--r--ydb/core/yq/libs/actors/run_actor_params.h34
-rw-r--r--ydb/core/yq/libs/actors/task_get.cpp40
-rw-r--r--ydb/core/yq/libs/actors/task_ping.cpp10
-rw-r--r--ydb/core/yq/libs/actors/task_result_write.cpp2
-rw-r--r--ydb/core/yq/libs/actors/ya.make12
-rw-r--r--ydb/core/yq/libs/audit/mock/yq_mock_audit_service.cpp2
-rw-r--r--ydb/core/yq/libs/audit/mock/yq_mock_audit_service.h2
-rw-r--r--ydb/core/yq/libs/checkpoint_storage/storage_proxy.cpp78
-rw-r--r--ydb/core/yq/libs/checkpoint_storage/storage_proxy.h2
-rw-r--r--ydb/core/yq/libs/checkpoint_storage/storage_service.cpp2
-rw-r--r--ydb/core/yq/libs/checkpoint_storage/storage_service.h2
-rw-r--r--ydb/core/yq/libs/checkpointing/checkpoint_coordinator.cpp2
-rw-r--r--ydb/core/yq/libs/checkpointing/checkpoint_coordinator.h2
-rw-r--r--ydb/core/yq/libs/checkpointing/ut/checkpoint_coordinator_ut.cpp2
-rw-r--r--ydb/core/yq/libs/checkpointing/ya.make2
-rw-r--r--ydb/core/yq/libs/common/database_token_builder.h2
-rw-r--r--ydb/core/yq/libs/common/entity_id.cpp86
-rw-r--r--ydb/core/yq/libs/common/entity_id.h22
-rw-r--r--ydb/core/yq/libs/common/entity_id_ut.cpp30
-rw-r--r--ydb/core/yq/libs/config/protos/audit.proto34
-rw-r--r--ydb/core/yq/libs/config/protos/checkpoint_coordinator.proto52
-rw-r--r--ydb/core/yq/libs/config/protos/common.proto46
-rw-r--r--ydb/core/yq/libs/config/protos/control_plane_proxy.proto26
-rw-r--r--ydb/core/yq/libs/config/protos/control_plane_storage.proto68
-rw-r--r--ydb/core/yq/libs/config/protos/db_pool.proto28
-rw-r--r--ydb/core/yq/libs/config/protos/gateways.proto34
-rw-r--r--ydb/core/yq/libs/config/protos/issue_id.proto34
-rw-r--r--ydb/core/yq/libs/config/protos/nodes_manager.proto22
-rw-r--r--ydb/core/yq/libs/config/protos/pending_fetcher.proto22
-rw-r--r--ydb/core/yq/libs/config/protos/pinger.proto22
-rw-r--r--ydb/core/yq/libs/config/protos/private_api.proto28
-rw-r--r--ydb/core/yq/libs/config/protos/private_proxy.proto22
-rw-r--r--ydb/core/yq/libs/config/protos/resource_manager.proto28
-rw-r--r--ydb/core/yq/libs/config/protos/storage.proto50
-rw-r--r--ydb/core/yq/libs/config/protos/test_connection.proto22
-rw-r--r--ydb/core/yq/libs/config/protos/token_accessor.proto28
-rw-r--r--ydb/core/yq/libs/config/protos/ya.make60
-rw-r--r--ydb/core/yq/libs/config/protos/yq_config.proto58
-rw-r--r--ydb/core/yq/libs/config/ya.make28
-rw-r--r--ydb/core/yq/libs/config/yq_issue.cpp66
-rw-r--r--ydb/core/yq/libs/config/yq_issue.h30
-rw-r--r--ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.cpp2226
-rw-r--r--ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.h48
-rw-r--r--ydb/core/yq/libs/control_plane_proxy/events/events.cpp2
-rw-r--r--ydb/core/yq/libs/control_plane_proxy/events/events.h1542
-rw-r--r--ydb/core/yq/libs/control_plane_proxy/events/ya.make26
-rw-r--r--ydb/core/yq/libs/control_plane_proxy/probes.cpp6
-rw-r--r--ydb/core/yq/libs/control_plane_proxy/probes.h170
-rw-r--r--ydb/core/yq/libs/control_plane_proxy/ut/control_plane_proxy_ut.cpp3460
-rw-r--r--ydb/core/yq/libs/control_plane_proxy/ut/ya.make26
-rw-r--r--ydb/core/yq/libs/control_plane_proxy/utils.h88
-rw-r--r--ydb/core/yq/libs/control_plane_proxy/ya.make40
-rw-r--r--ydb/core/yq/libs/control_plane_storage/control_plane_storage.h80
-rw-r--r--ydb/core/yq/libs/control_plane_storage/events/events.cpp2
-rw-r--r--ydb/core/yq/libs/control_plane_storage/events/events.h1848
-rw-r--r--ydb/core/yq/libs/control_plane_storage/events/ya.make26
-rw-r--r--ydb/core/yq/libs/control_plane_storage/exceptions.cpp74
-rw-r--r--ydb/core/yq/libs/control_plane_storage/exceptions.h50
-rw-r--r--ydb/core/yq/libs/control_plane_storage/extractors.h88
-rw-r--r--ydb/core/yq/libs/control_plane_storage/in_memory_control_plane_storage.cpp564
-rw-r--r--ydb/core/yq/libs/control_plane_storage/internal/nodes_health_check.cpp54
-rw-r--r--ydb/core/yq/libs/control_plane_storage/internal/response_tasks.h4
-rw-r--r--ydb/core/yq/libs/control_plane_storage/internal/task_get.cpp122
-rw-r--r--ydb/core/yq/libs/control_plane_storage/internal/task_ping.cpp166
-rw-r--r--ydb/core/yq/libs/control_plane_storage/internal/task_result_write.cpp24
-rw-r--r--ydb/core/yq/libs/control_plane_storage/internal/utils.h10
-rw-r--r--ydb/core/yq/libs/control_plane_storage/message_builders.h2064
-rw-r--r--ydb/core/yq/libs/control_plane_storage/probes.cpp6
-rw-r--r--ydb/core/yq/libs/control_plane_storage/probes.h184
-rw-r--r--ydb/core/yq/libs/control_plane_storage/proto/ya.make26
-rw-r--r--ydb/core/yq/libs/control_plane_storage/proto/yq_internal.proto64
-rw-r--r--ydb/core/yq/libs/control_plane_storage/schema.h110
-rw-r--r--ydb/core/yq/libs/control_plane_storage/util.cpp108
-rw-r--r--ydb/core/yq/libs/control_plane_storage/util.h44
-rw-r--r--ydb/core/yq/libs/control_plane_storage/validators.cpp674
-rw-r--r--ydb/core/yq/libs/control_plane_storage/validators.h306
-rw-r--r--ydb/core/yq/libs/control_plane_storage/ya.make54
-rw-r--r--ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage.cpp1036
-rw-r--r--ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_bindings.cpp1264
-rw-r--r--ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_connections.cpp1234
-rw-r--r--ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_impl.h1378
-rw-r--r--ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_queries.cpp2768
-rw-r--r--ydb/core/yq/libs/db_schema/db_schema.cpp50
-rw-r--r--ydb/core/yq/libs/db_schema/db_schema.h72
-rw-r--r--ydb/core/yq/libs/events/event_subspace.h6
-rw-r--r--ydb/core/yq/libs/events/events.h40
-rw-r--r--ydb/core/yq/libs/init/init.cpp204
-rw-r--r--ydb/core/yq/libs/init/init.h10
-rw-r--r--ydb/core/yq/libs/init/ya.make2
-rw-r--r--ydb/core/yq/libs/private_client/private_client.cpp8
-rw-r--r--ydb/core/yq/libs/private_client/private_client.h2
-rw-r--r--ydb/core/yq/libs/shared_resources/db_pool.cpp200
-rw-r--r--ydb/core/yq/libs/shared_resources/db_pool.h14
-rw-r--r--ydb/core/yq/libs/shared_resources/shared_resources.cpp22
-rw-r--r--ydb/core/yq/libs/shared_resources/shared_resources.h2
-rw-r--r--ydb/core/yq/libs/test_connection/events/events.cpp2
-rw-r--r--ydb/core/yq/libs/test_connection/events/events.h116
-rw-r--r--ydb/core/yq/libs/test_connection/events/ya.make26
-rw-r--r--ydb/core/yq/libs/test_connection/probes.cpp6
-rw-r--r--ydb/core/yq/libs/test_connection/probes.h26
-rw-r--r--ydb/core/yq/libs/test_connection/test_connection.cpp140
-rw-r--r--ydb/core/yq/libs/test_connection/test_connection.h52
-rw-r--r--ydb/core/yq/libs/test_connection/ut/test_connection_ut.cpp14
-rw-r--r--ydb/core/yq/libs/test_connection/ut/ya.make30
-rw-r--r--ydb/core/yq/libs/test_connection/ya.make50
-rw-r--r--ydb/core/yq/libs/ya.make8
-rw-r--r--ydb/core/yq/libs/ydb/ydb.cpp72
-rw-r--r--ydb/core/yq/libs/ydb/ydb.h2
-rw-r--r--ydb/library/folder_service/folder_service.h10
-rw-r--r--ydb/library/protobuf_printer/hide_field_printer.cpp22
-rw-r--r--ydb/library/protobuf_printer/protobuf_printer_ut.cpp66
-rw-r--r--ydb/library/protobuf_printer/security_printer.h72
-rw-r--r--ydb/library/protobuf_printer/ut/test_proto.proto62
-rw-r--r--ydb/library/security/ut/util_ut.cpp20
-rw-r--r--ydb/library/security/ut/ya.make22
-rw-r--r--ydb/library/security/util.cpp58
-rw-r--r--ydb/library/security/util.h16
-rw-r--r--ydb/library/security/ya.make30
-rw-r--r--ydb/library/yql/providers/ydb/provider/yql_ydb_load_meta.cpp4
-rw-r--r--ydb/public/api/grpc/ya.make2
-rw-r--r--ydb/public/api/grpc/yq_v1.proto142
-rw-r--r--ydb/public/api/protos/annotations/sensitive.proto24
-rw-r--r--ydb/public/api/protos/annotations/ya.make2
-rw-r--r--ydb/public/api/protos/draft/datastreams.proto2
-rw-r--r--ydb/public/api/protos/ya.make2
-rw-r--r--ydb/public/api/protos/yq.proto1218
-rw-r--r--ydb/public/lib/ydb_cli/common/command.h2
-rw-r--r--ydb/public/lib/yq/helpers.h4
-rw-r--r--ydb/public/lib/yq/ya.make24
-rw-r--r--ydb/public/lib/yq/yq.cpp1302
-rw-r--r--ydb/public/lib/yq/yq.h378
-rw-r--r--ydb/public/sdk/cpp/client/impl/ydb_internal/grpc_connections/grpc_connections.h4
-rw-r--r--ydb/public/sdk/cpp/client/impl/ydb_internal/rpc_request_settings/settings.h2
-rw-r--r--ydb/public/sdk/cpp/client/resources/ydb_resources.cpp8
-rw-r--r--ydb/public/sdk/cpp/client/resources/ydb_resources.h8
-rw-r--r--ydb/public/sdk/cpp/client/ydb_types/request_settings.h12
-rw-r--r--ydb/services/ydb/ydb_common_ut.h4
-rw-r--r--ydb/services/yq/grpc_service.cpp82
-rw-r--r--ydb/services/yq/grpc_service.h66
-rw-r--r--ydb/services/yq/private_grpc.cpp2
-rw-r--r--ydb/services/yq/ut_integration/ut_utils.cpp2
-rw-r--r--ydb/services/yq/ut_integration/ya.make2
-rw-r--r--ydb/services/yq/ut_integration/yq_ut.cpp276
-rw-r--r--ydb/services/yq/ya.make32
185 files changed, 14856 insertions, 14856 deletions
diff --git a/build/rules/kikimr.policy b/build/rules/kikimr.policy
index 5bb6426e30..df9702f638 100644
--- a/build/rules/kikimr.policy
+++ b/build/rules/kikimr.policy
@@ -14,7 +14,7 @@ ALLOW quality/deprecated/mapreducelib -> kikimr/library/sched/dev/supp/pages/lib
ALLOW solomon/ -> kikimr/core/protos
ALLOW solomon/ -> kikimr/public/lib/deprecated/kicli
ALLOW solomon/ -> kikimr/library/mkql_proto/protos
-ALLOW solomon/ -> kikimr/yq/libs/config/protos
+ALLOW solomon/ -> kikimr/yq/libs/config/protos
ALLOW solomon/ -> kikimr/library/folder_service/proto
ALLOW solomon/ -> kikimr/library/login/protos
# temporary (FIXME: gvit)
@@ -138,7 +138,7 @@ ALLOW logbroker/tools -> kikimr/tools/monitoring
ALLOW solomon/ -> kikimr/core/protos
ALLOW solomon/ -> kikimr/public/lib/deprecated/kicli
ALLOW solomon/ -> kikimr/library/mkql_proto/protos
-ALLOW solomon/ -> kikimr/yq/libs/config/protos
+ALLOW solomon/ -> kikimr/yq/libs/config/protos
ALLOW solomon/ -> kikimr/library/login/protos
ALLOW ydb/library/yql/providers/dq/actors -> kikimr/core/base
diff --git a/build/ya.conf.json b/build/ya.conf.json
index 5f7cc875d6..8c98fb30e5 100644
--- a/build/ya.conf.json
+++ b/build/ya.conf.json
@@ -3553,12 +3553,12 @@
"os": "LINUX"
},
"default": true
- },
- {
- "host": {
- "os": "DARWIN"
- },
- "default": true
+ },
+ {
+ "host": {
+ "os": "DARWIN"
+ },
+ "default": true
}
]
},
@@ -6817,8 +6817,8 @@
"rtmr-deploy": {
"formula": {
"sandbox_id": [
- 1210829227,
- 1210811623
+ 1210829227,
+ 1210811623
],
"match": "rtmr-deploy"
},
diff --git a/library/cpp/actors/http/http_proxy_incoming.cpp b/library/cpp/actors/http/http_proxy_incoming.cpp
index 80fe2af53d..a6bb8e663b 100644
--- a/library/cpp/actors/http/http_proxy_incoming.cpp
+++ b/library/cpp/actors/http/http_proxy_incoming.cpp
@@ -20,7 +20,7 @@ public:
TDeque<THttpIncomingRequestPtr> RecycledRequests;
THPTimer InactivityTimer;
- static constexpr TDuration InactivityTimeout = TDuration::Minutes(2);
+ static constexpr TDuration InactivityTimeout = TDuration::Minutes(2);
TEvPollerReady* InactivityEvent = nullptr;
TPollerToken::TPtr PollerToken;
diff --git a/library/cpp/grpc/server/grpc_request.h b/library/cpp/grpc/server/grpc_request.h
index 5bd8d3902b..acde4cd846 100644
--- a/library/cpp/grpc/server/grpc_request.h
+++ b/library/cpp/grpc/server/grpc_request.h
@@ -37,13 +37,13 @@ public:
IStreamAdaptor::TPtr CreateStreamAdaptor();
///////////////////////////////////////////////////////////////////////////////
-template<typename TIn, typename TOut, typename TService, typename TInProtoPrinter, typename TOutProtoPrinter>
+template<typename TIn, typename TOut, typename TService, typename TInProtoPrinter, typename TOutProtoPrinter>
class TGRpcRequestImpl
: public TBaseAsyncContext<TService>
, public IQueueEvent
, public IRequestContextBase
{
- using TThis = TGRpcRequestImpl<TIn, TOut, TService, TInProtoPrinter, TOutProtoPrinter>;
+ using TThis = TGRpcRequestImpl<TIn, TOut, TService, TInProtoPrinter, TOutProtoPrinter>;
public:
using TOnRequest = std::function<void (IRequestContextBase* ctx)>;
@@ -244,7 +244,7 @@ private:
void WriteDataOk(NProtoBuf::Message* resp) {
auto makeResponseString = [&] {
TString x;
- TOutProtoPrinter printer;
+ TOutProtoPrinter printer;
printer.SetSingleLineMode(true);
printer.PrintToString(*resp, &x);
return x;
@@ -334,7 +334,7 @@ private:
auto makeRequestString = [&] {
TString resp;
if (ok) {
- TInProtoPrinter printer;
+ TInProtoPrinter printer;
printer.SetSingleLineMode(true);
printer.PrintToString(*Request_, &resp);
} else {
@@ -510,9 +510,9 @@ private:
IStreamAdaptor::TPtr StreamAdaptor_;
};
-template<typename TIn, typename TOut, typename TService, typename TInProtoPrinter=google::protobuf::TextFormat::Printer, typename TOutProtoPrinter=google::protobuf::TextFormat::Printer>
-class TGRpcRequest: public TGRpcRequestImpl<TIn, TOut, TService, TInProtoPrinter, TOutProtoPrinter> {
- using TBase = TGRpcRequestImpl<TIn, TOut, TService, TInProtoPrinter, TOutProtoPrinter>;
+template<typename TIn, typename TOut, typename TService, typename TInProtoPrinter=google::protobuf::TextFormat::Printer, typename TOutProtoPrinter=google::protobuf::TextFormat::Printer>
+class TGRpcRequest: public TGRpcRequestImpl<TIn, TOut, TService, TInProtoPrinter, TOutProtoPrinter> {
+ using TBase = TGRpcRequestImpl<TIn, TOut, TService, TInProtoPrinter, TOutProtoPrinter>;
public:
TGRpcRequest(TService* server,
typename TService::TCurrentGRpcService::AsyncService* service,
diff --git a/library/cpp/ya.make b/library/cpp/ya.make
index 8c1193b007..ae478c8456 100644
--- a/library/cpp/ya.make
+++ b/library/cpp/ya.make
@@ -205,7 +205,7 @@ RECURSE(
lfalloc/dbg
lfalloc/dbg_info
lfalloc/yt
- libgit2_wrapper
+ libgit2_wrapper
linear_regression
linear_regression/benchmark
linear_regression/ut
diff --git a/ydb/core/base/ticket_parser.h b/ydb/core/base/ticket_parser.h
index 62004b3a89..5bab31006b 100644
--- a/ydb/core/base/ticket_parser.h
+++ b/ydb/core/base/ticket_parser.h
@@ -25,17 +25,17 @@ namespace NKikimr {
static_assert(EvEnd < EventSpaceEnd(TKikimrEvents::ES_TICKET_PARSER), "expect EvEnd < EventSpaceEnd(TKikimrEvents::ES_TICKET_PARSER)");
struct TEvAuthorizeTicket : TEventLocal<TEvAuthorizeTicket, EvAuthorizeTicket> {
- struct TEntry {
- TStackVec<TString> Permissions;
- TStackVec<std::pair<TString, TString>> Attributes;
- };
-
+ struct TEntry {
+ TStackVec<TString> Permissions;
+ TStackVec<std::pair<TString, TString>> Attributes;
+ };
+
const TString Database;
const TString Ticket;
const TString PeerName;
-
+
// if two identical permissions with different attributies are specified,
- // only one of them will be processed. Which one is not guaranteed
+ // only one of them will be processed. Which one is not guaranteed
const std::vector<TEntry> Entries;
struct TInitializationFields {
@@ -64,25 +64,25 @@ namespace NKikimr {
TEvAuthorizeTicket(const TString& ticket, const TVector<std::pair<TString, TString>>& attributes, const TVector<TString>& permissions)
: Ticket(ticket)
- , Entries({{permissions, attributes}})
+ , Entries({{permissions, attributes}})
{}
TEvAuthorizeTicket(const TString& ticket, const TString& peerName, const TVector<std::pair<TString, TString>>& attributes, const TVector<TString>& permissions)
: Ticket(ticket)
, PeerName(peerName)
- , Entries({{permissions, attributes}})
- {}
-
- TEvAuthorizeTicket(const TString& ticket, const TVector<TEntry>& entries)
- : Ticket(ticket)
- , Entries(entries)
- {}
-
- TEvAuthorizeTicket(const TString& ticket, const TString& peerName, const TVector<TEntry>& entries)
- : Ticket(ticket)
- , PeerName(peerName)
- , Entries(entries)
+ , Entries({{permissions, attributes}})
{}
+
+ TEvAuthorizeTicket(const TString& ticket, const TVector<TEntry>& entries)
+ : Ticket(ticket)
+ , Entries(entries)
+ {}
+
+ TEvAuthorizeTicket(const TString& ticket, const TString& peerName, const TVector<TEntry>& entries)
+ : Ticket(ticket)
+ , PeerName(peerName)
+ , Entries(entries)
+ {}
};
struct TError {
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp
index 6766dd3171..885995a181 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp
@@ -221,7 +221,7 @@ protected:
config.Opts->AddLongOption("cms-file", "CMS config file").OptionalArgument("PATH");
config.Opts->AddLongOption("alloc-file", "Allocator config file").OptionalArgument("PATH");
config.Opts->AddLongOption("yql-file", "Yql Analytics config file").OptionalArgument("PATH");
- config.Opts->AddLongOption("yq-file", "Yandex Query config file").OptionalArgument("PATH");
+ config.Opts->AddLongOption("yq-file", "Yandex Query config file").OptionalArgument("PATH");
config.Opts->AddLongOption("feature-flags-file", "File with feature flags to turn new features on/off").OptionalArgument("PATH");
config.Opts->AddLongOption("rb-file", "File with resource broker customizations").OptionalArgument("PATH");
config.Opts->AddLongOption("metering-file", "File with metering config").OptionalArgument("PATH");
@@ -435,7 +435,7 @@ protected:
OPTION("kqp-file", KQPConfig);
OPTION("incrhuge-file", IncrHugeConfig);
OPTION("alloc-file", AllocatorConfig);
- OPTION("yq-file", YandexQueryConfig);
+ OPTION("yq-file", YandexQueryConfig);
if (!AppConfig.HasAllocatorConfig()) {
AppConfig.MutableAllocatorConfig()->CopyFrom(*DummyAllocatorConfig());
diff --git a/ydb/core/driver_lib/run/config.h b/ydb/core/driver_lib/run/config.h
index faf1797413..edea3e3ad9 100644
--- a/ydb/core/driver_lib/run/config.h
+++ b/ydb/core/driver_lib/run/config.h
@@ -62,7 +62,7 @@ union TBasicKikimrServicesMask {
bool EnableConfigsCache:1;
bool EnableLongTxService:1;
bool EnableHealthCheckService:1;
- bool EnableYandexQuery:1;
+ bool EnableYandexQuery:1;
bool EnableSequenceProxyService:1;
};
diff --git a/ydb/core/driver_lib/run/config_parser.cpp b/ydb/core/driver_lib/run/config_parser.cpp
index bb68656291..5aadcb4508 100644
--- a/ydb/core/driver_lib/run/config_parser.cpp
+++ b/ydb/core/driver_lib/run/config_parser.cpp
@@ -74,7 +74,7 @@ void TRunCommandConfigParser::SetupLastGetOptForConfigFiles(NLastGetopt::TOpts&
opts.AddLongOption("sqs-file", "SQS config file").OptionalArgument("PATH");
opts.AddLongOption("alloc-file", "Allocator config file").OptionalArgument("PATH");
opts.AddLongOption("yql-file", "Yql Analytics config file").OptionalArgument("PATH");
- opts.AddLongOption("yq-file", "Yandex Query config file").OptionalArgument("PATH");
+ opts.AddLongOption("yq-file", "Yandex Query config file").OptionalArgument("PATH");
}
void TRunCommandConfigParser::ParseConfigFiles(const NLastGetopt::TOptsParseResult& res) {
@@ -203,9 +203,9 @@ void TRunCommandConfigParser::ParseConfigFiles(const NLastGetopt::TOptsParseResu
Config.AppConfig.MutableAllocatorConfig()->CopyFrom(*allocConfig);
}
- if (res.Has("yq-file")) {
- Y_VERIFY(ParsePBFromFile(res.Get("yq-file"), Config.AppConfig.MutableYandexQueryConfig()));
- }
+ if (res.Has("yq-file")) {
+ Y_VERIFY(ParsePBFromFile(res.Get("yq-file"), Config.AppConfig.MutableYandexQueryConfig()));
+ }
}
void TRunCommandConfigParser::SetupGlobalOpts(NLastGetopt::TOpts& opts) {
diff --git a/ydb/core/driver_lib/run/factories.h b/ydb/core/driver_lib/run/factories.h
index 41a45b44e0..9f4f150e0a 100644
--- a/ydb/core/driver_lib/run/factories.h
+++ b/ydb/core/driver_lib/run/factories.h
@@ -45,7 +45,7 @@ struct TModuleFactories {
IActor*(*CreateTicketParser)(const NKikimrProto::TAuthConfig&);
IActor*(*FolderServiceFactory)(const NKikimrProto::NFolderService::TFolderServiceConfig&);
- std::function<IActor*(const NYq::NConfig::TAuditConfig& auditConfig)> YqAuditServiceFactory;
+ std::function<IActor*(const NYq::NConfig::TAuditConfig& auditConfig)> YqAuditServiceFactory;
NKikimr::TYdbCredentialsProviderFactory YdbCredentialProviderFactory;
// Factory for grpc services
TGrpcServiceFactory GrpcServiceFactory;
diff --git a/ydb/core/driver_lib/run/kikimr_services_initializers.cpp b/ydb/core/driver_lib/run/kikimr_services_initializers.cpp
index 819c1478d1..f49e47dd62 100644
--- a/ydb/core/driver_lib/run/kikimr_services_initializers.cpp
+++ b/ydb/core/driver_lib/run/kikimr_services_initializers.cpp
@@ -2251,51 +2251,51 @@ void THealthCheckInitializer::InitializeServices(TActorSystemSetup* setup, const
}
TYandexQueryInitializer::TYandexQueryInitializer(const TKikimrRunConfig& runConfig, std::shared_ptr<TModuleFactories> factories, NYq::IYqSharedResources::TPtr yqSharedResources)
- : IKikimrServicesInitializer(runConfig)
+ : IKikimrServicesInitializer(runConfig)
, Factories(std::move(factories))
, YqSharedResources(std::move(yqSharedResources))
-{
-}
-
+{
+}
+
void TYandexQueryInitializer::SetIcPort(ui32 icPort) {
IcPort = icPort;
}
-void TYandexQueryInitializer::InitializeServices(TActorSystemSetup* setup, const TAppData* appData) {
- const auto& protoConfig = Config.GetYandexQueryConfig();
- if (!protoConfig.GetEnabled()) {
- return;
- }
-
- TString tenant = "default_yq_tenant_name";
- for (const auto& slot : Config.GetTenantPoolConfig().GetSlots()) {
- if (slot.GetTenantName()) {
- tenant = slot.GetTenantName();
- break;
- }
- }
-
- auto actorRegistrator = [&](NActors::TActorId serviceActorId, NActors::IActor* actor) {
- setup->LocalServices.push_back(
- std::pair<TActorId, TActorSetupCmd>(
- serviceActorId,
- TActorSetupCmd(actor, TMailboxType::HTSwap, appData->UserPoolId)));
- };
-
- NYq::Init(
- protoConfig,
- NodeId,
- actorRegistrator,
- appData,
- tenant,
- Factories->PqCmConnections,
- YqSharedResources,
- Factories->FolderServiceFactory,
- Factories->YqAuditServiceFactory,
+void TYandexQueryInitializer::InitializeServices(TActorSystemSetup* setup, const TAppData* appData) {
+ const auto& protoConfig = Config.GetYandexQueryConfig();
+ if (!protoConfig.GetEnabled()) {
+ return;
+ }
+
+ TString tenant = "default_yq_tenant_name";
+ for (const auto& slot : Config.GetTenantPoolConfig().GetSlots()) {
+ if (slot.GetTenantName()) {
+ tenant = slot.GetTenantName();
+ break;
+ }
+ }
+
+ auto actorRegistrator = [&](NActors::TActorId serviceActorId, NActors::IActor* actor) {
+ setup->LocalServices.push_back(
+ std::pair<TActorId, TActorSetupCmd>(
+ serviceActorId,
+ TActorSetupCmd(actor, TMailboxType::HTSwap, appData->UserPoolId)));
+ };
+
+ NYq::Init(
+ protoConfig,
+ NodeId,
+ actorRegistrator,
+ appData,
+ tenant,
+ Factories->PqCmConnections,
+ YqSharedResources,
+ Factories->FolderServiceFactory,
+ Factories->YqAuditServiceFactory,
Factories->YdbCredentialProviderFactory,
IcPort
- );
-}
-
+ );
+}
+
} // namespace NKikimrServicesInitializers
} // namespace NKikimr
diff --git a/ydb/core/driver_lib/run/kikimr_services_initializers.h b/ydb/core/driver_lib/run/kikimr_services_initializers.h
index 407ce1bb7b..e11eebe325 100644
--- a/ydb/core/driver_lib/run/kikimr_services_initializers.h
+++ b/ydb/core/driver_lib/run/kikimr_services_initializers.h
@@ -486,18 +486,18 @@ public:
void InitializeServices(NActors::TActorSystemSetup* setup, const NKikimr::TAppData* appData) override;
};
-class TYandexQueryInitializer : public IKikimrServicesInitializer {
-public:
+class TYandexQueryInitializer : public IKikimrServicesInitializer {
+public:
TYandexQueryInitializer(const TKikimrRunConfig& runConfig, std::shared_ptr<TModuleFactories> factories, NYq::IYqSharedResources::TPtr yqSharedResources);
-
- void InitializeServices(NActors::TActorSystemSetup* setup, const NKikimr::TAppData* appData) override;
+
+ void InitializeServices(NActors::TActorSystemSetup* setup, const NKikimr::TAppData* appData) override;
static void SetIcPort(ui32 icPort);
private:
std::shared_ptr<TModuleFactories> Factories;
NYq::IYqSharedResources::TPtr YqSharedResources;
static ui32 IcPort;
-};
-
+};
+
} // namespace NKikimrServicesInitializers
} // namespace NKikimr
diff --git a/ydb/core/driver_lib/run/run.cpp b/ydb/core/driver_lib/run/run.cpp
index a4f74aa4e0..a787de8945 100644
--- a/ydb/core/driver_lib/run/run.cpp
+++ b/ydb/core/driver_lib/run/run.cpp
@@ -533,7 +533,7 @@ void TKikimrRunner::InitializeGRpc(const TKikimrRunConfig& runConfig) {
names["analytics"] = &hasAnalytics;
bool hasDataStreams = false;
names["datastreams"] = &hasDataStreams;
- bool hasYandexQuery = false;
+ bool hasYandexQuery = false;
names["yq"] = &hasYandexQuery;
bool hasLogStore = false;
names["logstore"] = &hasLogStore;
@@ -712,11 +712,11 @@ void TKikimrRunner::InitializeGRpc(const TKikimrRunConfig& runConfig) {
if (hasDataStreams) {
server.AddService(new NGRpcService::TGRpcDataStreamsService(ActorSystem.Get(), Counters, grpcRequestProxyId));
}
-
- if (hasYandexQuery) {
- server.AddService(new NGRpcService::TGRpcYandexQueryService(ActorSystem.Get(), Counters, grpcRequestProxyId));
+
+ if (hasYandexQuery) {
+ server.AddService(new NGRpcService::TGRpcYandexQueryService(ActorSystem.Get(), Counters, grpcRequestProxyId));
server.AddService(new NGRpcService::TGRpcYqPrivateTaskService(ActorSystem.Get(), Counters, grpcRequestProxyId));
- }
+ }
if (hasLogStore) {
server.AddService(new NGRpcService::TGRpcYdbLogStoreService(ActorSystem.Get(), Counters, grpcRequestProxyId));
@@ -1311,16 +1311,16 @@ TIntrusivePtr<TServiceInitializersList> TKikimrRunner::CreateServiceInitializers
sil->AddServiceInitializer(new TLongTxServiceInitializer(runConfig));
}
- if (serviceMask.EnableKqp || serviceMask.EnableYandexQuery) {
+ if (serviceMask.EnableKqp || serviceMask.EnableYandexQuery) {
sil->AddServiceInitializer(new TYqlLogsInitializer(runConfig));
}
- if (serviceMask.EnableYandexQuery && runConfig.AppConfig.GetYandexQueryConfig().GetEnabled()) {
+ if (serviceMask.EnableYandexQuery && runConfig.AppConfig.GetYandexQueryConfig().GetEnabled()) {
YqSharedResources = NYq::CreateYqSharedResources(runConfig.AppConfig.GetYandexQueryConfig(),
ModuleFactories->YdbCredentialProviderFactory, Counters->GetSubgroup("counters", "yq"));
sil->AddServiceInitializer(new TYandexQueryInitializer(runConfig, ModuleFactories, YqSharedResources));
- }
-
+ }
+
if (serviceMask.EnableSequenceProxyService) {
sil->AddServiceInitializer(new TSequenceProxyServiceInitializer(runConfig));
}
diff --git a/ydb/core/grpc_services/base/base.h b/ydb/core/grpc_services/base/base.h
index 44b25c4a5f..5da8a3c34c 100644
--- a/ydb/core/grpc_services/base/base.h
+++ b/ydb/core/grpc_services/base/base.h
@@ -168,27 +168,27 @@ struct TRpcServices {
EvDataStreamsSplitShard,
EvDataStreamsStartStreamEncryption,
EvDataStreamsStopStreamEncryption,
- EvStreamExecuteYqlScript,
- EvYandexQueryCreateQuery,
- EvYandexQueryListQueries,
- EvYandexQueryDescribeQuery,
+ EvStreamExecuteYqlScript,
+ EvYandexQueryCreateQuery,
+ EvYandexQueryListQueries,
+ EvYandexQueryDescribeQuery,
EvYandexQueryGetQueryStatus,
- EvYandexQueryModifyQuery,
- EvYandexQueryDeleteQuery,
- EvYandexQueryControlQuery,
- EvYandexQueryGetResultData,
- EvYandexQueryListJobs,
+ EvYandexQueryModifyQuery,
+ EvYandexQueryDeleteQuery,
+ EvYandexQueryControlQuery,
+ EvYandexQueryGetResultData,
+ EvYandexQueryListJobs,
EvYandexQueryDescribeJob,
- EvYandexQueryCreateConnection,
- EvYandexQueryListConnections,
- EvYandexQueryDescribeConnection,
- EvYandexQueryModifyConnection,
- EvYandexQueryDeleteConnection,
- EvYandexQueryTestConnection,
- EvYandexQueryCreateBinding,
- EvYandexQueryListBindings,
- EvYandexQueryDescribeBinding,
- EvYandexQueryModifyBinding,
+ EvYandexQueryCreateConnection,
+ EvYandexQueryListConnections,
+ EvYandexQueryDescribeConnection,
+ EvYandexQueryModifyConnection,
+ EvYandexQueryDeleteConnection,
+ EvYandexQueryTestConnection,
+ EvYandexQueryCreateBinding,
+ EvYandexQueryListBindings,
+ EvYandexQueryDescribeBinding,
+ EvYandexQueryModifyBinding,
EvYandexQueryDeleteBinding,
EvCreateLogStore,
EvDescribeLogStore,
@@ -251,8 +251,8 @@ public:
virtual TString GetPeerName() const = 0;
// Return deadile of request execution, calculated from client timeout by grpc
virtual TInstant GetDeadline() const = 0;
- // Meta value from request
- virtual const TMaybe<TString> GetPeerMetaValues(const TString&) const = 0;
+ // Meta value from request
+ virtual const TMaybe<TString> GetPeerMetaValues(const TString&) const = 0;
// Returns path and resource for rate limiter
virtual TMaybe<NRpcService::TRlPath> GetRlPath() const = 0;
// Raise issue on the context
@@ -452,11 +452,11 @@ public:
return Nothing();
}
- const TMaybe<TString> GetPeerMetaValues(const TString&) const override {
- Y_FAIL("Unimplemented");
- return TMaybe<TString>{};
- }
-
+ const TMaybe<TString> GetPeerMetaValues(const TString&) const override {
+ Y_FAIL("Unimplemented");
+ return TMaybe<TString>{};
+ }
+
void ReplyWithRpcStatus(grpc::StatusCode, const TString&) override {
Y_FAIL("Unimplemented");
}
@@ -651,15 +651,15 @@ public:
}
TMaybe<TString> GetTraceId() const override {
- return GetPeerMetaValues(NYdb::YDB_TRACE_ID_HEADER);
+ return GetPeerMetaValues(NYdb::YDB_TRACE_ID_HEADER);
}
const TMaybe<TString> GetSdkBuildInfo() const {
- return GetPeerMetaValues(NYdb::YDB_SDK_BUILD_INFO_HEADER);
+ return GetPeerMetaValues(NYdb::YDB_SDK_BUILD_INFO_HEADER);
}
const TMaybe<TString> GetRequestType() const {
- return GetPeerMetaValues(NYdb::YDB_REQUEST_TYPE_HEADER);
+ return GetPeerMetaValues(NYdb::YDB_REQUEST_TYPE_HEADER);
}
TInstant GetDeadline() const override {
@@ -667,13 +667,13 @@ public:
}
const TMaybe<TString> GetGrpcUserAgent() const {
- return GetPeerMetaValues(NGrpc::GRPC_USER_AGENT_HEADER);
+ return GetPeerMetaValues(NGrpc::GRPC_USER_AGENT_HEADER);
}
const TMaybe<TString> GetPeerMetaValues(const TString& key) const override {
- return ToMaybe(Ctx_->GetPeerMetaValues(key));
- }
-
+ return ToMaybe(Ctx_->GetPeerMetaValues(key));
+ }
+
void RefreshToken(const TString& token, const TActorContext& ctx, TActorId id) {
NGRpcService::RefreshToken(token, GetDatabaseName().GetOrElse(""), ctx, id);
}
@@ -855,10 +855,10 @@ public:
return InternalToken_;
}
- const TMaybe<TString> GetPeerMetaValues(const TString& key) const override {
- return ToMaybe(Ctx_->GetPeerMetaValues(key));
- }
-
+ const TMaybe<TString> GetPeerMetaValues(const TString& key) const override {
+ return ToMaybe(Ctx_->GetPeerMetaValues(key));
+ }
+
bool Validate(TString&) override {
return true;
}
@@ -899,11 +899,11 @@ public:
}
TMaybe<TString> GetTraceId() const override {
- return GetPeerMetaValues(NYdb::YDB_TRACE_ID_HEADER);
+ return GetPeerMetaValues(NYdb::YDB_TRACE_ID_HEADER);
}
const TMaybe<TString> GetSdkBuildInfo() const {
- return GetPeerMetaValues(NYdb::YDB_SDK_BUILD_INFO_HEADER);
+ return GetPeerMetaValues(NYdb::YDB_SDK_BUILD_INFO_HEADER);
}
TInstant GetDeadline() const override {
@@ -911,7 +911,7 @@ public:
}
const TMaybe<TString> GetRequestType() const override {
- return GetPeerMetaValues(NYdb::YDB_REQUEST_TYPE_HEADER);
+ return GetPeerMetaValues(NYdb::YDB_REQUEST_TYPE_HEADER);
}
void SendSerializedResult(TString&& in, Ydb::StatusIds::StatusCode status) {
diff --git a/ydb/core/grpc_services/grpc_helper.h b/ydb/core/grpc_services/grpc_helper.h
index 9a2a673c7b..17c0232d48 100644
--- a/ydb/core/grpc_services/grpc_helper.h
+++ b/ydb/core/grpc_services/grpc_helper.h
@@ -40,8 +40,8 @@ inline TCreateLimiterCB CreateLimiterCb(TIntrusivePtr<TInFlightLimiterRegistry>
return TCreateLimiterCB(limiterRegistry);
}
-template <typename TIn, typename TOut, typename TService, typename TInProtoPrinter=google::protobuf::TextFormat::Printer, typename TOutProtoPrinter=google::protobuf::TextFormat::Printer>
-using TGRpcRequest = NGrpc::TGRpcRequest<TIn, TOut, TService, TInProtoPrinter, TOutProtoPrinter>;
+template <typename TIn, typename TOut, typename TService, typename TInProtoPrinter=google::protobuf::TextFormat::Printer, typename TOutProtoPrinter=google::protobuf::TextFormat::Printer>
+using TGRpcRequest = NGrpc::TGRpcRequest<TIn, TOut, TService, TInProtoPrinter, TOutProtoPrinter>;
} // namespace NGRpcService
} // namespace NKikimr
diff --git a/ydb/core/grpc_services/grpc_request_check_actor.h b/ydb/core/grpc_services/grpc_request_check_actor.h
index 04c72abe6d..cc4f4e16bb 100644
--- a/ydb/core/grpc_services/grpc_request_check_actor.h
+++ b/ydb/core/grpc_services/grpc_request_check_actor.h
@@ -13,8 +13,8 @@
#include <ydb/core/security/secure_request.h>
#include <ydb/core/tx/scheme_cache/scheme_cache.h>
-#include <util/string/split.h>
-
+#include <util/string/split.h>
+
namespace NKikimr {
namespace NGRpcService {
@@ -422,14 +422,14 @@ const TVector<TString>& TGrpcRequestCheckActor<TEvent>::GetPermissions() {
// yds behavior
template <>
-inline const TVector<TString>& TGrpcRequestCheckActor<TEvDataStreamsPutRecordRequest>::GetPermissions() {
+inline const TVector<TString>& TGrpcRequestCheckActor<TEvDataStreamsPutRecordRequest>::GetPermissions() {
//full list of permissions for compatility. remove old permissions later.
static const TVector<TString> permissions = {"yds.streams.write", "ydb.databases.list", "ydb.databases.create", "ydb.databases.connect"};
return permissions;
}
// yds behavior
template <>
-inline const TVector<TString>& TGrpcRequestCheckActor<TEvDataStreamsPutRecordsRequest>::GetPermissions() {
+inline const TVector<TString>& TGrpcRequestCheckActor<TEvDataStreamsPutRecordsRequest>::GetPermissions() {
//full list of permissions for compatility. remove old permissions later.
static const TVector<TString> permissions = {"yds.streams.write", "ydb.databases.list", "ydb.databases.create", "ydb.databases.connect"};
return permissions;
diff --git a/ydb/core/grpc_services/local_rpc/local_rpc.h b/ydb/core/grpc_services/local_rpc/local_rpc.h
index 23c3b6c803..d19a6bae11 100644
--- a/ydb/core/grpc_services/local_rpc/local_rpc.h
+++ b/ydb/core/grpc_services/local_rpc/local_rpc.h
@@ -47,11 +47,11 @@ public:
return InternalToken;
}
- const TMaybe<TString> GetPeerMetaValues(const TString&) const override {
- Y_FAIL("Unimplemented");
- return TMaybe<TString>{};
- }
-
+ const TMaybe<TString> GetPeerMetaValues(const TString&) const override {
+ Y_FAIL("Unimplemented");
+ return TMaybe<TString>{};
+ }
+
void ReplyWithYdbStatus(Ydb::StatusIds::StatusCode status) override {
TResp resp;
NGRpcService::TCommonResponseFiller<TResp, true>::Fill(resp, IssueManager.GetIssues(), CostInfo.get(), status);
diff --git a/ydb/core/grpc_services/rpc_yq.cpp b/ydb/core/grpc_services/rpc_yq.cpp
index 6fe5f868d6..bb3bafb54f 100644
--- a/ydb/core/grpc_services/rpc_yq.cpp
+++ b/ydb/core/grpc_services/rpc_yq.cpp
@@ -1,25 +1,25 @@
-#include "rpc_common.h"
-#include "rpc_deferrable.h"
-
+#include "rpc_common.h"
+#include "rpc_deferrable.h"
+
#include <ydb/core/grpc_services/service_yq.h>
#include <ydb/core/yq/libs/audit/events/events.h>
#include <ydb/core/yq/libs/audit/yq_audit_service.h>
#include <ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.h>
#include <ydb/core/yq/libs/control_plane_proxy/events/events.h>
#include <ydb/core/yq/libs/control_plane_proxy/utils.h>
-
+
#include <ydb/library/aclib/aclib.h>
-
-#include <library/cpp/actors/core/hfunc.h>
-
-#include <util/generic/guid.h>
-#include <util/string/split.h>
-
-namespace NKikimr {
-namespace NGRpcService {
-
-using namespace Ydb;
-
+
+#include <library/cpp/actors/core/hfunc.h>
+
+#include <util/generic/guid.h>
+#include <util/string/split.h>
+
+namespace NKikimr {
+namespace NGRpcService {
+
+using namespace Ydb;
+
template <typename RpcRequestType, typename EvRequestType, typename EvResponseType>
class TYandexQueryRequestRPC : public TRpcOperationRequestActor<
TYandexQueryRequestRPC<RpcRequestType,EvRequestType,EvResponseType>, RpcRequestType> {
@@ -42,13 +42,13 @@ protected:
TString UserAgent;
TString RequestId;
-public:
+public:
TYandexQueryRequestRPC(IRequestOpCtx* request)
: TBase(request) {}
-
- void Bootstrap() {
+
+ void Bootstrap() {
auto requestCtx = Request_.get();
-
+
auto request = dynamic_cast<RpcRequestType*>(requestCtx);
Y_VERIFY(request);
@@ -60,58 +60,58 @@ public:
RequestId = Request_->GetPeerMetaValues("x-request-id").GetOrElse(CreateGuidAsString());
TMaybe<TString> authToken = proxyCtx->GetYdbToken();
- if (!authToken) {
+ if (!authToken) {
ReplyWithStatus("Token is empty", StatusIds::BAD_REQUEST);
- return;
- }
- Token = *authToken;
-
+ return;
+ }
+ Token = *authToken;
+
const TString scope = Request_->GetPeerMetaValues("x-yq-scope").GetOrElse("");
- if (!scope.StartsWith("yandexcloud://")) {
+ if (!scope.StartsWith("yandexcloud://")) {
ReplyWithStatus("x-yq-scope should start with yandexcloud:// but got " + scope, StatusIds::BAD_REQUEST);
- return;
- }
-
- const TVector<TString> path = StringSplitter(scope).Split('/').SkipEmpty();
+ return;
+ }
+
+ const TVector<TString> path = StringSplitter(scope).Split('/').SkipEmpty();
if (path.size() != 2) {
ReplyWithStatus("x-yq-scope format is invalid. Must be yandexcloud://folder_id, but got " + scope, StatusIds::BAD_REQUEST);
- return;
- }
-
+ return;
+ }
+
FolderId = path.back();
if (!FolderId) {
ReplyWithStatus("Folder id is empty", StatusIds::BAD_REQUEST);
return;
- }
-
+ }
+
if (FolderId.length() > 1024) {
ReplyWithStatus("Folder id length greater than 1024 characters: " + FolderId, StatusIds::BAD_REQUEST);
return;
- }
-
+ }
+
const TString& internalToken = proxyCtx->GetInternalToken();
- TVector<TString> permissions;
- if (internalToken) {
- NACLib::TUserToken userToken(internalToken);
+ TVector<TString> permissions;
+ if (internalToken) {
+ NACLib::TUserToken userToken(internalToken);
User = userToken.GetUserSID();
for (const auto& sid: request->Sids) {
- if (userToken.IsExist(sid)) {
- permissions.push_back(sid);
- }
- }
- }
-
+ if (userToken.IsExist(sid)) {
+ permissions.push_back(sid);
+ }
+ }
+ }
+
if (!User) {
ReplyWithStatus("Authorization error. Permission denied", StatusIds::UNAUTHORIZED);
- return;
- }
-
+ return;
+ }
+
const auto* req = GetProtoRequest();
auto ev = MakeHolder<EvRequestType>(FolderId, *req, User, Token, permissions);
Send(NYq::ControlPlaneProxyActorId(), ev.Release());
Become(&TYandexQueryRequestRPC<RpcRequestType, EvRequestType, EvResponseType>::StateFunc);
- }
-
+ }
+
protected:
void ReplyWithStatus(const TString& issueMessage, StatusIds::StatusCode status) {
Request_->RaiseIssue(NYql::TIssue(issueMessage));
@@ -119,29 +119,29 @@ protected:
PassAway();
}
- STRICT_STFUNC(StateFunc,
+ STRICT_STFUNC(StateFunc,
hFunc(EvResponseType, Handle);
- )
-
+ )
+
template <typename TResponse, typename TReq>
void SendResponse(const TResponse& response, TReq& req) {
- if (response.Issues) {
+ if (response.Issues) {
req.RaiseIssues(response.Issues);
req.ReplyWithYdbStatus(StatusIds::BAD_REQUEST);
- } else {
+ } else {
req.SendResult(response.Result, StatusIds::SUCCESS);
}
- }
-
+ }
+
template <typename TResponse, typename TReq> requires requires (TResponse r) { r.AuditDetails; }
void SendResponse(const TResponse& response, TReq& req) {
- if (response.Issues) {
+ if (response.Issues) {
req.RaiseIssues(response.Issues);
req.ReplyWithYdbStatus(StatusIds::BAD_REQUEST);
- } else {
+ } else {
req.SendResult(response.Result, StatusIds::SUCCESS);
}
-
+
NYq::TEvAuditService::TExtraInfo extraInfo{
.Token = Token,
.FolderId = FolderId,
@@ -156,28 +156,28 @@ protected:
*GetProtoRequest(),
response.Issues,
response.AuditDetails));
- }
-
+ }
+
void Handle(typename EvResponseType::TPtr& ev) {
SendResponse(*ev->Get(), *Request_);
- PassAway();
- }
-};
-
+ PassAway();
+ }
+};
+
using TYandexQueryCreateQueryRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::CreateQueryRequest, YandexQuery::CreateQueryResponse>,
NYq::TEvControlPlaneProxy::TEvCreateQueryRequest,
NYq::TEvControlPlaneProxy::TEvCreateQueryResponse>;
-
+
void DoYandexQueryCreateQueryRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryCreateQueryRPC(p.release()));
-}
-
+}
+
using TYandexQueryListQueriesRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::ListQueriesRequest, YandexQuery::ListQueriesResponse>,
NYq::TEvControlPlaneProxy::TEvListQueriesRequest,
NYq::TEvControlPlaneProxy::TEvListQueriesResponse>;
-
+
void DoYandexQueryListQueriesRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryListQueriesRPC(p.release()));
}
@@ -186,25 +186,25 @@ using TYandexQueryDescribeQueryRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::DescribeQueryRequest, YandexQuery::DescribeQueryResponse>,
NYq::TEvControlPlaneProxy::TEvDescribeQueryRequest,
NYq::TEvControlPlaneProxy::TEvDescribeQueryResponse>;
-
+
void DoYandexQueryDescribeQueryRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryDescribeQueryRPC(p.release()));
-}
-
+}
+
using TYandexQueryGetQueryStatusRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::GetQueryStatusRequest, YandexQuery::GetQueryStatusResponse>,
NYq::TEvControlPlaneProxy::TEvGetQueryStatusRequest,
NYq::TEvControlPlaneProxy::TEvGetQueryStatusResponse>;
-
+
void DoYandexQueryGetQueryStatusRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryGetQueryStatusRPC(p.release()));
-}
-
+}
+
using TYandexQueryModifyQueryRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::ModifyQueryRequest, YandexQuery::ModifyQueryResponse>,
NYq::TEvControlPlaneProxy::TEvModifyQueryRequest,
NYq::TEvControlPlaneProxy::TEvModifyQueryResponse>;
-
+
void DoYandexQueryModifyQueryRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryModifyQueryRPC(p.release()));
}
@@ -213,97 +213,97 @@ using TYandexQueryDeleteQueryRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::DeleteQueryRequest, YandexQuery::DeleteQueryResponse>,
NYq::TEvControlPlaneProxy::TEvDeleteQueryRequest,
NYq::TEvControlPlaneProxy::TEvDeleteQueryResponse>;
-
+
void DoYandexQueryDeleteQueryRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryDeleteQueryRPC(p.release()));
-}
-
+}
+
using TYandexQueryControlQueryRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::ControlQueryRequest, YandexQuery::ControlQueryResponse>,
NYq::TEvControlPlaneProxy::TEvControlQueryRequest,
NYq::TEvControlPlaneProxy::TEvControlQueryResponse>;
-
+
void DoYandexQueryControlQueryRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryControlQueryRPC(p.release()));
-}
-
+}
+
using TYandexQueryGetResultDataRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::GetResultDataRequest, YandexQuery::GetResultDataResponse>,
NYq::TEvControlPlaneProxy::TEvGetResultDataRequest,
NYq::TEvControlPlaneProxy::TEvGetResultDataResponse>;
-
+
void DoGetResultDataRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryGetResultDataRPC(p.release()));
-}
-
+}
+
using TYandexQueryListJobsRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::ListJobsRequest, YandexQuery::ListJobsResponse>,
NYq::TEvControlPlaneProxy::TEvListJobsRequest,
NYq::TEvControlPlaneProxy::TEvListJobsResponse>;
-
+
void DoListJobsRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryListJobsRPC(p.release()));
-}
-
+}
+
using TYandexQueryDescribeJobRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::DescribeJobRequest, YandexQuery::DescribeJobResponse>,
NYq::TEvControlPlaneProxy::TEvDescribeJobRequest,
NYq::TEvControlPlaneProxy::TEvDescribeJobResponse>;
-
+
void DoDescribeJobRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryDescribeJobRPC(p.release()));
-}
-
+}
+
using TYandexQueryCreateConnectionRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::CreateConnectionRequest, YandexQuery::CreateConnectionResponse>,
NYq::TEvControlPlaneProxy::TEvCreateConnectionRequest,
NYq::TEvControlPlaneProxy::TEvCreateConnectionResponse>;
-
+
void DoCreateConnectionRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryCreateConnectionRPC(p.release()));
-}
-
+}
+
using TYandexQueryListConnectionsRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::ListConnectionsRequest, YandexQuery::ListConnectionsResponse>,
NYq::TEvControlPlaneProxy::TEvListConnectionsRequest,
NYq::TEvControlPlaneProxy::TEvListConnectionsResponse>;
-
+
void DoListConnectionsRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryListConnectionsRPC(p.release()));
-}
-
+}
+
using TYandexQueryDescribeConnectionRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::DescribeConnectionRequest, YandexQuery::DescribeConnectionResponse>,
NYq::TEvControlPlaneProxy::TEvDescribeConnectionRequest,
NYq::TEvControlPlaneProxy::TEvDescribeConnectionResponse>;
-
+
void DoDescribeConnectionRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryDescribeConnectionRPC(p.release()));
-}
-
+}
+
using TYandexQueryModifyConnectionRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::ModifyConnectionRequest, YandexQuery::ModifyConnectionResponse>,
NYq::TEvControlPlaneProxy::TEvModifyConnectionRequest,
NYq::TEvControlPlaneProxy::TEvModifyConnectionResponse>;
-
+
void DoModifyConnectionRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryModifyConnectionRPC(p.release()));
-}
-
+}
+
using TYandexQueryDeleteConnectionRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::DeleteConnectionRequest, YandexQuery::DeleteConnectionResponse>,
NYq::TEvControlPlaneProxy::TEvDeleteConnectionRequest,
NYq::TEvControlPlaneProxy::TEvDeleteConnectionResponse>;
-
+
void DoDeleteConnectionRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryDeleteConnectionRPC(p.release()));
-}
-
+}
+
using TYandexQueryTestConnectionRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::TestConnectionRequest, YandexQuery::TestConnectionResponse>,
NYq::TEvControlPlaneProxy::TEvTestConnectionRequest,
NYq::TEvControlPlaneProxy::TEvTestConnectionResponse>;
-
+
void DoTestConnectionRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryTestConnectionRPC(p.release()));
}
@@ -312,46 +312,46 @@ using TYandexQueryCreateBindingRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::CreateBindingRequest, YandexQuery::CreateBindingResponse>,
NYq::TEvControlPlaneProxy::TEvCreateBindingRequest,
NYq::TEvControlPlaneProxy::TEvCreateBindingResponse>;
-
+
void DoCreateBindingRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider& ) {
TActivationContext::AsActorContext().Register(new TYandexQueryCreateBindingRPC(p.release()));
-}
-
+}
+
using TYandexQueryListBindingsRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::ListBindingsRequest, YandexQuery::ListBindingsResponse>,
NYq::TEvControlPlaneProxy::TEvListBindingsRequest,
NYq::TEvControlPlaneProxy::TEvListBindingsResponse>;
-
+
void DoListBindingsRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryListBindingsRPC(p.release()));
-}
-
+}
+
using TYandexQueryDescribeBindingRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::DescribeBindingRequest, YandexQuery::DescribeBindingResponse>,
NYq::TEvControlPlaneProxy::TEvDescribeBindingRequest,
NYq::TEvControlPlaneProxy::TEvDescribeBindingResponse>;
-
+
void DoDescribeBindingRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryDescribeBindingRPC(p.release()));
-}
-
+}
+
using TYandexQueryModifyBindingRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::ModifyBindingRequest, YandexQuery::ModifyBindingResponse>,
NYq::TEvControlPlaneProxy::TEvModifyBindingRequest,
NYq::TEvControlPlaneProxy::TEvModifyBindingResponse>;
-
+
void DoModifyBindingRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryModifyBindingRPC(p.release()));
-}
-
+}
+
using TYandexQueryDeleteBindingRPC = TYandexQueryRequestRPC<
TGrpcYqRequestOperationCall<YandexQuery::DeleteBindingRequest, YandexQuery::DeleteBindingResponse>,
NYq::TEvControlPlaneProxy::TEvDeleteBindingRequest,
NYq::TEvControlPlaneProxy::TEvDeleteBindingResponse>;
-
+
void DoDeleteBindingRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&) {
TActivationContext::AsActorContext().Register(new TYandexQueryDeleteBindingRPC(p.release()));
-}
-
-} // namespace NGRpcService
-} // namespace NKikimr
+}
+
+} // namespace NGRpcService
+} // namespace NKikimr
diff --git a/ydb/core/grpc_services/ya.make b/ydb/core/grpc_services/ya.make
index 05b156bf04..b1f6f85271 100644
--- a/ydb/core/grpc_services/ya.make
+++ b/ydb/core/grpc_services/ya.make
@@ -69,14 +69,14 @@ SRCS(
rpc_stream_execute_scan_query.cpp
rpc_stream_execute_yql_script.cpp
rpc_whoami.cpp
- rpc_yq.cpp
+ rpc_yq.cpp
table_profiles.cpp
table_settings.cpp
rpc_analytics_internal.cpp
)
PEERDIR(
- contrib/libs/xxhash
+ contrib/libs/xxhash
library/cpp/cgiparam
library/cpp/digest/old_crc
ydb/core/actorlib_impl
diff --git a/ydb/core/kesus/tablet/quoter_resource_tree.cpp b/ydb/core/kesus/tablet/quoter_resource_tree.cpp
index 3f9d6e5653..867edd134f 100644
--- a/ydb/core/kesus/tablet/quoter_resource_tree.cpp
+++ b/ydb/core/kesus/tablet/quoter_resource_tree.cpp
@@ -48,7 +48,7 @@ static const TString ELAPSED_MICROSEC_WHEN_RESOURCE_ACTIVE_COUNTER_NAME = "Elaps
bool ValidResourcePathSymbols[256] = {};
bool MakeValidResourcePathSymbols() {
- char symbols[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._-/:#";
+ char symbols[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._-/:#";
for (size_t i = 0; i < Y_ARRAY_SIZE(symbols) - 1; ++i) {
ValidResourcePathSymbols[static_cast<unsigned char>(symbols[i])] = true;
}
diff --git a/ydb/core/kesus/tablet/tablet_ut.cpp b/ydb/core/kesus/tablet/tablet_ut.cpp
index 1cf1a80ca8..360daabe6c 100644
--- a/ydb/core/kesus/tablet/tablet_ut.cpp
+++ b/ydb/core/kesus/tablet/tablet_ut.cpp
@@ -1550,7 +1550,7 @@ Y_UNIT_TEST_SUITE(TKesusTest) {
ctx.RebootTablet();
testAfterModification();
- req.SetResourcePath("?Invalid/Path?");
+ req.SetResourcePath("?Invalid/Path?");
ctx.UpdateQuoterResource(req, Ydb::StatusIds::BAD_REQUEST); // invalid path
testAfterModification();
ctx.RebootTablet();
@@ -1596,7 +1596,7 @@ Y_UNIT_TEST_SUITE(TKesusTest) {
ctx.DeleteQuoterResource(req, Ydb::StatusIds::BAD_REQUEST); // no resource
UNIT_ASSERT_VALUES_EQUAL(ctx.DescribeQuoterResources({}, {}, true).ResourcesSize(), 4);
- req.SetResourcePath("?Invalid/Path?");
+ req.SetResourcePath("?Invalid/Path?");
ctx.DeleteQuoterResource(req, Ydb::StatusIds::BAD_REQUEST); // invalid path
UNIT_ASSERT_VALUES_EQUAL(ctx.DescribeQuoterResources({}, {}, true).ResourcesSize(), 4);
diff --git a/ydb/core/mind/labels_maintainer.cpp b/ydb/core/mind/labels_maintainer.cpp
index 19138c7d23..aae072eb3e 100644
--- a/ydb/core/mind/labels_maintainer.cpp
+++ b/ydb/core/mind/labels_maintainer.cpp
@@ -303,7 +303,7 @@ private:
auto &dbLabels = config.GetDatabaseLabels();
DatabaseLabelsEnabled = dbLabels.GetEnabled();
- GroupAllMetrics = dbLabels.GetGroupAllMetrics();
+ GroupAllMetrics = dbLabels.GetGroupAllMetrics();
DatabaseSensorServices.clear();
for (auto &service : dbLabels.GetServices())
DatabaseSensorServices.insert(service);
@@ -369,7 +369,7 @@ private:
private:
bool DatabaseLabelsEnabled;
- bool GroupAllMetrics;
+ bool GroupAllMetrics;
bool DatabaseAttributeLabelsEnabled;
bool ForceDatabaseLabels;
bool InitializedLocalOptions;
diff --git a/ydb/core/protos/config.proto b/ydb/core/protos/config.proto
index d64169d4fc..d6bdb2c6e2 100644
--- a/ydb/core/protos/config.proto
+++ b/ydb/core/protos/config.proto
@@ -450,7 +450,7 @@ message TMonitoringConfig {
optional string StaticSlotLabelValue = 7 [default = "static"];
optional string DynamicSlotLabelValue = 8 [default = "dynamic"];
optional string MultipleSlotLabelValue = 9 [default = "<multiple>"];
- optional bool GroupAllMetrics = 10;
+ optional bool GroupAllMetrics = 10;
};
message TDatabaseAttributeLabels {
@@ -1377,7 +1377,7 @@ message TAppConfig {
optional TMeteringConfig MeteringConfig = 45;
optional THiveConfig HiveConfig = 46;
optional TDataShardConfig DataShardConfig = 49;
- optional NYq.NConfig.TConfig YandexQueryConfig = 50;
+ optional NYq.NConfig.TConfig YandexQueryConfig = 50;
optional TCompactionConfig CompactionConfig = 52;
repeated TNamedConfig NamedConfigs = 100;
diff --git a/ydb/core/protos/services.proto b/ydb/core/protos/services.proto
index c17c8a7dc3..e4986d91a1 100644
--- a/ydb/core/protos/services.proto
+++ b/ydb/core/protos/services.proto
@@ -286,16 +286,16 @@ enum EServiceKikimr {
STREAMS_SCHEDULER_SERVICE = 1014;
STREAMS_RESOURCE_SERVICE = 1015;
STREAMS_CHECKPOINT_COORDINATOR = 1016;
- STREAMS_CONTROL_PLANE_SERVICE = 1017;
+ STREAMS_CONTROL_PLANE_SERVICE = 1017;
STREAMS_GRAND_LEADER_SERVICE = 1018;
- STREAMS_META_STORAGE_SERVICE = 1019;
+ STREAMS_META_STORAGE_SERVICE = 1019;
STREAMS_GRAPH_LEADER = 1020;
- // YandexQuery
- YQ_CONTROL_PLANE_STORAGE = 1021;
- YQ_CONTROL_PLANE_PROXY= 1022;
- YQ_TEST_CONNECTION = 1023;
-
+ // YandexQuery
+ YQ_CONTROL_PLANE_STORAGE = 1021;
+ YQ_CONTROL_PLANE_PROXY= 1022;
+ YQ_TEST_CONNECTION = 1023;
+
// Change exchange (async indexes & CDC)
CHANGE_EXCHANGE = 1100;
@@ -836,8 +836,8 @@ message TActivity {
BS_SCRUB_ACTOR = 531;
BS_BLOB_RECOVERY_ACTOR = 532;
BS_RESTORE_CORRUPTED_BLOB_ACTOR = 533;
- YQ_CONTROL_PLANE_STORAGE_ACTOR = 534;
- YQ_CONTROL_PLANE_PROXY_ACTOR = 535;
+ YQ_CONTROL_PLANE_STORAGE_ACTOR = 534;
+ YQ_CONTROL_PLANE_PROXY_ACTOR = 535;
DB_WATCHER_ACTOR = 495;
YQL_PENDING_FETCHER_ACTOR = 536;
YQL_PINGER_ACTOR = 537;
diff --git a/ydb/core/security/secure_request.h b/ydb/core/security/secure_request.h
index 04e276a897..aad5b9b64b 100644
--- a/ydb/core/security/secure_request.h
+++ b/ydb/core/security/secure_request.h
@@ -14,7 +14,7 @@ private:
THolder<TEvTicketParser::TEvAuthorizeTicketResult> AuthorizeTicketResult;
bool RequireAdminAccess = false;
bool UserAdmin = false;
- TVector<TEvTicketParser::TEvAuthorizeTicket::TEntry> Entries;
+ TVector<TEvTicketParser::TEvAuthorizeTicket::TEntry> Entries;
static bool GetEnforceUserTokenRequirement() {
return AppData()->EnforceUserTokenRequirement;
@@ -86,12 +86,12 @@ public:
RequireAdminAccess = requireAdminAccess;
}
- void SetEntries(const TVector<TEvTicketParser::TEvAuthorizeTicket::TEntry>& entries) {
- Entries = entries;
+ void SetEntries(const TVector<TEvTicketParser::TEvAuthorizeTicket::TEntry>& entries) {
+ Entries = entries;
}
- const TVector<TEvTicketParser::TEvAuthorizeTicket::TEntry>& GetEntries() const {
- return Entries;
+ const TVector<TEvTicketParser::TEvAuthorizeTicket::TEntry>& GetEntries() const {
+ return Entries;
}
const TEvTicketParser::TEvAuthorizeTicketResult* GetAuthorizeTicketResult() const {
diff --git a/ydb/core/security/ticket_parser.cpp b/ydb/core/security/ticket_parser.cpp
index c7d024d03d..a5f9769860 100644
--- a/ydb/core/security/ticket_parser.cpp
+++ b/ydb/core/security/ticket_parser.cpp
@@ -125,18 +125,18 @@ class TTicketParser : public TActorBootstrapped<TTicketParser> {
key << ':';
}
for (const auto& entry : request->Entries) {
- for (auto it = entry.Attributes.begin(); it != entry.Attributes.end(); ++it) {
- if (it != entry.Attributes.begin()) {
- key << '-';
- }
- key << it->second;
+ for (auto it = entry.Attributes.begin(); it != entry.Attributes.end(); ++it) {
+ if (it != entry.Attributes.begin()) {
+ key << '-';
+ }
+ key << it->second;
}
- key << ':';
- for (auto it = entry.Permissions.begin(); it != entry.Permissions.end(); ++it) {
- if (it != entry.Permissions.begin()) {
- key << '-';
- }
- key << *it;
+ key << ':';
+ for (auto it = entry.Permissions.begin(); it != entry.Permissions.end(); ++it) {
+ if (it != entry.Permissions.begin()) {
+ key << '-';
+ }
+ key << *it;
}
}
return key.Str();
diff --git a/ydb/core/testlib/test_client.cpp b/ydb/core/testlib/test_client.cpp
index d4907c26f1..3319216ae5 100644
--- a/ydb/core/testlib/test_client.cpp
+++ b/ydb/core/testlib/test_client.cpp
@@ -101,8 +101,8 @@ namespace NKikimr {
namespace Tests {
-
-
+
+
TServerSettings& TServerSettings::SetDomainName(const TString& value) {
StoragePoolTypes.erase("test");
DomainName = value;
@@ -317,10 +317,10 @@ namespace Tests {
GRpcServer->AddService(new NQuoter::TRateLimiterGRpcService(system, counters, grpcRequestProxyId));
GRpcServer->AddService(new NGRpcService::TGRpcYdbLongTxService(system, counters, grpcRequestProxyId));
GRpcServer->AddService(new NGRpcService::TGRpcDataStreamsService(system, counters, grpcRequestProxyId));
- if (Settings->EnableYq) {
- GRpcServer->AddService(new NGRpcService::TGRpcYandexQueryService(system, counters, grpcRequestProxyId));
+ if (Settings->EnableYq) {
+ GRpcServer->AddService(new NGRpcService::TGRpcYandexQueryService(system, counters, grpcRequestProxyId));
GRpcServer->AddService(new NGRpcService::TGRpcYqPrivateTaskService(system, counters, grpcRequestProxyId));
- }
+ }
if (const auto& factory = Settings->GrpcServiceFactory) {
// All services enabled by default for ut
static const std::unordered_set<TString> dummy;
@@ -705,119 +705,119 @@ namespace Tests {
Runtime->RegisterService(NNetClassifier::MakeNetClassifierID(), netClassifierId, nodeIdx);
}
- if (Settings->EnableYq) {
- NYq::NConfig::TConfig protoConfig;
- protoConfig.SetEnabled(true);
-
+ if (Settings->EnableYq) {
+ NYq::NConfig::TConfig protoConfig;
+ protoConfig.SetEnabled(true);
+
protoConfig.MutableCommon()->SetIdsPrefix("id");
- TString endpoint = TStringBuilder() << "localhost:" << Settings->GrpcPort;
- TString prefix = "Root/yq";
- auto port = Runtime->GetPortManager().GetPort();
- TString ydbMvpEndpoint = TStringBuilder()
- << "http://localhost:"
- << port
- << "/yql-mock/abc";
-
- {
- auto& controlPlaneProxyConfig = *protoConfig.MutableControlPlaneProxy();
- controlPlaneProxyConfig.SetEnabled(true);
- }
-
- {
- auto& testConnectionConfig = *protoConfig.MutableTestConnection();
- testConnectionConfig.SetEnabled(true);
- }
-
- {
- auto& controlPlaneStorageConfig = *protoConfig.MutableControlPlaneStorage();
- controlPlaneStorageConfig.SetEnabled(true);
- controlPlaneStorageConfig.SetUseInMemory(Settings->AppConfig.GetYandexQueryConfig().GetControlPlaneStorage().GetUseInMemory());
- auto& storage = *controlPlaneStorageConfig.MutableStorage();
- storage.SetEndpoint(endpoint);
- storage.SetTablePrefix(prefix);
-
- controlPlaneStorageConfig.AddAvailableBinding("DATA_STREAMS");
- controlPlaneStorageConfig.AddAvailableBinding("OBJECT_STORAGE");
-
- controlPlaneStorageConfig.AddAvailableConnection("YDB_DATABASE");
- controlPlaneStorageConfig.AddAvailableConnection("CLICKHOUSE_CLUSTER");
- controlPlaneStorageConfig.AddAvailableConnection("DATA_STREAMS");
- controlPlaneStorageConfig.AddAvailableConnection("OBJECT_STORAGE");
- controlPlaneStorageConfig.AddAvailableConnection("MONITORING");
- }
-
- {
- auto& commonConfig = *protoConfig.MutableCommon();
- commonConfig.SetYdbMvpCloudEndpoint(ydbMvpEndpoint);
- commonConfig.SetIdsPrefix("ut");
- }
-
- {
- auto& privateApiConfig = *protoConfig.MutablePrivateApi();
- privateApiConfig.SetEnabled(true);
- privateApiConfig.SetTaskServiceEndpoint(endpoint);
- privateApiConfig.SetTaskServiceDatabase("Root");
- }
-
- {
- auto& tokenAccessorConfig = *protoConfig.MutableTokenAccessor();
- tokenAccessorConfig.SetEnabled(true);
- }
-
- {
- auto& dbPoolConfig = *protoConfig.MutableDbPool();
- dbPoolConfig.SetEnabled(true);
- auto& storage = *dbPoolConfig.MutableStorage();
- storage.SetEndpoint(endpoint);
- storage.SetTablePrefix(prefix);
- }
-
- {
- auto& resourceManagerConfig = *protoConfig.MutableResourceManager();
- resourceManagerConfig.SetEnabled(true);
- }
-
- {
- auto& privateProxyConfig = *protoConfig.MutablePrivateProxy();
- privateProxyConfig.SetEnabled(true);
- }
-
- {
- auto& nodesManagerConfig = *protoConfig.MutableNodesManager();
- nodesManagerConfig.SetEnabled(true);
- }
-
- {
- auto& pendingFetcherConfig = *protoConfig.MutablePendingFetcher();
- pendingFetcherConfig.SetEnabled(true);
- }
-
- auto& appData = Runtime->GetAppData();
-
- auto actorRegistrator = [&](NActors::TActorId serviceActorId, NActors::IActor* actor) {
- auto actorId = Runtime->Register(actor, nodeIdx);
- Runtime->RegisterService(serviceActorId, actorId, nodeIdx);
- };
-
+ TString endpoint = TStringBuilder() << "localhost:" << Settings->GrpcPort;
+ TString prefix = "Root/yq";
+ auto port = Runtime->GetPortManager().GetPort();
+ TString ydbMvpEndpoint = TStringBuilder()
+ << "http://localhost:"
+ << port
+ << "/yql-mock/abc";
+
+ {
+ auto& controlPlaneProxyConfig = *protoConfig.MutableControlPlaneProxy();
+ controlPlaneProxyConfig.SetEnabled(true);
+ }
+
+ {
+ auto& testConnectionConfig = *protoConfig.MutableTestConnection();
+ testConnectionConfig.SetEnabled(true);
+ }
+
+ {
+ auto& controlPlaneStorageConfig = *protoConfig.MutableControlPlaneStorage();
+ controlPlaneStorageConfig.SetEnabled(true);
+ controlPlaneStorageConfig.SetUseInMemory(Settings->AppConfig.GetYandexQueryConfig().GetControlPlaneStorage().GetUseInMemory());
+ auto& storage = *controlPlaneStorageConfig.MutableStorage();
+ storage.SetEndpoint(endpoint);
+ storage.SetTablePrefix(prefix);
+
+ controlPlaneStorageConfig.AddAvailableBinding("DATA_STREAMS");
+ controlPlaneStorageConfig.AddAvailableBinding("OBJECT_STORAGE");
+
+ controlPlaneStorageConfig.AddAvailableConnection("YDB_DATABASE");
+ controlPlaneStorageConfig.AddAvailableConnection("CLICKHOUSE_CLUSTER");
+ controlPlaneStorageConfig.AddAvailableConnection("DATA_STREAMS");
+ controlPlaneStorageConfig.AddAvailableConnection("OBJECT_STORAGE");
+ controlPlaneStorageConfig.AddAvailableConnection("MONITORING");
+ }
+
+ {
+ auto& commonConfig = *protoConfig.MutableCommon();
+ commonConfig.SetYdbMvpCloudEndpoint(ydbMvpEndpoint);
+ commonConfig.SetIdsPrefix("ut");
+ }
+
+ {
+ auto& privateApiConfig = *protoConfig.MutablePrivateApi();
+ privateApiConfig.SetEnabled(true);
+ privateApiConfig.SetTaskServiceEndpoint(endpoint);
+ privateApiConfig.SetTaskServiceDatabase("Root");
+ }
+
+ {
+ auto& tokenAccessorConfig = *protoConfig.MutableTokenAccessor();
+ tokenAccessorConfig.SetEnabled(true);
+ }
+
+ {
+ auto& dbPoolConfig = *protoConfig.MutableDbPool();
+ dbPoolConfig.SetEnabled(true);
+ auto& storage = *dbPoolConfig.MutableStorage();
+ storage.SetEndpoint(endpoint);
+ storage.SetTablePrefix(prefix);
+ }
+
+ {
+ auto& resourceManagerConfig = *protoConfig.MutableResourceManager();
+ resourceManagerConfig.SetEnabled(true);
+ }
+
+ {
+ auto& privateProxyConfig = *protoConfig.MutablePrivateProxy();
+ privateProxyConfig.SetEnabled(true);
+ }
+
+ {
+ auto& nodesManagerConfig = *protoConfig.MutableNodesManager();
+ nodesManagerConfig.SetEnabled(true);
+ }
+
+ {
+ auto& pendingFetcherConfig = *protoConfig.MutablePendingFetcher();
+ pendingFetcherConfig.SetEnabled(true);
+ }
+
+ auto& appData = Runtime->GetAppData();
+
+ auto actorRegistrator = [&](NActors::TActorId serviceActorId, NActors::IActor* actor) {
+ auto actorId = Runtime->Register(actor, nodeIdx);
+ Runtime->RegisterService(serviceActorId, actorId, nodeIdx);
+ };
+
const auto ydbCredFactory = NKikimr::CreateYdbCredentialsProviderFactory;
auto counters = MakeIntrusive<NMonitoring::TDynamicCounters>();
auto yqSharedResources = NYq::CreateYqSharedResources(protoConfig, ydbCredFactory, counters);
NYq::Init(
- protoConfig,
- Runtime->GetNodeId(nodeIdx),
- actorRegistrator,
+ protoConfig,
+ Runtime->GetNodeId(nodeIdx),
+ actorRegistrator,
&appData,
- "TestTenant",
+ "TestTenant",
nullptr, // MakeIntrusive<NPq::NConfigurationManager::TConnections>(),
yqSharedResources,
NKikimr::NFolderService::CreateMockFolderServiceActor,
NYq::CreateMockYqAuditServiceActor,
ydbCredFactory,
/*IcPort = */0
- );
+ );
NYq::InitTest(Runtime.Get(), port, Settings->GrpcPort, yqSharedResources);
- }
+ }
}
void TServer::SetupLogging() {
diff --git a/ydb/core/testlib/test_client.h b/ydb/core/testlib/test_client.h
index 2064752ab4..ca74bd58a7 100644
--- a/ydb/core/testlib/test_client.h
+++ b/ydb/core/testlib/test_client.h
@@ -112,7 +112,7 @@ namespace Tests {
bool EnableConfigsDispatcher = true;
bool UseRealThreads = true;
bool EnableKqpSpilling = false;
- bool EnableYq = false;
+ bool EnableYq = false;
TDuration KeepSnapshotTimeout = TDuration::Zero();
ui64 ChangesQueueItemsLimit = 0;
ui64 ChangesQueueBytesLimit = 0;
@@ -154,7 +154,7 @@ namespace Tests {
TServerSettings& SetFeatureFlags(const NKikimrConfig::TFeatureFlags& value) { FeatureFlags = value; return *this; }
TServerSettings& SetCompactionConfig(const NKikimrConfig::TCompactionConfig& value) { CompactionConfig = value; return *this; }
TServerSettings& SetEnableDbCounters(bool value) { FeatureFlags.SetEnableDbCounters(value); return *this; }
- TServerSettings& SetEnableYq(bool value) { EnableYq = value; return *this; }
+ TServerSettings& SetEnableYq(bool value) { EnableYq = value; return *this; }
TServerSettings& SetKeepSnapshotTimeout(TDuration value) { KeepSnapshotTimeout = value; return *this; }
TServerSettings& SetChangesQueueItemsLimit(ui64 value) { ChangesQueueItemsLimit = value; return *this; }
TServerSettings& SetChangesQueueBytesLimit(ui64 value) { ChangesQueueBytesLimit = value; return *this; }
diff --git a/ydb/core/ymq/base/ut/secure_protobuf_printer_ut.cpp b/ydb/core/ymq/base/ut/secure_protobuf_printer_ut.cpp
index 3ef6b6a956..7595aeddaf 100644
--- a/ydb/core/ymq/base/ut/secure_protobuf_printer_ut.cpp
+++ b/ydb/core/ymq/base/ut/secure_protobuf_printer_ut.cpp
@@ -9,13 +9,13 @@ Y_UNIT_TEST_SUITE(SecureProtobufPrinterTest) {
{
NKikimrClient::TSqsRequest msg;
msg.MutableSendMessage()->SetMessageBody("trololo");
- UNIT_ASSERT_STRINGS_EQUAL(SecureShortUtf8DebugString(msg), "SendMessage { MessageBody: \"***\" }");
+ UNIT_ASSERT_STRINGS_EQUAL(SecureShortUtf8DebugString(msg), "SendMessage { MessageBody: \"***\" }");
}
{
NKikimrClient::TSqsResponse msg;
msg.MutableReceiveMessage()->AddMessages()->SetData("trololo");
- UNIT_ASSERT_STRINGS_EQUAL(SecureShortUtf8DebugString(msg), "ReceiveMessage { Messages { Data: \"***\" } }");
+ UNIT_ASSERT_STRINGS_EQUAL(SecureShortUtf8DebugString(msg), "ReceiveMessage { Messages { Data: \"***\" } }");
}
}
diff --git a/ydb/core/yq/libs/actors/logging/log.h b/ydb/core/yq/libs/actors/logging/log.h
index a5a938f014..7e8ff1a9c9 100644
--- a/ydb/core/yq/libs/actors/logging/log.h
+++ b/ydb/core/yq/libs/actors/logging/log.h
@@ -76,18 +76,18 @@
#define LOG_STREAMS_CHECKPOINT_COORDINATOR_INFO(logRecordStream) LOG_STREAMS_IMPL(INFO, STREAMS_CHECKPOINT_COORDINATOR, logRecordStream)
#define LOG_STREAMS_CHECKPOINT_COORDINATOR_DEBUG(logRecordStream) LOG_STREAMS_IMPL(DEBUG, STREAMS_CHECKPOINT_COORDINATOR, logRecordStream)
#define LOG_STREAMS_CHECKPOINT_COORDINATOR_TRACE(logRecordStream) LOG_STREAMS_IMPL(TRACE, STREAMS_CHECKPOINT_COORDINATOR, logRecordStream)
-
-// Component: STREAMS_CONTROL_PLANE_SERVICE.
-#define LOG_STREAMS_CONTROL_PLANE_SERVICE_EMERG(logRecordStream) LOG_STREAMS_IMPL(EMERG, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
-#define LOG_STREAMS_CONTROL_PLANE_SERVICE_ALERT(logRecordStream) LOG_STREAMS_IMPL(ALERT, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
-#define LOG_STREAMS_CONTROL_PLANE_SERVICE_CRIT(logRecordStream) LOG_STREAMS_IMPL(CRIT, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
-#define LOG_STREAMS_CONTROL_PLANE_SERVICE_ERROR(logRecordStream) LOG_STREAMS_IMPL(ERROR, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
-#define LOG_STREAMS_CONTROL_PLANE_SERVICE_WARN(logRecordStream) LOG_STREAMS_IMPL(WARN, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
-#define LOG_STREAMS_CONTROL_PLANE_SERVICE_NOTICE(logRecordStream) LOG_STREAMS_IMPL(NOTICE, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
-#define LOG_STREAMS_CONTROL_PLANE_SERVICE_INFO(logRecordStream) LOG_STREAMS_IMPL(INFO, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
-#define LOG_STREAMS_CONTROL_PLANE_SERVICE_DEBUG(logRecordStream) LOG_STREAMS_IMPL(DEBUG, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
-#define LOG_STREAMS_CONTROL_PLANE_SERVICE_TRACE(logRecordStream) LOG_STREAMS_IMPL(TRACE, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
-
+
+// Component: STREAMS_CONTROL_PLANE_SERVICE.
+#define LOG_STREAMS_CONTROL_PLANE_SERVICE_EMERG(logRecordStream) LOG_STREAMS_IMPL(EMERG, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
+#define LOG_STREAMS_CONTROL_PLANE_SERVICE_ALERT(logRecordStream) LOG_STREAMS_IMPL(ALERT, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
+#define LOG_STREAMS_CONTROL_PLANE_SERVICE_CRIT(logRecordStream) LOG_STREAMS_IMPL(CRIT, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
+#define LOG_STREAMS_CONTROL_PLANE_SERVICE_ERROR(logRecordStream) LOG_STREAMS_IMPL(ERROR, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
+#define LOG_STREAMS_CONTROL_PLANE_SERVICE_WARN(logRecordStream) LOG_STREAMS_IMPL(WARN, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
+#define LOG_STREAMS_CONTROL_PLANE_SERVICE_NOTICE(logRecordStream) LOG_STREAMS_IMPL(NOTICE, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
+#define LOG_STREAMS_CONTROL_PLANE_SERVICE_INFO(logRecordStream) LOG_STREAMS_IMPL(INFO, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
+#define LOG_STREAMS_CONTROL_PLANE_SERVICE_DEBUG(logRecordStream) LOG_STREAMS_IMPL(DEBUG, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
+#define LOG_STREAMS_CONTROL_PLANE_SERVICE_TRACE(logRecordStream) LOG_STREAMS_IMPL(TRACE, STREAMS_CONTROL_PLANE_SERVICE, logRecordStream)
+
// Component: STREAMS_GRAND_LEADER_SERVICE.
#define LOG_STREAMS_GRAND_LEADER_SERVICE_EMERG(logRecordStream) LOG_STREAMS_IMPL(EMERG, STREAMS_GRAND_LEADER_SERVICE, logRecordStream)
#define LOG_STREAMS_GRAND_LEADER_SERVICE_ALERT(logRecordStream) LOG_STREAMS_IMPL(ALERT, STREAMS_GRAND_LEADER_SERVICE, logRecordStream)
@@ -98,17 +98,17 @@
#define LOG_STREAMS_GRAND_LEADER_SERVICE_INFO(logRecordStream) LOG_STREAMS_IMPL(INFO, STREAMS_GRAND_LEADER_SERVICE, logRecordStream)
#define LOG_STREAMS_GRAND_LEADER_SERVICE_DEBUG(logRecordStream) LOG_STREAMS_IMPL(DEBUG, STREAMS_GRAND_LEADER_SERVICE, logRecordStream)
#define LOG_STREAMS_GRAND_LEADER_SERVICE_TRACE(logRecordStream) LOG_STREAMS_IMPL(TRACE, STREAMS_GRAND_LEADER_SERVICE, logRecordStream)
-
-// Component: STREAMS_META_STORAGE_SERVICE.
-#define LOG_STREAMS_META_STORAGE_SERVICE_EMERG(logRecordStream) LOG_STREAMS_IMPL(EMERG, STREAMS_META_STORAGE_SERVICE, logRecordStream)
-#define LOG_STREAMS_META_STORAGE_SERVICE_ALERT(logRecordStream) LOG_STREAMS_IMPL(ALERT, STREAMS_META_STORAGE_SERVICE, logRecordStream)
-#define LOG_STREAMS_META_STORAGE_SERVICE_CRIT(logRecordStream) LOG_STREAMS_IMPL(CRIT, STREAMS_META_STORAGE_SERVICE, logRecordStream)
-#define LOG_STREAMS_META_STORAGE_SERVICE_ERROR(logRecordStream) LOG_STREAMS_IMPL(ERROR, STREAMS_META_STORAGE_SERVICE, logRecordStream)
-#define LOG_STREAMS_META_STORAGE_SERVICE_WARN(logRecordStream) LOG_STREAMS_IMPL(WARN, STREAMS_META_STORAGE_SERVICE, logRecordStream)
-#define LOG_STREAMS_META_STORAGE_SERVICE_NOTICE(logRecordStream) LOG_STREAMS_IMPL(NOTICE, STREAMS_META_STORAGE_SERVICE, logRecordStream)
-#define LOG_STREAMS_META_STORAGE_SERVICE_INFO(logRecordStream) LOG_STREAMS_IMPL(INFO, STREAMS_META_STORAGE_SERVICE, logRecordStream)
-#define LOG_STREAMS_META_STORAGE_SERVICE_DEBUG(logRecordStream) LOG_STREAMS_IMPL(DEBUG, STREAMS_META_STORAGE_SERVICE, logRecordStream)
-#define LOG_STREAMS_META_STORAGE_SERVICE_TRACE(logRecordStream) LOG_STREAMS_IMPL(TRACE, STREAMS_META_STORAGE_SERVICE, logRecordStream)
+
+// Component: STREAMS_META_STORAGE_SERVICE.
+#define LOG_STREAMS_META_STORAGE_SERVICE_EMERG(logRecordStream) LOG_STREAMS_IMPL(EMERG, STREAMS_META_STORAGE_SERVICE, logRecordStream)
+#define LOG_STREAMS_META_STORAGE_SERVICE_ALERT(logRecordStream) LOG_STREAMS_IMPL(ALERT, STREAMS_META_STORAGE_SERVICE, logRecordStream)
+#define LOG_STREAMS_META_STORAGE_SERVICE_CRIT(logRecordStream) LOG_STREAMS_IMPL(CRIT, STREAMS_META_STORAGE_SERVICE, logRecordStream)
+#define LOG_STREAMS_META_STORAGE_SERVICE_ERROR(logRecordStream) LOG_STREAMS_IMPL(ERROR, STREAMS_META_STORAGE_SERVICE, logRecordStream)
+#define LOG_STREAMS_META_STORAGE_SERVICE_WARN(logRecordStream) LOG_STREAMS_IMPL(WARN, STREAMS_META_STORAGE_SERVICE, logRecordStream)
+#define LOG_STREAMS_META_STORAGE_SERVICE_NOTICE(logRecordStream) LOG_STREAMS_IMPL(NOTICE, STREAMS_META_STORAGE_SERVICE, logRecordStream)
+#define LOG_STREAMS_META_STORAGE_SERVICE_INFO(logRecordStream) LOG_STREAMS_IMPL(INFO, STREAMS_META_STORAGE_SERVICE, logRecordStream)
+#define LOG_STREAMS_META_STORAGE_SERVICE_DEBUG(logRecordStream) LOG_STREAMS_IMPL(DEBUG, STREAMS_META_STORAGE_SERVICE, logRecordStream)
+#define LOG_STREAMS_META_STORAGE_SERVICE_TRACE(logRecordStream) LOG_STREAMS_IMPL(TRACE, STREAMS_META_STORAGE_SERVICE, logRecordStream)
// Component: STREAMS_GRAPH_LEADER.
#define LOG_STREAMS_GRAPH_LEADER_EMERG(logRecordStream) LOG_STREAMS_IMPL(EMERG, STREAMS_GRAPH_LEADER, logRecordStream)
@@ -120,47 +120,47 @@
#define LOG_STREAMS_GRAPH_LEADER_INFO(logRecordStream) LOG_STREAMS_IMPL(INFO, STREAMS_GRAPH_LEADER, logRecordStream)
#define LOG_STREAMS_GRAPH_LEADER_DEBUG(logRecordStream) LOG_STREAMS_IMPL(DEBUG, STREAMS_GRAPH_LEADER, logRecordStream)
#define LOG_STREAMS_GRAPH_LEADER_TRACE(logRecordStream) LOG_STREAMS_IMPL(TRACE, STREAMS_GRAPH_LEADER, logRecordStream)
-
-// Component: YQ_CONTROL_PLANE_STORAGE.
-#define LOG_YQ_CONTROL_PLANE_STORAGE_EMERG(logRecordStream) LOG_STREAMS_IMPL(EMERG, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_ALERT(logRecordStream) LOG_STREAMS_IMPL(ALERT, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_CRIT(logRecordStream) LOG_STREAMS_IMPL(CRIT, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_ERROR(logRecordStream) LOG_STREAMS_IMPL(ERROR, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_WARN(logRecordStream) LOG_STREAMS_IMPL(WARN, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_NOTICE(logRecordStream) LOG_STREAMS_IMPL(NOTICE, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_INFO(logRecordStream) LOG_STREAMS_IMPL(INFO, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_DEBUG(logRecordStream) LOG_STREAMS_IMPL(DEBUG, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_TRACE(logRecordStream) LOG_STREAMS_IMPL(TRACE, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-
-
-#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_EMERG(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, EMERG, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_ALERT(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, ALERT, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_CRIT(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, CRIT, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_ERROR(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, ERROR, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_WARN(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, WARN, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_NOTICE(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, NOTICE, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_INFO(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, INFO, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_DEBUG(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, DEBUG, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_TRACE(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, TRACE, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
-
-// Component: YQ_CONTROL_PLANE_PROXY.
-#define LOG_YQ_CONTROL_PLANE_PROXY_EMERG(logRecordStream) LOG_STREAMS_IMPL(EMERG, YQ_CONTROL_PLANE_PROXY, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_PROXY_ALERT(logRecordStream) LOG_STREAMS_IMPL(ALERT, YQ_CONTROL_PLANE_PROXY, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_PROXY_CRIT(logRecordStream) LOG_STREAMS_IMPL(CRIT, YQ_CONTROL_PLANE_PROXY, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_PROXY_ERROR(logRecordStream) LOG_STREAMS_IMPL(ERROR, YQ_CONTROL_PLANE_PROXY, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_PROXY_WARN(logRecordStream) LOG_STREAMS_IMPL(WARN, YQ_CONTROL_PLANE_PROXY, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_PROXY_NOTICE(logRecordStream) LOG_STREAMS_IMPL(NOTICE, YQ_CONTROL_PLANE_PROXY, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_PROXY_INFO(logRecordStream) LOG_STREAMS_IMPL(INFO, YQ_CONTROL_PLANE_PROXY, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_PROXY_DEBUG(logRecordStream) LOG_STREAMS_IMPL(DEBUG, YQ_CONTROL_PLANE_PROXY, logRecordStream)
-#define LOG_YQ_CONTROL_PLANE_PROXY_TRACE(logRecordStream) LOG_STREAMS_IMPL(TRACE, YQ_CONTROL_PLANE_PROXY, logRecordStream)
-
-// Component: YQ_TEST_CONNECTION.
-#define LOG_YQ_TEST_CONNECTION_EMERG(logRecordStream) LOG_STREAMS_IMPL(EMERG, YQ_TEST_CONNECTION, logRecordStream)
-#define LOG_YQ_TEST_CONNECTION_ALERT(logRecordStream) LOG_STREAMS_IMPL(ALERT, YQ_TEST_CONNECTION, logRecordStream)
-#define LOG_YQ_TEST_CONNECTION_CRIT(logRecordStream) LOG_STREAMS_IMPL(CRIT, YQ_TEST_CONNECTION, logRecordStream)
-#define LOG_YQ_TEST_CONNECTION_ERROR(logRecordStream) LOG_STREAMS_IMPL(ERROR, YQ_TEST_CONNECTION, logRecordStream)
-#define LOG_YQ_TEST_CONNECTION_WARN(logRecordStream) LOG_STREAMS_IMPL(WARN, YQ_TEST_CONNECTION, logRecordStream)
-#define LOG_YQ_TEST_CONNECTION_NOTICE(logRecordStream) LOG_STREAMS_IMPL(NOTICE, YQ_TEST_CONNECTION, logRecordStream)
-#define LOG_YQ_TEST_CONNECTION_INFO(logRecordStream) LOG_STREAMS_IMPL(INFO, YQ_TEST_CONNECTION, logRecordStream)
-#define LOG_YQ_TEST_CONNECTION_DEBUG(logRecordStream) LOG_STREAMS_IMPL(DEBUG, YQ_TEST_CONNECTION, logRecordStream)
-#define LOG_YQ_TEST_CONNECTION_TRACE(logRecordStream) LOG_STREAMS_IMPL(TRACE, YQ_TEST_CONNECTION, logRecordStream)
+
+// Component: YQ_CONTROL_PLANE_STORAGE.
+#define LOG_YQ_CONTROL_PLANE_STORAGE_EMERG(logRecordStream) LOG_STREAMS_IMPL(EMERG, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_ALERT(logRecordStream) LOG_STREAMS_IMPL(ALERT, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_CRIT(logRecordStream) LOG_STREAMS_IMPL(CRIT, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_ERROR(logRecordStream) LOG_STREAMS_IMPL(ERROR, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_WARN(logRecordStream) LOG_STREAMS_IMPL(WARN, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_NOTICE(logRecordStream) LOG_STREAMS_IMPL(NOTICE, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_INFO(logRecordStream) LOG_STREAMS_IMPL(INFO, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_DEBUG(logRecordStream) LOG_STREAMS_IMPL(DEBUG, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_TRACE(logRecordStream) LOG_STREAMS_IMPL(TRACE, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+
+
+#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_EMERG(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, EMERG, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_ALERT(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, ALERT, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_CRIT(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, CRIT, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_ERROR(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, ERROR, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_WARN(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, WARN, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_NOTICE(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, NOTICE, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_INFO(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, INFO, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_DEBUG(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, DEBUG, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_STORAGE_AS_TRACE(actorSystem, logRecordStream) LOG_STREAMS_IMPL_AS(actorSystem, TRACE, YQ_CONTROL_PLANE_STORAGE, logRecordStream)
+
+// Component: YQ_CONTROL_PLANE_PROXY.
+#define LOG_YQ_CONTROL_PLANE_PROXY_EMERG(logRecordStream) LOG_STREAMS_IMPL(EMERG, YQ_CONTROL_PLANE_PROXY, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_PROXY_ALERT(logRecordStream) LOG_STREAMS_IMPL(ALERT, YQ_CONTROL_PLANE_PROXY, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_PROXY_CRIT(logRecordStream) LOG_STREAMS_IMPL(CRIT, YQ_CONTROL_PLANE_PROXY, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_PROXY_ERROR(logRecordStream) LOG_STREAMS_IMPL(ERROR, YQ_CONTROL_PLANE_PROXY, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_PROXY_WARN(logRecordStream) LOG_STREAMS_IMPL(WARN, YQ_CONTROL_PLANE_PROXY, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_PROXY_NOTICE(logRecordStream) LOG_STREAMS_IMPL(NOTICE, YQ_CONTROL_PLANE_PROXY, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_PROXY_INFO(logRecordStream) LOG_STREAMS_IMPL(INFO, YQ_CONTROL_PLANE_PROXY, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_PROXY_DEBUG(logRecordStream) LOG_STREAMS_IMPL(DEBUG, YQ_CONTROL_PLANE_PROXY, logRecordStream)
+#define LOG_YQ_CONTROL_PLANE_PROXY_TRACE(logRecordStream) LOG_STREAMS_IMPL(TRACE, YQ_CONTROL_PLANE_PROXY, logRecordStream)
+
+// Component: YQ_TEST_CONNECTION.
+#define LOG_YQ_TEST_CONNECTION_EMERG(logRecordStream) LOG_STREAMS_IMPL(EMERG, YQ_TEST_CONNECTION, logRecordStream)
+#define LOG_YQ_TEST_CONNECTION_ALERT(logRecordStream) LOG_STREAMS_IMPL(ALERT, YQ_TEST_CONNECTION, logRecordStream)
+#define LOG_YQ_TEST_CONNECTION_CRIT(logRecordStream) LOG_STREAMS_IMPL(CRIT, YQ_TEST_CONNECTION, logRecordStream)
+#define LOG_YQ_TEST_CONNECTION_ERROR(logRecordStream) LOG_STREAMS_IMPL(ERROR, YQ_TEST_CONNECTION, logRecordStream)
+#define LOG_YQ_TEST_CONNECTION_WARN(logRecordStream) LOG_STREAMS_IMPL(WARN, YQ_TEST_CONNECTION, logRecordStream)
+#define LOG_YQ_TEST_CONNECTION_NOTICE(logRecordStream) LOG_STREAMS_IMPL(NOTICE, YQ_TEST_CONNECTION, logRecordStream)
+#define LOG_YQ_TEST_CONNECTION_INFO(logRecordStream) LOG_STREAMS_IMPL(INFO, YQ_TEST_CONNECTION, logRecordStream)
+#define LOG_YQ_TEST_CONNECTION_DEBUG(logRecordStream) LOG_STREAMS_IMPL(DEBUG, YQ_TEST_CONNECTION, logRecordStream)
+#define LOG_YQ_TEST_CONNECTION_TRACE(logRecordStream) LOG_STREAMS_IMPL(TRACE, YQ_TEST_CONNECTION, logRecordStream)
diff --git a/ydb/core/yq/libs/actors/nodes_health_check.cpp b/ydb/core/yq/libs/actors/nodes_health_check.cpp
index 96e7c1c1cd..194415ddec 100644
--- a/ydb/core/yq/libs/actors/nodes_health_check.cpp
+++ b/ydb/core/yq/libs/actors/nodes_health_check.cpp
@@ -33,7 +33,7 @@ public:
TIntrusivePtr<ITimeProvider> timeProvider,
TAutoPtr<TEvents::TEvNodesHealthCheckRequest> ev,
TDynamicCounterPtr counters)
- : Sender(sender)
+ : Sender(sender)
, TimeProvider(timeProvider)
, Ev(std::move(ev))
, Counters(std::move(counters))
diff --git a/ydb/core/yq/libs/actors/nodes_manager.cpp b/ydb/core/yq/libs/actors/nodes_manager.cpp
index 62d92aec0f..aa04782be6 100644
--- a/ydb/core/yq/libs/actors/nodes_manager.cpp
+++ b/ydb/core/yq/libs/actors/nodes_manager.cpp
@@ -58,7 +58,7 @@ public:
TIntrusivePtr<ITimeProvider> timeProvider,
TIntrusivePtr<IRandomProvider> randomProvider,
const ::NYq::NCommon::TServiceCounters& serviceCounters,
- const NConfig::TPrivateApiConfig& privateApiConfig,
+ const NConfig::TPrivateApiConfig& privateApiConfig,
const ui32& icPort,
const TString& address,
const TString& tenant,
@@ -68,7 +68,7 @@ public:
, TimeProvider(timeProvider)
, RandomProvider(randomProvider)
, ServiceCounters(serviceCounters, "node_manager")
- , PrivateApiConfig(privateApiConfig)
+ , PrivateApiConfig(privateApiConfig)
, Tenant(tenant)
, MkqlInitialMemoryLimit(mkqlInitialMemoryLimit)
, YqSharedResources(yqSharedResources)
@@ -77,7 +77,7 @@ public:
, Client(
YqSharedResources->YdbDriver,
NYdb::TCommonClientSettings()
- .DiscoveryEndpoint(PrivateApiConfig.GetTaskServiceEndpoint())
+ .DiscoveryEndpoint(PrivateApiConfig.GetTaskServiceEndpoint())
.Database(PrivateApiConfig.GetTaskServiceDatabase() ? PrivateApiConfig.GetTaskServiceDatabase() : TMaybe<TString>()),
clientCounters)
@@ -92,7 +92,7 @@ public:
NActors::IActor::PassAway();
}
- void Bootstrap(const TActorContext&) {
+ void Bootstrap(const TActorContext&) {
Become(&TYqlNodesManagerActor::StateFunc);
ServiceCounters.Counters->GetCounter("EvBootstrap", true)->Inc();
LOG_I("Bootstrap STARTED");
@@ -257,7 +257,7 @@ private:
TIntrusivePtr<ITimeProvider> TimeProvider;
TIntrusivePtr<IRandomProvider> RandomProvider;
::NYq::NCommon::TServiceCounters ServiceCounters;
- NConfig::TPrivateApiConfig PrivateApiConfig;
+ NConfig::TPrivateApiConfig PrivateApiConfig;
TString Tenant;
ui64 MkqlInitialMemoryLimit;
@@ -296,7 +296,7 @@ IActor* CreateYqlNodesManager(
TIntrusivePtr<ITimeProvider> timeProvider,
TIntrusivePtr<IRandomProvider> randomProvider,
const ::NYq::NCommon::TServiceCounters& serviceCounters,
- const NConfig::TPrivateApiConfig& privateApiConfig,
+ const NConfig::TPrivateApiConfig& privateApiConfig,
const NYq::TYqSharedResources::TPtr& yqSharedResources,
const ui32& icPort,
const TString& address,
diff --git a/ydb/core/yq/libs/actors/nodes_manager.h b/ydb/core/yq/libs/actors/nodes_manager.h
index 7301219b58..751a146580 100644
--- a/ydb/core/yq/libs/actors/nodes_manager.h
+++ b/ydb/core/yq/libs/actors/nodes_manager.h
@@ -26,7 +26,7 @@ IActor* CreateYqlNodesManager(
TIntrusivePtr<ITimeProvider> timeProvider,
TIntrusivePtr<IRandomProvider> randomProvider,
const ::NYq::NCommon::TServiceCounters& serviceCounters,
- const NConfig::TPrivateApiConfig& privateApiConfig,
+ const NConfig::TPrivateApiConfig& privateApiConfig,
const NYq::TYqSharedResources::TPtr& yqSharedResources,
const ui32& icPort,
const TString& address,
diff --git a/ydb/core/yq/libs/actors/pending_fetcher.cpp b/ydb/core/yq/libs/actors/pending_fetcher.cpp
index 0095963c8f..97224caa7c 100644
--- a/ydb/core/yq/libs/actors/pending_fetcher.cpp
+++ b/ydb/core/yq/libs/actors/pending_fetcher.cpp
@@ -48,11 +48,11 @@
#include <ydb/core/yq/libs/control_plane_storage/control_plane_storage.h>
#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
#include <ydb/core/yq/libs/private_client/private_client.h>
-
+
#include <library/cpp/actors/core/log.h>
#include <ydb/library/security/util.h>
-
+
#include <util/generic/deque.h>
#include <util/generic/guid.h>
#include <util/system/hostname.h>
@@ -96,11 +96,11 @@ class TYqlPendingFetcher : public NActors::TActorBootstrapped<TYqlPendingFetcher
public:
TYqlPendingFetcher(
const NYq::TYqSharedResources::TPtr& yqSharedResources,
- const ::NYq::NConfig::TCommonConfig& commonConfig,
- const ::NYq::NConfig::TCheckpointCoordinatorConfig& checkpointCoordinatorConfig,
- const ::NYq::NConfig::TPrivateApiConfig& privateApiConfig,
- const ::NYq::NConfig::TGatewaysConfig& gatewaysConfig,
- const ::NYq::NConfig::TPingerConfig& pingerConfig,
+ const ::NYq::NConfig::TCommonConfig& commonConfig,
+ const ::NYq::NConfig::TCheckpointCoordinatorConfig& checkpointCoordinatorConfig,
+ const ::NYq::NConfig::TPrivateApiConfig& privateApiConfig,
+ const ::NYq::NConfig::TGatewaysConfig& gatewaysConfig,
+ const ::NYq::NConfig::TPingerConfig& pingerConfig,
const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry,
TIntrusivePtr<ITimeProvider> timeProvider,
TIntrusivePtr<IRandomProvider> randomProvider,
@@ -112,11 +112,11 @@ public:
const NMonitoring::TDynamicCounterPtr& clientCounters
)
: YqSharedResources(yqSharedResources)
- , CommonConfig(commonConfig)
- , CheckpointCoordinatorConfig(checkpointCoordinatorConfig)
- , PrivateApiConfig(privateApiConfig)
- , GatewaysConfig(gatewaysConfig)
- , PingerConfig(pingerConfig)
+ , CommonConfig(commonConfig)
+ , CheckpointCoordinatorConfig(checkpointCoordinatorConfig)
+ , PrivateApiConfig(privateApiConfig)
+ , GatewaysConfig(gatewaysConfig)
+ , PingerConfig(pingerConfig)
, FunctionRegistry(functionRegistry)
, TimeProvider(timeProvider)
, RandomProvider(randomProvider)
@@ -130,7 +130,7 @@ public:
, Client(
YqSharedResources->YdbDriver,
NYdb::TCommonClientSettings()
- .DiscoveryEndpoint(PrivateApiConfig.GetTaskServiceEndpoint())
+ .DiscoveryEndpoint(PrivateApiConfig.GetTaskServiceEndpoint())
.Database(PrivateApiConfig.GetTaskServiceDatabase() ? PrivateApiConfig.GetTaskServiceDatabase() : TMaybe<TString>()),
ClientCounters)
{
@@ -206,14 +206,14 @@ private:
actorSystem->Send(selfId, new TEvGetTaskInternalResponse(
wrappedResult.IsSuccess(), wrappedResult.GetIssues(), wrappedResult.GetResult())
);
- } else {
- actorSystem->Send(selfId, new TEvGetTaskInternalResponse(
+ } else {
+ actorSystem->Send(selfId, new TEvGetTaskInternalResponse(
false, TIssues{{TIssue{"grpc private api result is not set for get task call"}}}, Yq::Private::GetTaskResult{})
- );
- }
+ );
+ }
});
- }
-
+ }
+
void ProcessTask(const Yq::Private::GetTaskResult& result) {
for (const auto& task : result.tasks()) {
RunTask(task);
@@ -238,8 +238,8 @@ private:
FunctionRegistry, RandomProvider,
ModuleResolver, ModuleResolver->GetNextUniqueId(),
DqCompFactory, PqCmConnections,
- CommonConfig, CheckpointCoordinatorConfig,
- PrivateApiConfig, GatewaysConfig, PingerConfig,
+ CommonConfig, CheckpointCoordinatorConfig,
+ PrivateApiConfig, GatewaysConfig, PingerConfig,
task.text(), task.scope(), task.user_token(),
DatabaseResolver, task.query_id().value(),
task.user_id(), Guid, task.generation(),
@@ -249,7 +249,7 @@ private:
serviceAccounts,
task.query_type(),
task.execute_mode(),
- GetEntityIdAsString(CommonConfig.GetIdsPrefix(), EEntityType::RESULT),
+ GetEntityIdAsString(CommonConfig.GetIdsPrefix(), EEntityType::RESULT),
task.state_load_mode(),
task.disposition(),
task.status(),
@@ -276,11 +276,11 @@ private:
);
NYq::TYqSharedResources::TPtr YqSharedResources;
- NYq::NConfig::TCommonConfig CommonConfig;
- NYq::NConfig::TCheckpointCoordinatorConfig CheckpointCoordinatorConfig;
- NYq::NConfig::TPrivateApiConfig PrivateApiConfig;
- NYq::NConfig::TGatewaysConfig GatewaysConfig;
- NYq::NConfig::TPingerConfig PingerConfig;
+ NYq::NConfig::TCommonConfig CommonConfig;
+ NYq::NConfig::TCheckpointCoordinatorConfig CheckpointCoordinatorConfig;
+ NYq::NConfig::TPrivateApiConfig PrivateApiConfig;
+ NYq::NConfig::TGatewaysConfig GatewaysConfig;
+ NYq::NConfig::TPingerConfig PingerConfig;
const NKikimr::NMiniKQL::IFunctionRegistry* FunctionRegistry;
TIntrusivePtr<ITimeProvider> TimeProvider;
@@ -310,11 +310,11 @@ private:
NActors::IActor* CreatePendingFetcher(
const NYq::TYqSharedResources::TPtr& yqSharedResources,
- const ::NYq::NConfig::TCommonConfig& commonConfig,
- const ::NYq::NConfig::TCheckpointCoordinatorConfig& checkpointCoordinatorConfig,
- const ::NYq::NConfig::TPrivateApiConfig& privateApiConfig,
- const ::NYq::NConfig::TGatewaysConfig& gatewaysConfig,
- const ::NYq::NConfig::TPingerConfig& pingerConfig,
+ const ::NYq::NConfig::TCommonConfig& commonConfig,
+ const ::NYq::NConfig::TCheckpointCoordinatorConfig& checkpointCoordinatorConfig,
+ const ::NYq::NConfig::TPrivateApiConfig& privateApiConfig,
+ const ::NYq::NConfig::TGatewaysConfig& gatewaysConfig,
+ const ::NYq::NConfig::TPingerConfig& pingerConfig,
const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry,
TIntrusivePtr<ITimeProvider> timeProvider,
TIntrusivePtr<IRandomProvider> randomProvider,
@@ -327,11 +327,11 @@ NActors::IActor* CreatePendingFetcher(
{
return new TYqlPendingFetcher(
yqSharedResources,
- commonConfig,
- checkpointCoordinatorConfig,
- privateApiConfig,
- gatewaysConfig,
- pingerConfig,
+ commonConfig,
+ checkpointCoordinatorConfig,
+ privateApiConfig,
+ gatewaysConfig,
+ pingerConfig,
functionRegistry,
timeProvider,
randomProvider,
diff --git a/ydb/core/yq/libs/actors/pinger.cpp b/ydb/core/yq/libs/actors/pinger.cpp
index 55fc80d6a0..8b8e4f7585 100644
--- a/ydb/core/yq/libs/actors/pinger.cpp
+++ b/ydb/core/yq/libs/actors/pinger.cpp
@@ -127,36 +127,36 @@ class TPingerActor : public NActors::TActorBootstrapped<TPingerActor> {
TRetryState RetryState;
};
- struct TConfig {
- NConfig::TPingerConfig Proto;
- TDuration PingPeriod = TDuration::Seconds(15);
-
- TConfig(const NConfig::TPingerConfig& config)
- : Proto(config)
- {
+ struct TConfig {
+ NConfig::TPingerConfig Proto;
+ TDuration PingPeriod = TDuration::Seconds(15);
+
+ TConfig(const NConfig::TPingerConfig& config)
+ : Proto(config)
+ {
if (Proto.GetPingPeriod()) {
Y_VERIFY(TDuration::TryParse(Proto.GetPingPeriod(), PingPeriod));
}
- }
- };
-
+ }
+ };
+
public:
TPingerActor(
const TScope& scope,
const TString& userId,
const TString& id,
const TString& ownerId,
- const TPrivateClient& client,
- const TActorId parent,
+ const TPrivateClient& client,
+ const TActorId parent,
const NConfig::TPingerConfig& config,
const TInstant& deadline)
- : Config(config)
- , Scope(scope)
+ : Config(config)
+ , Scope(scope)
, UserId(userId)
, Id(id)
, OwnerId(ownerId)
, Client(client)
- , Parent(parent)
+ , Parent(parent)
, Deadline(deadline)
{
}
@@ -177,7 +177,7 @@ private:
hFunc(NActors::TEvents::TEvWakeup, Wakeup)
hFunc(TEvPingResponse, Handle)
hFunc(TEvents::TEvForwardPingRequest, Handle)
- )
+ )
void PassAway() override {
LOG_D("Stop Pinger");
@@ -313,11 +313,11 @@ private:
if (success) {
LOG_D("Ping response success: " << ev->Get()->Result.GetResult());
StartLeaseTime = now;
- auto action = ev->Get()->Action;
+ auto action = ev->Get()->Action;
if (action != YandexQuery::QUERY_ACTION_UNSPECIFIED && !Finishing) {
LOG_D("Query action: " << YandexQuery::QueryAction_Name(action));
SendQueryAction(action);
- }
+ }
if (continueLeaseRequest) {
ScheduleNextPing();
@@ -357,7 +357,7 @@ private:
reqInfo.Requested = true;
Y_VERIFY(!retry || reqInfo.RetryState);
if (!retry && !reqInfo.RetryState) {
- reqInfo.RetryState.Init(TActivationContext::Now(), StartLeaseTime, Config.PingPeriod);
+ reqInfo.RetryState.Init(TActivationContext::Now(), StartLeaseTime, Config.PingPeriod);
}
LOG_D((retry ? "Retry forward" : "Forward") << " request Private::PingTask");
@@ -372,7 +372,7 @@ private:
Requested = true;
if (!retry) {
- RetryState.Init(TActivationContext::Now(), StartLeaseTime, Config.PingPeriod);
+ RetryState.Init(TActivationContext::Now(), StartLeaseTime, Config.PingPeriod);
}
Ping(Yq::Private::PingTaskRequest(), ContinueLeaseRequestCookie);
}
@@ -412,8 +412,8 @@ private:
RetryForwardPingRequestWakeupTag,
};
- TConfig Config;
-
+ TConfig Config;
+
const TScope Scope;
const TString UserId;
const TString Id;
@@ -423,7 +423,7 @@ private:
bool Requested = false;
TInstant StartLeaseTime;
TRetryState RetryState;
- const TActorId Parent;
+ const TActorId Parent;
const TInstant Deadline;
std::deque<TForwardPingReqInfo> ForwardRequests;
@@ -438,8 +438,8 @@ IActor* CreatePingerActor(
const TString& userId,
const TString& id,
const TString& ownerId,
- const TPrivateClient& client,
- const TActorId parent,
+ const TPrivateClient& client,
+ const TActorId parent,
const NConfig::TPingerConfig& config,
const TInstant& deadline)
{
@@ -448,8 +448,8 @@ IActor* CreatePingerActor(
userId,
id,
ownerId,
- client,
- parent,
+ client,
+ parent,
config,
deadline);
}
diff --git a/ydb/core/yq/libs/actors/proxy.h b/ydb/core/yq/libs/actors/proxy.h
index 442d29ac44..64235c96c0 100644
--- a/ydb/core/yq/libs/actors/proxy.h
+++ b/ydb/core/yq/libs/actors/proxy.h
@@ -35,11 +35,11 @@ NActors::TActorId MakeYqlAnalyticsFetcherId(ui32 nodeId);
NActors::IActor* CreatePendingFetcher(
const NYq::TYqSharedResources::TPtr& yqSharedResources,
- const ::NYq::NConfig::TCommonConfig& commonConfig,
- const ::NYq::NConfig::TCheckpointCoordinatorConfig& checkpointCoordinatorConfig,
- const ::NYq::NConfig::TPrivateApiConfig& privateApiConfig,
- const ::NYq::NConfig::TGatewaysConfig& gatewaysConfig,
- const ::NYq::NConfig::TPingerConfig& pingerConfig,
+ const ::NYq::NConfig::TCommonConfig& commonConfig,
+ const ::NYq::NConfig::TCheckpointCoordinatorConfig& checkpointCoordinatorConfig,
+ const ::NYq::NConfig::TPrivateApiConfig& privateApiConfig,
+ const ::NYq::NConfig::TGatewaysConfig& gatewaysConfig,
+ const ::NYq::NConfig::TPingerConfig& pingerConfig,
const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry,
TIntrusivePtr<ITimeProvider> timeProvider,
TIntrusivePtr<IRandomProvider> randomProvider,
@@ -61,14 +61,14 @@ struct TResultId {
int SetId;
TString HistoryId;
TString Owner;
- TString CloudId;
+ TString CloudId;
};
NActors::IActor* CreateResultWriter(
const NYdb::TDriver& driver,
const NActors::TActorId& executerId,
const TString& resultType,
- const NConfig::TPrivateApiConfig& privateApiConfig,
+ const NConfig::TPrivateApiConfig& privateApiConfig,
const TResultId& resultId,
const TVector<TString>& columns,
const TString& traceId,
@@ -82,7 +82,7 @@ NActors::IActor* CreatePingerActor(
const TString& id,
const TString& owner,
const NYq::TPrivateClient& client,
- const NActors::TActorId parent,
+ const NActors::TActorId parent,
const NConfig::TPingerConfig& config,
const TInstant& deadline);
diff --git a/ydb/core/yq/libs/actors/proxy_private.cpp b/ydb/core/yq/libs/actors/proxy_private.cpp
index f852894578..59b4b3c154 100644
--- a/ydb/core/yq/libs/actors/proxy_private.cpp
+++ b/ydb/core/yq/libs/actors/proxy_private.cpp
@@ -33,9 +33,9 @@ public:
TIntrusivePtr<ITimeProvider> timeProvider,
TIntrusivePtr<IRandomProvider> randomProvider,
NMonitoring::TDynamicCounterPtr counters,
- const NConfig::TTokenAccessorConfig& tokenAccessorConfig)
- : TokenAccessorConfig(tokenAccessorConfig)
- , TimeProvider(timeProvider)
+ const NConfig::TTokenAccessorConfig& tokenAccessorConfig)
+ : TokenAccessorConfig(tokenAccessorConfig)
+ , TimeProvider(timeProvider)
, RandomProvider(randomProvider)
, Counters(counters->GetSubgroup("subsystem", "private_api"))
{ }
@@ -56,14 +56,14 @@ private:
Counters->GetCounter("EvPingTaskRequest", true)->Inc();
Register(
- CreatePingTaskRequestActor(ev->Sender, TimeProvider, ev->Release(), Counters),
+ CreatePingTaskRequestActor(ev->Sender, TimeProvider, ev->Release(), Counters),
NActors::TMailboxType::HTSwap, ctx.SelfID.PoolID());
}
void Handle(TEvents::TEvGetTaskRequest::TPtr& ev, const TActorContext& ctx) {
Counters->GetCounter("EvGetTaskRequest", true)->Inc();
Register(
- CreateGetTaskRequestActor(ev->Sender, TokenAccessorConfig, TimeProvider, ev->Release(), Counters),
+ CreateGetTaskRequestActor(ev->Sender, TokenAccessorConfig, TimeProvider, ev->Release(), Counters),
NActors::TMailboxType::HTSwap, ctx.SelfID.PoolID());
}
@@ -71,7 +71,7 @@ private:
Counters->GetCounter("EvWriteTaskResultRequest", true)->Inc();
Register(
- CreateWriteTaskResultRequestActor(ev->Sender, TimeProvider, ev->Release(), Counters),
+ CreateWriteTaskResultRequestActor(ev->Sender, TimeProvider, ev->Release(), Counters),
NActors::TMailboxType::HTSwap, ctx.SelfID.PoolID());
}
@@ -79,7 +79,7 @@ private:
Counters->GetCounter("EvNodesHealthCheckRequest", true)->Inc();
Register(
- CreateNodesHealthCheckActor(ev->Sender, TimeProvider, ev->Release(), Counters),
+ CreateNodesHealthCheckActor(ev->Sender, TimeProvider, ev->Release(), Counters),
NActors::TMailboxType::HTSwap, ctx.SelfID.PoolID());
}
@@ -98,7 +98,7 @@ private:
}
private:
- const NConfig::TTokenAccessorConfig TokenAccessorConfig;
+ const NConfig::TTokenAccessorConfig TokenAccessorConfig;
TIntrusivePtr<ITimeProvider> TimeProvider;
TIntrusivePtr<IRandomProvider> RandomProvider;
NMonitoring::TDynamicCounterPtr Counters;
@@ -113,8 +113,8 @@ IActor* CreateYqlAnalyticsPrivateProxy(
TIntrusivePtr<ITimeProvider> timeProvider,
TIntrusivePtr<IRandomProvider> randomProvider,
NMonitoring::TDynamicCounterPtr counters,
- const NConfig::TTokenAccessorConfig& tokenAccessorConfig) {
- return new TYqlAnalyticsPrivateProxy(timeProvider, randomProvider, counters, tokenAccessorConfig);
+ const NConfig::TTokenAccessorConfig& tokenAccessorConfig) {
+ return new TYqlAnalyticsPrivateProxy(timeProvider, randomProvider, counters, tokenAccessorConfig);
}
} // namespace NYq
diff --git a/ydb/core/yq/libs/actors/proxy_private.h b/ydb/core/yq/libs/actors/proxy_private.h
index f5378ebab8..9457597707 100644
--- a/ydb/core/yq/libs/actors/proxy_private.h
+++ b/ydb/core/yq/libs/actors/proxy_private.h
@@ -26,7 +26,7 @@ NActors::IActor* CreateYqlAnalyticsPrivateProxy(
TIntrusivePtr<ITimeProvider> timeProvider,
TIntrusivePtr<IRandomProvider> randomProvider,
NMonitoring::TDynamicCounterPtr counters,
- const NConfig::TTokenAccessorConfig& tockenAccessorConfig
+ const NConfig::TTokenAccessorConfig& tockenAccessorConfig
);
NActors::IActor* CreatePingTaskRequestActor(
@@ -38,7 +38,7 @@ NActors::IActor* CreatePingTaskRequestActor(
NActors::IActor* CreateGetTaskRequestActor(
const NActors::TActorId& sender,
- const NConfig::TTokenAccessorConfig& tockenAccessorConfig,
+ const NConfig::TTokenAccessorConfig& tockenAccessorConfig,
TIntrusivePtr<ITimeProvider> timeProvider,
TAutoPtr<TEvents::TEvGetTaskRequest> ev,
NMonitoring::TDynamicCounterPtr counters
diff --git a/ydb/core/yq/libs/actors/result_writer.cpp b/ydb/core/yq/libs/actors/result_writer.cpp
index d51b8aae9f..9df3843598 100644
--- a/ydb/core/yq/libs/actors/result_writer.cpp
+++ b/ydb/core/yq/libs/actors/result_writer.cpp
@@ -19,7 +19,7 @@
#include <ydb/core/yq/libs/control_plane_storage/control_plane_storage.h>
#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
#include <ydb/core/yq/libs/private_client/private_client.h>
-
+
#define LOG_E(stream) \
LOG_ERROR_S(*TlsActivationContext, NKikimrServices::YQL_PROXY, "Writer: " << TraceId << ": " << stream)
#define LOG_I(stream) \
@@ -39,7 +39,7 @@ public:
const NYdb::TDriver& driver,
const NActors::TActorId& executerId,
const TString& resultType,
- const NConfig::TPrivateApiConfig& privateApiConfig,
+ const NConfig::TPrivateApiConfig& privateApiConfig,
const TResultId& resultId,
const TVector<TString>& columns,
const TString& traceId,
@@ -53,7 +53,7 @@ public:
, Client(
driver,
NYdb::TCommonClientSettings()
- .DiscoveryEndpoint(privateApiConfig.GetTaskServiceEndpoint())
+ .DiscoveryEndpoint(privateApiConfig.GetTaskServiceEndpoint())
.Database(privateApiConfig.GetTaskServiceDatabase() ? privateApiConfig.GetTaskServiceDatabase(): TMaybe<TString>()),
clientCounters)
{ }
@@ -73,8 +73,8 @@ private:
HFunc(NDq::TEvDqCompute::TEvChannelData, OnChannelData)
HFunc(TEvReadyState, OnReadyState);
HFunc(TEvQueryResponse, OnQueryResult);
-
- hFunc(NYq::TEvControlPlaneStorage::TEvWriteResultDataResponse, HandleResponse);
+
+ hFunc(NYq::TEvControlPlaneStorage::TEvWriteResultDataResponse, HandleResponse);
)
void PassAway() {
@@ -120,29 +120,29 @@ private:
void OnReadyState(TEvReadyState::TPtr&, const TActorContext&) { }
- void HandleResponse(NYq::TEvControlPlaneStorage::TEvWriteResultDataResponse::TPtr& ev) {
- const auto& issues = ev->Get()->Issues;
+ void HandleResponse(NYq::TEvControlPlaneStorage::TEvWriteResultDataResponse::TPtr& ev) {
+ const auto& issues = ev->Get()->Issues;
auto it = Requests.find(ev->Get()->RequestId);
if (issues) {
SendIssuesAndSetErrorFlag(issues);
return;
}
- if (it == Requests.end()) {
- HasError = true;
+ if (it == Requests.end()) {
+ HasError = true;
auto req = MakeHolder<TEvDqFailure>(TIssue("Unknown RequestId").SetCode(NYql::DEFAULT_ERROR, TSeverityIds::S_ERROR), /*retriable=*/ false, /*needFallback=*/false);
Send(ExecuterId, req.Release());
- return;
- }
- auto& request = it->second;
+ return;
+ }
+ auto& request = it->second;
if (request.MessagesNum > 0)
--request.MessagesNum;
-
+
--InflightCounter;
if (request.MessagesNum == 0) {
FreeSpace += request.Size;
-
+
if (FreeSpace > 0) {
auto res = MakeHolder<NDq::TEvDqCompute::TEvChannelDataAck>();
res->Record.SetChannelId(request.ChannelId);
@@ -166,8 +166,8 @@ private:
MaybeFinish();
}
SendResult(); // Send remaining rows
- }
-
+ }
+
void StopChannel(NDq::TEvDqCompute::TEvChannelData::TPtr& ev) {
auto res = MakeHolder<NDq::TEvDqCompute::TEvChannelDataAck>();
res->Record.SetChannelId(ev->Get()->Record.GetChannelData().GetChannelId());
@@ -251,9 +251,9 @@ private:
return;
}
- ui64 startRowIndex = RowIndex;
+ ui64 startRowIndex = RowIndex;
RowIndex += resultSet.rows().size();
-
+
auto& request = Requests[Cookie];
request.Sender = ev->Sender;
request.ChannelId = ev->Get()->Record.GetChannelData().GetChannelId();
@@ -358,7 +358,7 @@ NActors::IActor* CreateResultWriter(
const NYdb::TDriver& driver,
const NActors::TActorId& executerId,
const TString& resultType,
- const NConfig::TPrivateApiConfig& privateApiConfig,
+ const NConfig::TPrivateApiConfig& privateApiConfig,
const TResultId& resultId,
const TVector<TString>& columns,
const TString& traceId,
diff --git a/ydb/core/yq/libs/actors/run_actor.cpp b/ydb/core/yq/libs/actors/run_actor.cpp
index 5549f8f254..a414104621 100644
--- a/ydb/core/yq/libs/actors/run_actor.cpp
+++ b/ydb/core/yq/libs/actors/run_actor.cpp
@@ -63,7 +63,7 @@
#include <ydb/core/yq/libs/control_plane_storage/control_plane_storage.h>
#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
#include <google/protobuf/util/time_util.h>
-
+
#include <util/string/split.h>
#include <ydb/core/yq/libs/checkpointing/checkpoint_coordinator.h>
#include <ydb/core/yq/libs/checkpointing_common/defs.h>
@@ -128,10 +128,10 @@ public:
const ::NYq::NCommon::TServiceCounters& serviceCounters
, TRunActorParams&& params)
: Params(std::move(params))
- , CreatedAt(TInstant::Now())
+ , CreatedAt(TInstant::Now())
, ServiceCounters(serviceCounters)
, QueryCounters(serviceCounters)
- , EnableCheckpointCoordinator(Params.QueryType == YandexQuery::QueryContent::STREAMING && Params.CheckpointCoordinatorConfig.GetEnabled())
+ , EnableCheckpointCoordinator(Params.QueryType == YandexQuery::QueryContent::STREAMING && Params.CheckpointCoordinatorConfig.GetEnabled())
, MaxTasksPerOperation(Params.CommonConfig.GetMaxTasksPerOperation() ? Params.CommonConfig.GetMaxTasksPerOperation() : 40)
{
}
@@ -150,12 +150,12 @@ public:
TPrivateClient(
Params.Driver,
NYdb::TCommonClientSettings()
- .DiscoveryEndpoint(Params.PrivateApiConfig.GetTaskServiceEndpoint())
- .EnableSsl(Params.PrivateApiConfig.GetSecureTaskService())
+ .DiscoveryEndpoint(Params.PrivateApiConfig.GetTaskServiceEndpoint())
+ .EnableSsl(Params.PrivateApiConfig.GetSecureTaskService())
.AuthToken(Params.AuthToken)
.Database(Params.PrivateApiConfig.GetTaskServiceDatabase() ? Params.PrivateApiConfig.GetTaskServiceDatabase() : TMaybe<TString>()),
Params.ClientCounters),
- SelfId(),
+ SelfId(),
Params.PingerConfig,
Params.Deadline
));
@@ -344,9 +344,9 @@ private:
default:
Abort(TStringBuilder() << "Unknown query action: " << YandexQuery::QueryAction_Name(Action), YandexQuery::QueryMeta::FAILED);
break;
- }
- }
-
+ }
+ }
+
void CheckForConsumers() {
struct TTopicIndependentConsumers {
struct TTopicIndependentConsumer {
@@ -583,7 +583,7 @@ private:
i64 Min;
i64 Max;
i64 Sum;
- void Write(NYson::TYsonWriter& writer) {
+ void Write(NYson::TYsonWriter& writer) {
writer.OnBeginMap();
if (Children.empty()) {
writer.OnKeyedItem("sum");
@@ -599,7 +599,7 @@ private:
} else {
for (auto& [name, child]: Children) {
writer.OnKeyedItem(name);
- child.Write(writer);
+ child.Write(writer);
}
}
writer.OnEndMap();
@@ -640,7 +640,7 @@ private:
}
NYson::TYsonWriter writer(&out);
- statistics.Write(writer);
+ statistics.Write(writer);
return out.Str();
}
@@ -831,16 +831,16 @@ private:
}
void PrepareQueryCounters() {
- const TVector<TString> path = StringSplitter(Params.Scope.ToString()).Split('/').SkipEmpty(); // yandexcloud://{folder_id}
- const TString folderId = path.size() == 2 && path.front().StartsWith(NYdb::NYq::TScope::YandexCloudScopeSchema)
- ? path.back() : TString{};
-
+ const TVector<TString> path = StringSplitter(Params.Scope.ToString()).Split('/').SkipEmpty(); // yandexcloud://{folder_id}
+ const TString folderId = path.size() == 2 && path.front().StartsWith(NYdb::NYq::TScope::YandexCloudScopeSchema)
+ ? path.back() : TString{};
+
QueryCounters = ServiceCounters;
- PublicCountersParent = ServiceCounters.PublicCounters;
+ PublicCountersParent = ServiceCounters.PublicCounters;
- if (Params.CloudId && folderId) {
- PublicCountersParent = PublicCountersParent->GetSubgroup("cloud_id", Params.CloudId)->GetSubgroup("folder_id", folderId);
+ if (Params.CloudId && folderId) {
+ PublicCountersParent = PublicCountersParent->GetSubgroup("cloud_id", Params.CloudId)->GetSubgroup("folder_id", folderId);
}
QueryCounters.PublicCounters = PublicCountersParent->GetSubgroup("query_id",
Params.Automatic ? (Params.QueryName ? Params.QueryName : "automatic") : Params.QueryId);
@@ -858,9 +858,9 @@ private:
dqConfiguration->FreezeDefaults();
dqConfiguration->FallbackPolicy = "never";
- ExecuterId = NActors::TActivationContext::Register(NYql::NDq::MakeDqExecuter(MakeYqlNodesManagerId(), SelfId(), Params.QueryId, "", dqConfiguration, ServiceCounters.Counters, TInstant::Now(), EnableCheckpointCoordinator));
+ ExecuterId = NActors::TActivationContext::Register(NYql::NDq::MakeDqExecuter(MakeYqlNodesManagerId(), SelfId(), Params.QueryId, "", dqConfiguration, ServiceCounters.Counters, TInstant::Now(), EnableCheckpointCoordinator));
- NActors::TActorId resultId;
+ NActors::TActorId resultId;
if (dqGraphParams.GetResultType()) {
TResultId writerResultId;
{
@@ -883,7 +883,7 @@ private:
}
ControlId = NActors::TActivationContext::Register(NYql::MakeTaskController(SessionId, ExecuterId, resultId, dqConfiguration, QueryCounters, TDuration::Seconds(3)).Release());
- if (EnableCheckpointCoordinator) {
+ if (EnableCheckpointCoordinator) {
CheckpointCoordinatorId = NActors::TActivationContext::Register(MakeCheckpointCoordinator(
::NYq::TCoordinatorId(Params.QueryId + "-" + ToString(DqGraphIndex), Params.PreviousQueryRevision),
ControlId,
@@ -928,7 +928,7 @@ private:
attr = dqSettings.Add();
attr->SetName("_TableTimeout");
attr->SetValue("0");
-
+
attr = dqSettings.Add();
attr->SetName("_LiteralTimeout");
attr->SetValue("0");
@@ -946,39 +946,39 @@ private:
}
void AddClustersFromConfig(NYql::TGatewaysConfig& gatewaysConfig, THashMap<TString, TString>& clusters) const {
- for (const auto& pq : Params.GatewaysConfig.GetPq().GetClusterMapping()) {
- auto& clusterCfg = *gatewaysConfig.MutablePq()->AddClusterMapping();
- clusterCfg = pq;
- clusters.emplace(clusterCfg.GetName(), PqProviderName);
- }
-
- for (const auto& solomon : Params.GatewaysConfig.GetSolomon().GetClusterMapping()) {
- auto& clusterCfg = *gatewaysConfig.MutableSolomon()->AddClusterMapping();
- clusterCfg = solomon;
- clusters.emplace(clusterCfg.GetName(), SolomonProviderName);
- }
+ for (const auto& pq : Params.GatewaysConfig.GetPq().GetClusterMapping()) {
+ auto& clusterCfg = *gatewaysConfig.MutablePq()->AddClusterMapping();
+ clusterCfg = pq;
+ clusters.emplace(clusterCfg.GetName(), PqProviderName);
+ }
+
+ for (const auto& solomon : Params.GatewaysConfig.GetSolomon().GetClusterMapping()) {
+ auto& clusterCfg = *gatewaysConfig.MutableSolomon()->AddClusterMapping();
+ clusterCfg = solomon;
+ clusters.emplace(clusterCfg.GetName(), SolomonProviderName);
+ }
}
YandexQuery::QueryMeta::ComputeStatus GetFinishStatus(bool isOk) const {
- if (isOk) {
- return YandexQuery::QueryMeta::COMPLETED;
- }
-
- switch (Action) {
- case YandexQuery::PAUSE:
- case YandexQuery::PAUSE_GRACEFULLY:
- case YandexQuery::ABORT:
- case YandexQuery::ABORT_GRACEFULLY:
- return YandexQuery::QueryMeta::ABORTED_BY_USER;
- case YandexQuery::RESUME:
- return YandexQuery::QueryMeta::ABORTED_BY_SYSTEM;
- case YandexQuery::QUERY_ACTION_UNSPECIFIED:
- case YandexQuery::QueryAction_INT_MIN_SENTINEL_DO_NOT_USE_:
- case YandexQuery::QueryAction_INT_MAX_SENTINEL_DO_NOT_USE_:
- return YandexQuery::QueryMeta::FAILED;
- }
+ if (isOk) {
+ return YandexQuery::QueryMeta::COMPLETED;
+ }
+
+ switch (Action) {
+ case YandexQuery::PAUSE:
+ case YandexQuery::PAUSE_GRACEFULLY:
+ case YandexQuery::ABORT:
+ case YandexQuery::ABORT_GRACEFULLY:
+ return YandexQuery::QueryMeta::ABORTED_BY_USER;
+ case YandexQuery::RESUME:
+ return YandexQuery::QueryMeta::ABORTED_BY_SYSTEM;
+ case YandexQuery::QUERY_ACTION_UNSPECIFIED:
+ case YandexQuery::QueryAction_INT_MIN_SENTINEL_DO_NOT_USE_:
+ case YandexQuery::QueryAction_INT_MAX_SENTINEL_DO_NOT_USE_:
+ return YandexQuery::QueryMeta::FAILED;
+ }
}
-
+
YandexQuery::QueryMeta::ComputeStatus GetFinalizingStatus() { // Status before final. "*ING" one.
switch (FinalQueryStatus) {
case YandexQuery::QueryMeta_ComputeStatus_QueryMeta_ComputeStatus_INT_MIN_SENTINEL_DO_NOT_USE_:
@@ -1120,8 +1120,8 @@ private:
AddClustersFromConfig(gatewaysConfig, clusters);
AddSystemClusters(gatewaysConfig, clusters, Params.AuthToken);
AddClustersFromConnections(YqConnections,
- Params.CommonConfig.GetUseBearerForYdb(),
- Params.CommonConfig.GetObjectStorageEndpoint(),
+ Params.CommonConfig.GetUseBearerForYdb(),
+ Params.CommonConfig.GetObjectStorageEndpoint(),
Params.AuthToken,
Params.AccountIdSignatures,
// out params:
@@ -1130,7 +1130,7 @@ private:
TVector<TDataProviderInitializer> dataProvidersInit;
const auto dbResolver = std::make_shared<TDatabaseAsyncResolverWithMeta>(TDatabaseAsyncResolverWithMeta(NActors::TActivationContext::ActorSystem(), Params.DatabaseResolver,
- Params.CommonConfig.GetYdbMvpCloudEndpoint(), Params.CommonConfig.GetMdbGateway(), Params.CommonConfig.GetMdbTransformHost(), Params.QueryId, Params.AuthToken, Params.AccountIdSignatures, Connections));
+ Params.CommonConfig.GetYdbMvpCloudEndpoint(), Params.CommonConfig.GetMdbGateway(), Params.CommonConfig.GetMdbTransformHost(), Params.QueryId, Params.AuthToken, Params.AccountIdSignatures, Connections));
{
// TBD: move init to better place
QueryStateUpdateRequest.set_scope(Params.Scope.ToString());
@@ -1178,8 +1178,8 @@ private:
<< Params.QueryId << '#'
<< Params.ResultId << '#'
<< Params.Scope.ToString() << '#'
- << Params.Owner << '#'
- << Params.CloudId;
+ << Params.Owner << '#'
+ << Params.CloudId;
Program = progFactory.Create("-stdin-", Params.Sql, SessionId);
Program->EnableResultPosition();
@@ -1317,7 +1317,7 @@ private:
private:
TRunActorParams Params;
- THashMap<TString, YandexQuery::Connection> YqConnections;
+ THashMap<TString, YandexQuery::Connection> YqConnections;
TProgramPtr Program;
TIssues Issues;
@@ -1325,8 +1325,8 @@ private:
TQueryResult QueryResult;
TInstant Deadline;
TActorId Pinger;
- TInstant CreatedAt;
- YandexQuery::QueryAction Action = YandexQuery::QueryAction::QUERY_ACTION_UNSPECIFIED;
+ TInstant CreatedAt;
+ YandexQuery::QueryAction Action = YandexQuery::QueryAction::QUERY_ACTION_UNSPECIFIED;
std::vector<NYq::NProto::TGraphParams> DqGraphParams;
std::vector<i32> DqGrapResultIndices;
i32 DqGraphIndex = 0;
@@ -1338,7 +1338,7 @@ private:
TString SessionId;
::NYq::NCommon::TServiceCounters ServiceCounters;
::NYq::NCommon::TServiceCounters QueryCounters;
- bool EnableCheckpointCoordinator = false;
+ bool EnableCheckpointCoordinator = false;
bool RetryNeeded = false;
Yq::Private::PingTaskRequest QueryStateUpdateRequest;
THashMap<TString, YandexQuery::Connection> Connections; // Necessary for DbAsyncResolver
diff --git a/ydb/core/yq/libs/actors/run_actor_params.cpp b/ydb/core/yq/libs/actors/run_actor_params.cpp
index 1446cae1bb..dc53982131 100644
--- a/ydb/core/yq/libs/actors/run_actor_params.cpp
+++ b/ydb/core/yq/libs/actors/run_actor_params.cpp
@@ -13,29 +13,29 @@ TRunActorParams::TRunActorParams(
ui64 nextUniqueId,
NKikimr::NMiniKQL::TComputationNodeFactory dqCompFactory,
::NPq::NConfigurationManager::IConnections::TPtr pqCmConnections,
- const ::NYq::NConfig::TCommonConfig& commonConfig,
+ const ::NYq::NConfig::TCommonConfig& commonConfig,
const ::NYq::NConfig::TCheckpointCoordinatorConfig& checkpointCoordinatorConfig,
- const ::NYq::NConfig::TPrivateApiConfig& privateApiConfig,
- const ::NYq::NConfig::TGatewaysConfig& gatewaysConfig,
- const ::NYq::NConfig::TPingerConfig& pingerConfig,
+ const ::NYq::NConfig::TPrivateApiConfig& privateApiConfig,
+ const ::NYq::NConfig::TGatewaysConfig& gatewaysConfig,
+ const ::NYq::NConfig::TPingerConfig& pingerConfig,
const TString& sql,
const TScope& scope,
const TString& authToken,
const TActorId& databaseResolver,
const TString& queryId,
const TString& userId,
- const TString& owner,
- const int64_t previousQueryRevision,
+ const TString& owner,
+ const int64_t previousQueryRevision,
TVector<YandexQuery::Connection> connections,
TVector<YandexQuery::Binding> bindings,
NYql::ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
THashMap<TString, TString> accountIdSignatures,
YandexQuery::QueryContent::QueryType queryType,
YandexQuery::ExecuteMode executeMode,
- const TString& resultId,
+ const TString& resultId,
const YandexQuery::StateLoadMode stateLoadMode,
const YandexQuery::StreamingDisposition& streamingDisposition,
- YandexQuery::QueryMeta::ComputeStatus status,
+ YandexQuery::QueryMeta::ComputeStatus status,
const TString& cloudId,
TVector<YandexQuery::ResultSetMeta> resultSetMetas,
TVector<TString> dqGraphs,
@@ -54,11 +54,11 @@ TRunActorParams::TRunActorParams(
, NextUniqueId(nextUniqueId)
, DqCompFactory(dqCompFactory)
, PqCmConnections(std::move(pqCmConnections))
- , CommonConfig(commonConfig)
+ , CommonConfig(commonConfig)
, CheckpointCoordinatorConfig(checkpointCoordinatorConfig)
- , PrivateApiConfig(privateApiConfig)
- , GatewaysConfig(gatewaysConfig)
- , PingerConfig(pingerConfig)
+ , PrivateApiConfig(privateApiConfig)
+ , GatewaysConfig(gatewaysConfig)
+ , PingerConfig(pingerConfig)
, Sql(sql)
, Scope(scope)
, AuthToken(authToken)
@@ -66,7 +66,7 @@ TRunActorParams::TRunActorParams(
, QueryId(queryId)
, UserId(userId)
, Owner(owner)
- , PreviousQueryRevision(previousQueryRevision)
+ , PreviousQueryRevision(previousQueryRevision)
, Connections(std::move(connections))
, Bindings(std::move(bindings))
, CredentialsFactory(std::move(credentialsFactory))
@@ -74,10 +74,10 @@ TRunActorParams::TRunActorParams(
, QueryType(queryType)
, ExecuteMode(executeMode)
, ResultId(resultId)
- , StateLoadMode(stateLoadMode)
+ , StateLoadMode(stateLoadMode)
, StreamingDisposition(streamingDisposition)
, Status(status)
- , CloudId(cloudId)
+ , CloudId(cloudId)
, ResultSetMetas(std::move(resultSetMetas))
, DqGraphs(std::move(dqGraphs))
, DqGraphIndex(dqGraphIndex)
diff --git a/ydb/core/yq/libs/actors/run_actor_params.h b/ydb/core/yq/libs/actors/run_actor_params.h
index bad5c3c32b..55897164ac 100644
--- a/ydb/core/yq/libs/actors/run_actor_params.h
+++ b/ydb/core/yq/libs/actors/run_actor_params.h
@@ -27,29 +27,29 @@ struct TRunActorParams { // TODO2 : Change name
ui64 nextUniqueId,
NKikimr::NMiniKQL::TComputationNodeFactory dqCompFactory,
::NPq::NConfigurationManager::IConnections::TPtr pqCmConnections,
- const ::NYq::NConfig::TCommonConfig& commonConfig,
+ const ::NYq::NConfig::TCommonConfig& commonConfig,
const ::NYq::NConfig::TCheckpointCoordinatorConfig& checkpointCoordinatorConfig,
- const ::NYq::NConfig::TPrivateApiConfig& privateApiConfig,
- const ::NYq::NConfig::TGatewaysConfig& gatewaysConfig,
- const ::NYq::NConfig::TPingerConfig& pingerConfig,
+ const ::NYq::NConfig::TPrivateApiConfig& privateApiConfig,
+ const ::NYq::NConfig::TGatewaysConfig& gatewaysConfig,
+ const ::NYq::NConfig::TPingerConfig& pingerConfig,
const TString& sql,
const TScope& scope,
const TString& authToken,
const NActors::TActorId& databaseResolver,
const TString& queryId,
const TString& userId,
- const TString& owner,
- const int64_t previousQueryRevision,
+ const TString& owner,
+ const int64_t previousQueryRevision,
TVector<YandexQuery::Connection> connections,
TVector<YandexQuery::Binding> bindings,
NYql::ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
THashMap<TString, TString> accountIdSignatures,
YandexQuery::QueryContent::QueryType queryType,
YandexQuery::ExecuteMode executeMode,
- const TString& resultId,
+ const TString& resultId,
const YandexQuery::StateLoadMode stateLoadMode,
const YandexQuery::StreamingDisposition& streamingDisposition,
- YandexQuery::QueryMeta::ComputeStatus status,
+ YandexQuery::QueryMeta::ComputeStatus status,
const TString& cloudId,
TVector<YandexQuery::ResultSetMeta> resultSetMetas,
TVector<TString> dqGraphs,
@@ -71,13 +71,13 @@ struct TRunActorParams { // TODO2 : Change name
NYql::IModuleResolver::TPtr ModuleResolver;
ui64 NextUniqueId;
NKikimr::NMiniKQL::TComputationNodeFactory DqCompFactory;
-
+
::NPq::NConfigurationManager::IConnections::TPtr PqCmConnections;
- const ::NYq::NConfig::TCommonConfig CommonConfig;
+ const ::NYq::NConfig::TCommonConfig CommonConfig;
const ::NYq::NConfig::TCheckpointCoordinatorConfig CheckpointCoordinatorConfig;
- const ::NYq::NConfig::TPrivateApiConfig PrivateApiConfig;
- const ::NYq::NConfig::TGatewaysConfig GatewaysConfig;
- const ::NYq::NConfig::TPingerConfig PingerConfig;
+ const ::NYq::NConfig::TPrivateApiConfig PrivateApiConfig;
+ const ::NYq::NConfig::TGatewaysConfig GatewaysConfig;
+ const ::NYq::NConfig::TPingerConfig PingerConfig;
const TString Sql;
const TScope Scope;
const TString AuthToken;
@@ -85,18 +85,18 @@ struct TRunActorParams { // TODO2 : Change name
const TString QueryId;
const TString UserId;
const TString Owner;
- const int64_t PreviousQueryRevision;
- const TVector<YandexQuery::Connection> Connections;
+ const int64_t PreviousQueryRevision;
+ const TVector<YandexQuery::Connection> Connections;
const TVector<YandexQuery::Binding> Bindings;
const NYql::ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
const THashMap<TString, TString> AccountIdSignatures;
const YandexQuery::QueryContent::QueryType QueryType;
const YandexQuery::ExecuteMode ExecuteMode;
const TString ResultId;
- const YandexQuery::StateLoadMode StateLoadMode;
+ const YandexQuery::StateLoadMode StateLoadMode;
const YandexQuery::StreamingDisposition StreamingDisposition;
YandexQuery::QueryMeta::ComputeStatus Status;
- const TString CloudId;
+ const TString CloudId;
const TVector<YandexQuery::ResultSetMeta> ResultSetMetas;
const TVector<TString> DqGraphs;
const int32_t DqGraphIndex;
diff --git a/ydb/core/yq/libs/actors/task_get.cpp b/ydb/core/yq/libs/actors/task_get.cpp
index d31517aa9f..8deb162252 100644
--- a/ydb/core/yq/libs/actors/task_get.cpp
+++ b/ydb/core/yq/libs/actors/task_get.cpp
@@ -34,11 +34,11 @@ class TGetTaskRequestActor
public:
TGetTaskRequestActor(
const NActors::TActorId& sender,
- const NConfig::TTokenAccessorConfig& tokenAccessorConfig,
+ const NConfig::TTokenAccessorConfig& tokenAccessorConfig,
TIntrusivePtr<ITimeProvider> timeProvider,
TAutoPtr<TEvents::TEvGetTaskRequest> ev,
TDynamicCounterPtr counters)
- : TokenAccessorConfig(tokenAccessorConfig)
+ : TokenAccessorConfig(tokenAccessorConfig)
, Sender(sender)
, TimeProvider(timeProvider)
, Ev(std::move(ev))
@@ -47,8 +47,8 @@ public:
, RequestedMBytes(Counters->GetHistogram("RequestedMB", ExponentialHistogram(6, 2, 3)))
, StartTime(TInstant::Now())
{
- if (TokenAccessorConfig.GetHmacSecretFile()) {
- Signer = ::NYq::CreateSignerFromFile(TokenAccessorConfig.GetHmacSecretFile());
+ if (TokenAccessorConfig.GetHmacSecretFile()) {
+ Signer = ::NYq::CreateSignerFromFile(TokenAccessorConfig.GetHmacSecretFile());
}
}
@@ -92,32 +92,32 @@ public:
new NYq::TEvControlPlaneStorage::TEvGetTaskRequest(OwnerId, Host));
}
- static TString GetServiceAccountId(const YandexQuery::IamAuth& auth) {
- return auth.has_service_account()
- ? auth.service_account().id()
- : TString{};
- }
-
+ static TString GetServiceAccountId(const YandexQuery::IamAuth& auth) {
+ return auth.has_service_account()
+ ? auth.service_account().id()
+ : TString{};
+ }
+
static TString ExtractServiceAccountId(const YandexQuery::Connection& c) {
switch (c.content().setting().connection_case()) {
case YandexQuery::ConnectionSetting::kYdbDatabase: {
- return GetServiceAccountId(c.content().setting().ydb_database().auth());
+ return GetServiceAccountId(c.content().setting().ydb_database().auth());
}
case YandexQuery::ConnectionSetting::kDataStreams: {
- return GetServiceAccountId(c.content().setting().data_streams().auth());
+ return GetServiceAccountId(c.content().setting().data_streams().auth());
}
case YandexQuery::ConnectionSetting::kObjectStorage: {
- return GetServiceAccountId(c.content().setting().object_storage().auth());
+ return GetServiceAccountId(c.content().setting().object_storage().auth());
}
case YandexQuery::ConnectionSetting::kMonitoring: {
- return GetServiceAccountId(c.content().setting().monitoring().auth());
+ return GetServiceAccountId(c.content().setting().monitoring().auth());
}
case YandexQuery::ConnectionSetting::kClickhouseCluster: {
return GetServiceAccountId(c.content().setting().clickhouse_cluster().auth());
}
- // Do not replace with default. Adding a new connection should cause a compilation error
- case YandexQuery::ConnectionSetting::CONNECTION_NOT_SET:
- break;
+ // Do not replace with default. Adding a new connection should cause a compilation error
+ case YandexQuery::ConnectionSetting::CONNECTION_NOT_SET:
+ break;
}
return {};
}
@@ -203,7 +203,7 @@ private:
HFunc(NYq::TEvControlPlaneStorage::TEvGetTaskResponse, HandleResponse)
)
- const NConfig::TTokenAccessorConfig TokenAccessorConfig;
+ const NConfig::TTokenAccessorConfig TokenAccessorConfig;
const TActorId Sender;
TIntrusivePtr<ITimeProvider> TimeProvider;
TAutoPtr<TEvents::TEvGetTaskRequest> Ev;
@@ -223,13 +223,13 @@ private:
IActor* CreateGetTaskRequestActor(
const NActors::TActorId& sender,
- const NConfig::TTokenAccessorConfig& tokenAccessorConfig,
+ const NConfig::TTokenAccessorConfig& tokenAccessorConfig,
TIntrusivePtr<ITimeProvider> timeProvider,
TAutoPtr<TEvents::TEvGetTaskRequest> ev,
TDynamicCounterPtr counters) {
return new TGetTaskRequestActor(
sender,
- tokenAccessorConfig,
+ tokenAccessorConfig,
timeProvider,
std::move(ev),
counters);
diff --git a/ydb/core/yq/libs/actors/task_ping.cpp b/ydb/core/yq/libs/actors/task_ping.cpp
index 29410dccd1..245376ae77 100644
--- a/ydb/core/yq/libs/actors/task_ping.cpp
+++ b/ydb/core/yq/libs/actors/task_ping.cpp
@@ -34,7 +34,7 @@ public:
TIntrusivePtr<ITimeProvider> timeProvider,
TAutoPtr<TEvents::TEvPingTaskRequest> ev,
TDynamicCounterPtr counters)
- : Sender(sender)
+ : Sender(sender)
, TimeProvider(timeProvider)
, Ev(std::move(ev))
, Counters(std::move(counters->GetSubgroup("subsystem", "private_api")->GetSubgroup("subcomponent", "PingTask")))
@@ -147,10 +147,10 @@ private:
event->ResultSetMetas = {req.result_set_meta().begin(), req.result_set_meta().end()};
}
if (req.has_started_at()) {
- event->StartedAt = TInstant::FromValue(google::protobuf::util::TimeUtil::TimestampToMicroseconds(req.started_at()));
+ event->StartedAt = TInstant::FromValue(google::protobuf::util::TimeUtil::TimestampToMicroseconds(req.started_at()));
}
if (req.has_finished_at()) {
- event->FinishedAt = TInstant::FromValue(google::protobuf::util::TimeUtil::TimestampToMicroseconds(req.finished_at()));
+ event->FinishedAt = TInstant::FromValue(google::protobuf::util::TimeUtil::TimestampToMicroseconds(req.finished_at()));
}
event->ResignQuery = req.resign_query();
@@ -207,8 +207,8 @@ private:
auto res = MakeHolder<TEvents::TEvPingTaskResponse>();
res->Status = Ydb::StatusIds::SUCCESS;
Yq::Private::PingTaskResult result;
- result.set_action(ev->Get()->Action);
- res->Record.ConstructInPlace(result);
+ result.set_action(ev->Get()->Action);
+ res->Record.ConstructInPlace(result);
ctx.Send(Sender, res.Release());
Die(ctx);
}
diff --git a/ydb/core/yq/libs/actors/task_result_write.cpp b/ydb/core/yq/libs/actors/task_result_write.cpp
index 5919ddbaab..eda8c47e4b 100644
--- a/ydb/core/yq/libs/actors/task_result_write.cpp
+++ b/ydb/core/yq/libs/actors/task_result_write.cpp
@@ -34,7 +34,7 @@ public:
TIntrusivePtr<ITimeProvider> timeProvider,
TAutoPtr<TEvents::TEvWriteTaskResultRequest> ev,
TDynamicCounterPtr counters)
- : Sender(sender)
+ : Sender(sender)
, TimeProvider(timeProvider)
, Ev(std::move(ev))
, Counters(std::move(counters->GetSubgroup("subsystem", "private_api")->GetSubgroup("subcomponent", "WriteTaskResult")))
diff --git a/ydb/core/yq/libs/actors/ya.make b/ydb/core/yq/libs/actors/ya.make
index 3638593814..5b8900f3a5 100644
--- a/ydb/core/yq/libs/actors/ya.make
+++ b/ydb/core/yq/libs/actors/ya.make
@@ -25,12 +25,12 @@ SRCS(
PEERDIR(
library/cpp/actors/core
library/cpp/actors/interconnect
- library/cpp/json/yson
- library/cpp/monlib/dynamic_counters
- library/cpp/random_provider
- library/cpp/time_provider
- library/cpp/yson
- library/cpp/yson/node
+ library/cpp/json/yson
+ library/cpp/monlib/dynamic_counters
+ library/cpp/random_provider
+ library/cpp/time_provider
+ library/cpp/yson
+ library/cpp/yson/node
ydb/core/base
ydb/core/protos
ydb/core/yq/libs/actors/logging
diff --git a/ydb/core/yq/libs/audit/mock/yq_mock_audit_service.cpp b/ydb/core/yq/libs/audit/mock/yq_mock_audit_service.cpp
index 74f994e0df..15d5d6ad31 100644
--- a/ydb/core/yq/libs/audit/mock/yq_mock_audit_service.cpp
+++ b/ydb/core/yq/libs/audit/mock/yq_mock_audit_service.cpp
@@ -67,7 +67,7 @@ private:
}
};
-NActors::IActor* CreateMockYqAuditServiceActor(const NConfig::TAuditConfig& config) {
+NActors::IActor* CreateMockYqAuditServiceActor(const NConfig::TAuditConfig& config) {
Y_UNUSED(config);
return new TYqMockAuditServiceActor();
}
diff --git a/ydb/core/yq/libs/audit/mock/yq_mock_audit_service.h b/ydb/core/yq/libs/audit/mock/yq_mock_audit_service.h
index f00bf08959..b273710ba9 100644
--- a/ydb/core/yq/libs/audit/mock/yq_mock_audit_service.h
+++ b/ydb/core/yq/libs/audit/mock/yq_mock_audit_service.h
@@ -9,6 +9,6 @@
namespace NYq {
-NActors::IActor* CreateMockYqAuditServiceActor(const NConfig::TAuditConfig& config);
+NActors::IActor* CreateMockYqAuditServiceActor(const NConfig::TAuditConfig& config);
} // namespace NYq
diff --git a/ydb/core/yq/libs/checkpoint_storage/storage_proxy.cpp b/ydb/core/yq/libs/checkpoint_storage/storage_proxy.cpp
index 07c8d5101a..0c1050c9a0 100644
--- a/ydb/core/yq/libs/checkpoint_storage/storage_proxy.cpp
+++ b/ydb/core/yq/libs/checkpoint_storage/storage_proxy.cpp
@@ -17,10 +17,10 @@
#include <library/cpp/actors/core/actor_bootstrapped.h>
#include <library/cpp/actors/core/hfunc.h>
-#include <util/stream/file.h>
+#include <util/stream/file.h>
#include <util/string/join.h>
-#include <util/string/strip.h>
-
+#include <util/string/strip.h>
+
#define LOG_STORAGE_ASYNC_DEBUG(actorContext, stream) LOG_LOG_S(actorContext, ::NActors::NLog::PRI_DEBUG, ::NKikimrServices::STREAMS_STORAGE_SERVICE, stream);
#define LOG_STORAGE_ASYNC_INFO(actorContext, stream) LOG_LOG_S(actorContext, ::NActors::NLog::PRI_INFO, ::NKikimrServices::STREAMS_STORAGE_SERVICE, stream);
#define LOG_STORAGE_ASYNC_WARN(actorContext, stream) LOG_LOG_S(actorContext, ::NActors::NLog::PRI_WARN, ::NKikimrServices::STREAMS_STORAGE_SERVICE, stream);
@@ -34,9 +34,9 @@ namespace {
////////////////////////////////////////////////////////////////////////////////
class TStorageProxy : public TActorBootstrapped<TStorageProxy> {
- NConfig::TCheckpointCoordinatorConfig Config;
+ NConfig::TCheckpointCoordinatorConfig Config;
NConfig::TCommonConfig CommonConfig;
- NConfig::TYdbStorageConfig StorageConfig;
+ NConfig::TYdbStorageConfig StorageConfig;
TCheckpointStoragePtr CheckpointStorage;
TStateStoragePtr StateStorage;
TActorId ActorGC;
@@ -44,7 +44,7 @@ class TStorageProxy : public TActorBootstrapped<TStorageProxy> {
public:
explicit TStorageProxy(
- const NConfig::TCheckpointCoordinatorConfig& config,
+ const NConfig::TCheckpointCoordinatorConfig& config,
const NConfig::TCommonConfig& commonConfig,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory);
@@ -78,34 +78,34 @@ private:
void Handle(NYql::NDq::TEvDqCompute::TEvGetTaskState::TPtr& ev);
};
-static void FillDefaultParameters(NConfig::TCheckpointCoordinatorConfig& checkpointCoordinatorConfig, NConfig::TYdbStorageConfig& ydbStorageConfig) {
- auto& limits = *checkpointCoordinatorConfig.MutableStateStorageLimits();
- if (!limits.GetMaxGraphCheckpointsSizeBytes()) {
- limits.SetMaxGraphCheckpointsSizeBytes(1099511627776);
- }
-
- if (!limits.GetMaxTaskStateSizeBytes()) {
- limits.SetMaxTaskStateSizeBytes(1099511627776);
- }
-
- if (!checkpointCoordinatorConfig.GetStorage().GetToken() && checkpointCoordinatorConfig.GetStorage().GetOAuthFile()) {
- checkpointCoordinatorConfig.MutableStorage()->SetToken(StripString(TFileInput(checkpointCoordinatorConfig.GetStorage().GetOAuthFile()).ReadAll()));
- }
-
- if (!ydbStorageConfig.GetToken() && ydbStorageConfig.GetOAuthFile()) {
- ydbStorageConfig.SetToken(StripString(TFileInput(ydbStorageConfig.GetOAuthFile()).ReadAll()));
- }
-}
-
+static void FillDefaultParameters(NConfig::TCheckpointCoordinatorConfig& checkpointCoordinatorConfig, NConfig::TYdbStorageConfig& ydbStorageConfig) {
+ auto& limits = *checkpointCoordinatorConfig.MutableStateStorageLimits();
+ if (!limits.GetMaxGraphCheckpointsSizeBytes()) {
+ limits.SetMaxGraphCheckpointsSizeBytes(1099511627776);
+ }
+
+ if (!limits.GetMaxTaskStateSizeBytes()) {
+ limits.SetMaxTaskStateSizeBytes(1099511627776);
+ }
+
+ if (!checkpointCoordinatorConfig.GetStorage().GetToken() && checkpointCoordinatorConfig.GetStorage().GetOAuthFile()) {
+ checkpointCoordinatorConfig.MutableStorage()->SetToken(StripString(TFileInput(checkpointCoordinatorConfig.GetStorage().GetOAuthFile()).ReadAll()));
+ }
+
+ if (!ydbStorageConfig.GetToken() && ydbStorageConfig.GetOAuthFile()) {
+ ydbStorageConfig.SetToken(StripString(TFileInput(ydbStorageConfig.GetOAuthFile()).ReadAll()));
+ }
+}
+
TStorageProxy::TStorageProxy(
- const NConfig::TCheckpointCoordinatorConfig& config,
+ const NConfig::TCheckpointCoordinatorConfig& config,
const NConfig::TCommonConfig& commonConfig,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory)
: Config(config)
, CommonConfig(commonConfig)
- , StorageConfig(Config.GetStorage())
- , CredentialsProviderFactory(credentialsProviderFactory) {
- FillDefaultParameters(Config, StorageConfig);
+ , StorageConfig(Config.GetStorage())
+ , CredentialsProviderFactory(credentialsProviderFactory) {
+ FillDefaultParameters(Config, StorageConfig);
}
void TStorageProxy::Bootstrap() {
@@ -115,22 +115,22 @@ void TStorageProxy::Bootstrap() {
LOG_STREAMS_STORAGE_SERVICE_ERROR("Failed to init checkpoint storage: " << issues.ToOneLineString());
}
- StateStorage = NewYdbStateStorage(StorageConfig, CredentialsProviderFactory);
+ StateStorage = NewYdbStateStorage(StorageConfig, CredentialsProviderFactory);
issues = StateStorage->Init().GetValueSync();
if (!issues.Empty()) {
LOG_STREAMS_STORAGE_SERVICE_ERROR("Failed to init checkpoint state storage: " << issues.ToOneLineString());
}
- if (Config.GetCheckpointGarbageConfig().GetEnabled()) {
- const auto& gcConfig = Config.GetCheckpointGarbageConfig();
+ if (Config.GetCheckpointGarbageConfig().GetEnabled()) {
+ const auto& gcConfig = Config.GetCheckpointGarbageConfig();
ActorGC = Register(NewGC(gcConfig, CheckpointStorage, StateStorage).release());
}
Become(&TStorageProxy::StateFunc);
LOG_STREAMS_STORAGE_SERVICE_INFO("Successfully bootstrapped TStorageProxy " << SelfId() << " with connection to "
- << StorageConfig.GetEndpoint().data()
- << ":" << StorageConfig.GetDatabase().data())
+ << StorageConfig.GetEndpoint().data()
+ << ":" << StorageConfig.GetDatabase().data())
}
void TStorageProxy::Handle(TEvCheckpointStorage::TEvRegisterCoordinatorRequest::TPtr& ev) {
@@ -163,7 +163,7 @@ void TStorageProxy::Handle(TEvCheckpointStorage::TEvCreateCheckpointRequest::TPt
coordinatorId = event->CoordinatorId,
cookie = ev->Cookie,
sender = ev->Sender,
- totalGraphCheckpointsSizeLimit = Config.GetStateStorageLimits().GetMaxGraphCheckpointsSizeBytes(),
+ totalGraphCheckpointsSizeLimit = Config.GetStateStorageLimits().GetMaxGraphCheckpointsSizeBytes(),
context = TActivationContext::AsActorContext()]
(const NThreading::TFuture<ICheckpointStorage::TGetTotalCheckpointsStateSizeResult>& resultFuture) {
auto result = resultFuture.GetValue();
@@ -257,7 +257,7 @@ void TStorageProxy::Handle(TEvCheckpointStorage::TEvCompleteCheckpointRequest::T
coordinatorId = event->CoordinatorId,
cookie = ev->Cookie,
sender = ev->Sender,
- gcEnabled = Config.GetCheckpointGarbageConfig().GetEnabled(),
+ gcEnabled = Config.GetCheckpointGarbageConfig().GetEnabled(),
actorGC = ActorGC,
context = TActivationContext::AsActorContext()]
(const NThreading::TFuture<NYql::TIssues>& issuesFuture) {
@@ -323,9 +323,9 @@ void TStorageProxy::Handle(NYql::NDq::TEvDqCompute::TEvSaveTaskState::TPtr& ev)
LOG_STREAMS_STORAGE_SERVICE_DEBUG("[" << checkpointId << "] Got TEvSaveTaskState: task " << event->TaskId);
const size_t stateSize = event->State.ByteSizeLong();
- if (stateSize > Config.GetStateStorageLimits().GetMaxTaskStateSizeBytes()) {
+ if (stateSize > Config.GetStateStorageLimits().GetMaxTaskStateSizeBytes()) {
LOG_STREAMS_STORAGE_SERVICE_WARN("[" << checkpointId << "] Won't save task state because it's too big: task: " << event->TaskId
- << ", state size: " << stateSize << "/" << Config.GetStateStorageLimits().GetMaxTaskStateSizeBytes());
+ << ", state size: " << stateSize << "/" << Config.GetStateStorageLimits().GetMaxTaskStateSizeBytes());
auto response = std::make_unique<NYql::NDq::TEvDqCompute::TEvSaveTaskStateResult>();
response->Record.MutableCheckpoint()->SetGeneration(checkpointId.CoordinatorGeneration);
response->Record.MutableCheckpoint()->SetId(checkpointId.SeqNo);
@@ -391,7 +391,7 @@ void TStorageProxy::Handle(NYql::NDq::TEvDqCompute::TEvGetTaskState::TPtr& ev) {
////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<NActors::IActor> NewStorageProxy(
- const NConfig::TCheckpointCoordinatorConfig& config,
+ const NConfig::TCheckpointCoordinatorConfig& config,
const NConfig::TCommonConfig& commonConfig,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory)
{
diff --git a/ydb/core/yq/libs/checkpoint_storage/storage_proxy.h b/ydb/core/yq/libs/checkpoint_storage/storage_proxy.h
index c67d928a15..e9074192dc 100644
--- a/ydb/core/yq/libs/checkpoint_storage/storage_proxy.h
+++ b/ydb/core/yq/libs/checkpoint_storage/storage_proxy.h
@@ -12,7 +12,7 @@
namespace NYq {
std::unique_ptr<NActors::IActor> NewStorageProxy(
- const NConfig::TCheckpointCoordinatorConfig& config,
+ const NConfig::TCheckpointCoordinatorConfig& config,
const NConfig::TCommonConfig& commonConfig,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory);
diff --git a/ydb/core/yq/libs/checkpoint_storage/storage_service.cpp b/ydb/core/yq/libs/checkpoint_storage/storage_service.cpp
index 421c19d7fd..3abdc33f0b 100644
--- a/ydb/core/yq/libs/checkpoint_storage/storage_service.cpp
+++ b/ydb/core/yq/libs/checkpoint_storage/storage_service.cpp
@@ -9,7 +9,7 @@ using namespace NActors;
////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<NActors::IActor> NewCheckpointStorageService(
- const NConfig::TCheckpointCoordinatorConfig& config,
+ const NConfig::TCheckpointCoordinatorConfig& config,
const NConfig::TCommonConfig& commonConfig,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory)
{
diff --git a/ydb/core/yq/libs/checkpoint_storage/storage_service.h b/ydb/core/yq/libs/checkpoint_storage/storage_service.h
index 5eab844545..35437098dd 100644
--- a/ydb/core/yq/libs/checkpoint_storage/storage_service.h
+++ b/ydb/core/yq/libs/checkpoint_storage/storage_service.h
@@ -12,7 +12,7 @@
namespace NYq {
std::unique_ptr<NActors::IActor> NewCheckpointStorageService(
- const NConfig::TCheckpointCoordinatorConfig& config,
+ const NConfig::TCheckpointCoordinatorConfig& config,
const NConfig::TCommonConfig& commonConfig,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory);
diff --git a/ydb/core/yq/libs/checkpointing/checkpoint_coordinator.cpp b/ydb/core/yq/libs/checkpointing/checkpoint_coordinator.cpp
index d9d354c2e5..22a14fd63d 100644
--- a/ydb/core/yq/libs/checkpointing/checkpoint_coordinator.cpp
+++ b/ydb/core/yq/libs/checkpointing/checkpoint_coordinator.cpp
@@ -30,7 +30,7 @@ TCheckpointCoordinator::TCheckpointCoordinator(TCoordinatorId coordinatorId,
const TActorId& taskControllerId,
const TActorId& storageProxy,
const TActorId& runActorId,
- const TCheckpointCoordinatorConfig& settings,
+ const TCheckpointCoordinatorConfig& settings,
const NMonitoring::TDynamicCounterPtr& counters,
const NProto::TGraphParams& graphParams,
const YandexQuery::StateLoadMode& stateLoadMode,
diff --git a/ydb/core/yq/libs/checkpointing/checkpoint_coordinator.h b/ydb/core/yq/libs/checkpointing/checkpoint_coordinator.h
index 0bb76685e1..c6ac5b034b 100644
--- a/ydb/core/yq/libs/checkpointing/checkpoint_coordinator.h
+++ b/ydb/core/yq/libs/checkpointing/checkpoint_coordinator.h
@@ -27,7 +27,7 @@ public:
const TActorId& taskControllerId,
const TActorId& storageProxy,
const TActorId& runActorId,
- const TCheckpointCoordinatorConfig& settings,
+ const TCheckpointCoordinatorConfig& settings,
const NMonitoring::TDynamicCounterPtr& counters,
const NProto::TGraphParams& graphParams,
const YandexQuery::StateLoadMode& stateLoadMode,
diff --git a/ydb/core/yq/libs/checkpointing/ut/checkpoint_coordinator_ut.cpp b/ydb/core/yq/libs/checkpointing/ut/checkpoint_coordinator_ut.cpp
index ceb0a9faf5..0997a1303b 100644
--- a/ydb/core/yq/libs/checkpointing/ut/checkpoint_coordinator_ut.cpp
+++ b/ydb/core/yq/libs/checkpointing/ut/checkpoint_coordinator_ut.cpp
@@ -85,7 +85,7 @@ struct TTestBootstrap : public TTestActorRuntime {
ActorToTask[EgressActor] = GraphState.GetTask()[2].GetId();
Settings = NConfig::TCheckpointCoordinatorConfig();
- Settings.SetEnabled(true);
+ Settings.SetEnabled(true);
Settings.SetCheckpointingPeriodMillis(TDuration::Hours(1).MilliSeconds());
Settings.SetMaxInflight(1);
diff --git a/ydb/core/yq/libs/checkpointing/ya.make b/ydb/core/yq/libs/checkpointing/ya.make
index 8a397f67ef..67d2b74642 100644
--- a/ydb/core/yq/libs/checkpointing/ya.make
+++ b/ydb/core/yq/libs/checkpointing/ya.make
@@ -16,7 +16,7 @@ SRCS(
)
PEERDIR(
- library/cpp/actors/core
+ library/cpp/actors/core
ydb/core/yq/libs/actors/logging
ydb/core/yq/libs/checkpointing_common
ydb/core/yq/libs/checkpoint_storage/events
diff --git a/ydb/core/yq/libs/common/database_token_builder.h b/ydb/core/yq/libs/common/database_token_builder.h
index a3e00efab5..6fbabb22c1 100644
--- a/ydb/core/yq/libs/common/database_token_builder.h
+++ b/ydb/core/yq/libs/common/database_token_builder.h
@@ -21,4 +21,4 @@ using namespace NYql;
const THashMap<TString, TString>& accountIdSignatures,
THashMap<std::pair<TString, DatabaseType>, TEvents::TDatabaseAuth>& databaseIds);
-} // NYq
+} // NYq
diff --git a/ydb/core/yq/libs/common/entity_id.cpp b/ydb/core/yq/libs/common/entity_id.cpp
index dab1d1abca..0d84959ce7 100644
--- a/ydb/core/yq/libs/common/entity_id.cpp
+++ b/ydb/core/yq/libs/common/entity_id.cpp
@@ -11,58 +11,58 @@ namespace NYq {
// used ascii order: IntToChar[i] < IntToChar[i+1]
constexpr char IntToChar[] = {
- '0', '1', '2', '3', '4', '5', '6', '7', // 8
- '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', // 16
- 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', // 24
- 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', // 32
+ '0', '1', '2', '3', '4', '5', '6', '7', // 8
+ '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', // 16
+ 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', // 24
+ 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', // 32
};
-static bool IsValidSymbol(char symbol) {
- return '0' <= symbol && symbol <= '9' || 'a' <= symbol && symbol <= 'v';
-}
-
-// 30 bits = 6 symbols
-TString Conv(ui32 n) {
- char buf[7] = {0};
- for (int i = 0; i < 6; i++) {
- buf[5 - i] = IntToChar[n & 0x1f];
- n >>= 5;
- }
- return buf;
-}
-
-// 55 bits = 11 symbols
-TString ConvTime(ui64 time) {
+static bool IsValidSymbol(char symbol) {
+ return '0' <= symbol && symbol <= '9' || 'a' <= symbol && symbol <= 'v';
+}
+
+// 30 bits = 6 symbols
+TString Conv(ui32 n) {
+ char buf[7] = {0};
+ for (int i = 0; i < 6; i++) {
+ buf[5 - i] = IntToChar[n & 0x1f];
+ n >>= 5;
+ }
+ return buf;
+}
+
+// 55 bits = 11 symbols
+TString ConvTime(ui64 time) {
char buf[12] = {0};
for (int i = 0; i < 11; i++) {
- buf[10 - i] = IntToChar[time & 0x1f];
- time >>= 5;
+ buf[10 - i] = IntToChar[time & 0x1f];
+ time >>= 5;
}
return buf;
}
-/*
-- prefix [2 symbols (10 bit)] - service identifier
-- type [1 symbol (5 bit)] - resource type (query, job, connection, binding, result, ...)
-- reversed time [11 symbols (55 bit)] - for provides sorting properties by creation time
-- random number [6 symbols (30 bit)] - a random number to ensure the uniqueness of the keys within a microsecond
-*/
-TString GetEntityIdAsString(const TString& prefix, EEntityType type) {
- Y_VERIFY(prefix.size() == 2, "prefix must contain exactly two characters");
- Y_VERIFY(IsValidSymbol(static_cast<char>(type)), "not valid character for type");
- Y_VERIFY(IsValidSymbol(prefix[0]), "not valid character for prefix[0]");
- Y_VERIFY(IsValidSymbol(prefix[1]), "not valid character for prefix[1]");
- return GetEntityIdAsString(prefix, type, TInstant::Now(), RandomNumber<ui32>());
-}
+/*
+- prefix [2 symbols (10 bit)] - service identifier
+- type [1 symbol (5 bit)] - resource type (query, job, connection, binding, result, ...)
+- reversed time [11 symbols (55 bit)] - for provides sorting properties by creation time
+- random number [6 symbols (30 bit)] - a random number to ensure the uniqueness of the keys within a microsecond
+*/
+TString GetEntityIdAsString(const TString& prefix, EEntityType type) {
+ Y_VERIFY(prefix.size() == 2, "prefix must contain exactly two characters");
+ Y_VERIFY(IsValidSymbol(static_cast<char>(type)), "not valid character for type");
+ Y_VERIFY(IsValidSymbol(prefix[0]), "not valid character for prefix[0]");
+ Y_VERIFY(IsValidSymbol(prefix[1]), "not valid character for prefix[1]");
+ return GetEntityIdAsString(prefix, type, TInstant::Now(), RandomNumber<ui32>());
+}
-TString GetEntityIdAsString(const TString& prefix, EEntityType type, TInstant now, ui32 rnd) {
- // The maximum time that fits in 55 bits. Necessary for the correct inversion of time
- static constexpr TInstant MaxSeconds = TInstant::FromValue(0x7FFFFFFFFFFFFFULL);
- Y_VERIFY(MaxSeconds >= now, "lifetime of the id interval has gone beyond the boundaries");
- ui64 reversedTime = (MaxSeconds - now).GetValue();
- TStringStream stream;
- stream << prefix << static_cast<char>(type) << ConvTime(reversedTime) << Conv(rnd);
- return stream.Str();
+TString GetEntityIdAsString(const TString& prefix, EEntityType type, TInstant now, ui32 rnd) {
+ // The maximum time that fits in 55 bits. Necessary for the correct inversion of time
+ static constexpr TInstant MaxSeconds = TInstant::FromValue(0x7FFFFFFFFFFFFFULL);
+ Y_VERIFY(MaxSeconds >= now, "lifetime of the id interval has gone beyond the boundaries");
+ ui64 reversedTime = (MaxSeconds - now).GetValue();
+ TStringStream stream;
+ stream << prefix << static_cast<char>(type) << ConvTime(reversedTime) << Conv(rnd);
+ return stream.Str();
}
struct TEntityIdGenerator : public IEntityIdGenerator {
diff --git a/ydb/core/yq/libs/common/entity_id.h b/ydb/core/yq/libs/common/entity_id.h
index d34dee0f55..d8810facfd 100644
--- a/ydb/core/yq/libs/common/entity_id.h
+++ b/ydb/core/yq/libs/common/entity_id.h
@@ -1,23 +1,23 @@
#pragma once
#include <util/generic/string.h>
-#include <util/datetime/base.h>
+#include <util/datetime/base.h>
namespace NYq {
-enum class EEntityType : char {
- UNDEFINED = 'u',
- QUERY = 'q',
- JOB = 'j',
- RESULT = 'r',
- CONNECTION = 'c',
+enum class EEntityType : char {
+ UNDEFINED = 'u',
+ QUERY = 'q',
+ JOB = 'j',
+ RESULT = 'r',
+ CONNECTION = 'c',
BINDING = 'b',
CHECKPOINT_GRAPH_DESCRIPTION = 'g',
-};
-
-TString GetEntityIdAsString(const TString& prefix, EEntityType type);
-TString GetEntityIdAsString(const TString& prefix, EEntityType type, TInstant now, ui32 rnd);
+};
+TString GetEntityIdAsString(const TString& prefix, EEntityType type);
+TString GetEntityIdAsString(const TString& prefix, EEntityType type, TInstant now, ui32 rnd);
+
struct IEntityIdGenerator : public TThrRefBase {
using TPtr = TIntrusivePtr<IEntityIdGenerator>;
diff --git a/ydb/core/yq/libs/common/entity_id_ut.cpp b/ydb/core/yq/libs/common/entity_id_ut.cpp
index 8533bdcca0..b2666c2ab9 100644
--- a/ydb/core/yq/libs/common/entity_id_ut.cpp
+++ b/ydb/core/yq/libs/common/entity_id_ut.cpp
@@ -1,7 +1,7 @@
#include "entity_id.h"
#include <ydb/services/ydb/ydb_common_ut.h>
-#include <limits>
+#include <limits>
using namespace NYq;
@@ -12,7 +12,7 @@ Y_UNIT_TEST_SUITE(EntityId) {
THashSet<TString> uniq;
values.reserve(count);
for (int i = 0; i < count; i++) {
- values.push_back(GetEntityIdAsString("de", EEntityType::UNDEFINED));
+ values.push_back(GetEntityIdAsString("de", EEntityType::UNDEFINED));
uniq.insert(values.back());
}
@@ -24,7 +24,7 @@ Y_UNIT_TEST_SUITE(EntityId) {
TVector<TString> values, copy;
values.reserve(count);
for (int i = 0; i < count; i++) {
- values.push_back(GetEntityIdAsString("de", EEntityType::UNDEFINED));
+ values.push_back(GetEntityIdAsString("de", EEntityType::UNDEFINED));
Sleep(TDuration::MilliSeconds(1)); // timer resolution
}
copy = values;
@@ -36,16 +36,16 @@ Y_UNIT_TEST_SUITE(EntityId) {
UNIT_ASSERT_VALUES_EQUAL(values[i], copy[i]);
}
}
-
- Y_UNIT_TEST(MinId) {
- UNIT_ASSERT_VALUES_EQUAL(GetEntityIdAsString("00", EEntityType::UNDEFINED, TInstant::FromValue(0x7FFFFFFFFFFFFFULL), 0), "00u00000000000000000");
- }
-
- Y_UNIT_TEST(MaxId) {
- UNIT_ASSERT_VALUES_EQUAL(GetEntityIdAsString("vv", EEntityType::UNDEFINED, TInstant::Zero(), std::numeric_limits<ui32>::max()), "vvuvvvvvvvvvvvvvvvvv");
- }
-
- Y_UNIT_TEST(CheckId) {
- UNIT_ASSERT_VALUES_EQUAL(GetEntityIdAsString("ut", EEntityType::QUERY, TInstant::ParseIso8601("2021-12-04"), 666666), "utquhdn55pa7vv00kb1a");
- }
+
+ Y_UNIT_TEST(MinId) {
+ UNIT_ASSERT_VALUES_EQUAL(GetEntityIdAsString("00", EEntityType::UNDEFINED, TInstant::FromValue(0x7FFFFFFFFFFFFFULL), 0), "00u00000000000000000");
+ }
+
+ Y_UNIT_TEST(MaxId) {
+ UNIT_ASSERT_VALUES_EQUAL(GetEntityIdAsString("vv", EEntityType::UNDEFINED, TInstant::Zero(), std::numeric_limits<ui32>::max()), "vvuvvvvvvvvvvvvvvvvv");
+ }
+
+ Y_UNIT_TEST(CheckId) {
+ UNIT_ASSERT_VALUES_EQUAL(GetEntityIdAsString("ut", EEntityType::QUERY, TInstant::ParseIso8601("2021-12-04"), 666666), "utquhdn55pa7vv00kb1a");
+ }
}
diff --git a/ydb/core/yq/libs/config/protos/audit.proto b/ydb/core/yq/libs/config/protos/audit.proto
index 2c8311318c..9a6630766c 100644
--- a/ydb/core/yq/libs/config/protos/audit.proto
+++ b/ydb/core/yq/libs/config/protos/audit.proto
@@ -1,17 +1,17 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
-////////////////////////////////////////////////////////////
-
-message TAuditConfig {
- message TUAConfig {
- string Uri = 1;
- string SharedSecretKey = 2;
- }
-
- bool Enabled = 1;
- TUAConfig UAConfig = 2;
-}
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
+////////////////////////////////////////////////////////////
+
+message TAuditConfig {
+ message TUAConfig {
+ string Uri = 1;
+ string SharedSecretKey = 2;
+ }
+
+ bool Enabled = 1;
+ TUAConfig UAConfig = 2;
+}
diff --git a/ydb/core/yq/libs/config/protos/checkpoint_coordinator.proto b/ydb/core/yq/libs/config/protos/checkpoint_coordinator.proto
index 954fb2a388..0964793ecf 100644
--- a/ydb/core/yq/libs/config/protos/checkpoint_coordinator.proto
+++ b/ydb/core/yq/libs/config/protos/checkpoint_coordinator.proto
@@ -1,27 +1,27 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
import "ydb/core/yq/libs/config/protos/storage.proto";
-
-////////////////////////////////////////////////////////////
-
-message TStateStorageLimitsConfig {
- uint64 MaxGraphCheckpointsSizeBytes = 1;
- uint64 MaxTaskStateSizeBytes = 2;
-}
-
-message TCheckpointGcConfig {
- bool Enabled = 1;
-}
-
-message TCheckpointCoordinatorConfig {
- bool Enabled = 1;
- TYdbStorageConfig Storage = 2;
- TCheckpointGcConfig CheckpointGarbageConfig = 3;
- TStateStorageLimitsConfig StateStorageLimits = 4;
- uint64 CheckpointingPeriodMillis = 5;
- uint64 MaxInflight = 6;
-}
+
+////////////////////////////////////////////////////////////
+
+message TStateStorageLimitsConfig {
+ uint64 MaxGraphCheckpointsSizeBytes = 1;
+ uint64 MaxTaskStateSizeBytes = 2;
+}
+
+message TCheckpointGcConfig {
+ bool Enabled = 1;
+}
+
+message TCheckpointCoordinatorConfig {
+ bool Enabled = 1;
+ TYdbStorageConfig Storage = 2;
+ TCheckpointGcConfig CheckpointGarbageConfig = 3;
+ TStateStorageLimitsConfig StateStorageLimits = 4;
+ uint64 CheckpointingPeriodMillis = 5;
+ uint64 MaxInflight = 6;
+}
diff --git a/ydb/core/yq/libs/config/protos/common.proto b/ydb/core/yq/libs/config/protos/common.proto
index e86548cf3c..75190b6612 100644
--- a/ydb/core/yq/libs/config/protos/common.proto
+++ b/ydb/core/yq/libs/config/protos/common.proto
@@ -1,24 +1,24 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
-////////////////////////////////////////////////////////////
-
-message TYdbDriverConfig {
- uint64 NetworkThreadsNum = 1; // default: 2
- uint64 ClientThreadsNum = 2; // default: 0 that means adaptive thread pool
- uint64 GrpcMemoryQuota = 3; // default: 0 (unlimited)
-}
-
-message TCommonConfig {
- TYdbDriverConfig YdbDriverConfig = 1;
- string YdbMvpCloudEndpoint = 2;
- string MdbGateway = 3;
- bool UseBearerForYdb = 4;
- bool MdbTransformHost = 5;
- string ObjectStorageEndpoint = 6;
- string IdsPrefix = 7;
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
+////////////////////////////////////////////////////////////
+
+message TYdbDriverConfig {
+ uint64 NetworkThreadsNum = 1; // default: 2
+ uint64 ClientThreadsNum = 2; // default: 0 that means adaptive thread pool
+ uint64 GrpcMemoryQuota = 3; // default: 0 (unlimited)
+}
+
+message TCommonConfig {
+ TYdbDriverConfig YdbDriverConfig = 1;
+ string YdbMvpCloudEndpoint = 2;
+ string MdbGateway = 3;
+ bool UseBearerForYdb = 4;
+ bool MdbTransformHost = 5;
+ string ObjectStorageEndpoint = 6;
+ string IdsPrefix = 7;
uint64 MaxTasksPerOperation = 8;
-}
+}
diff --git a/ydb/core/yq/libs/config/protos/control_plane_proxy.proto b/ydb/core/yq/libs/config/protos/control_plane_proxy.proto
index 51f5d1f9f8..d4f904d45e 100644
--- a/ydb/core/yq/libs/config/protos/control_plane_proxy.proto
+++ b/ydb/core/yq/libs/config/protos/control_plane_proxy.proto
@@ -1,13 +1,13 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
-////////////////////////////////////////////////////////////
-
-message TControlPlaneProxyConfig {
- bool Enabled = 1;
- string RequestTimeout = 2;
- bool EnablePermissions = 3;
-}
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
+////////////////////////////////////////////////////////////
+
+message TControlPlaneProxyConfig {
+ bool Enabled = 1;
+ string RequestTimeout = 2;
+ bool EnablePermissions = 3;
+}
diff --git a/ydb/core/yq/libs/config/protos/control_plane_storage.proto b/ydb/core/yq/libs/config/protos/control_plane_storage.proto
index ebced909c5..e36a6af20e 100644
--- a/ydb/core/yq/libs/config/protos/control_plane_storage.proto
+++ b/ydb/core/yq/libs/config/protos/control_plane_storage.proto
@@ -1,36 +1,36 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
import "ydb/core/yq/libs/config/protos/storage.proto";
-
-////////////////////////////////////////////////////////////
-
-message TControlPlaneStorageConfig {
- bool Enabled = 1;
- NYq.NConfig.TYdbStorageConfig Storage = 2; // TODO: remove
- string IdempotencyKeysTtl = 3;
- uint64 MaxRequestSize = 4;
- uint64 MaxCountQueries = 5;
- uint64 MaxCountConnections = 6;
- uint64 MaxCountBindings = 7;
- uint64 MaxCountJobs = 8;
- repeated string SuperUsers = 9;
- bool EnableDebugMode = 10;
- bool EnablePermissions = 11;
- bool DisableCurrentIam = 12;
- bool UseInMemory = 13;
- uint64 TasksBatchSize = 14;
- uint64 NumTasksProportion = 15;
- uint64 AnalyticsRetryCounterLimit = 16;
- uint64 StreamingRetryCounterLimit = 17;
- string AnalyticsRetryCounterUpdateTime = 18;
- string StreamingRetryCounterUpdateTime = 19;
- string AutomaticQueriesTtl = 20;
- string TaskLeaseTtl = 21;
- repeated string AvailableConnection = 22;
- repeated string AvailableBinding = 23;
+
+////////////////////////////////////////////////////////////
+
+message TControlPlaneStorageConfig {
+ bool Enabled = 1;
+ NYq.NConfig.TYdbStorageConfig Storage = 2; // TODO: remove
+ string IdempotencyKeysTtl = 3;
+ uint64 MaxRequestSize = 4;
+ uint64 MaxCountQueries = 5;
+ uint64 MaxCountConnections = 6;
+ uint64 MaxCountBindings = 7;
+ uint64 MaxCountJobs = 8;
+ repeated string SuperUsers = 9;
+ bool EnableDebugMode = 10;
+ bool EnablePermissions = 11;
+ bool DisableCurrentIam = 12;
+ bool UseInMemory = 13;
+ uint64 TasksBatchSize = 14;
+ uint64 NumTasksProportion = 15;
+ uint64 AnalyticsRetryCounterLimit = 16;
+ uint64 StreamingRetryCounterLimit = 17;
+ string AnalyticsRetryCounterUpdateTime = 18;
+ string StreamingRetryCounterUpdateTime = 19;
+ string AutomaticQueriesTtl = 20;
+ string TaskLeaseTtl = 21;
+ repeated string AvailableConnection = 22;
+ repeated string AvailableBinding = 23;
string ResultSetsTtl = 24;
-}
+}
diff --git a/ydb/core/yq/libs/config/protos/db_pool.proto b/ydb/core/yq/libs/config/protos/db_pool.proto
index eebae1cc8e..3a446f1fb5 100644
--- a/ydb/core/yq/libs/config/protos/db_pool.proto
+++ b/ydb/core/yq/libs/config/protos/db_pool.proto
@@ -1,15 +1,15 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
import "ydb/core/yq/libs/config/protos/storage.proto";
-
-////////////////////////////////////////////////////////////
-
-message TDbPoolConfig {
- bool Enabled = 1;
- TYdbStorageConfig Storage = 2;
- uint32 MaxSessionCount = 3;
-}
+
+////////////////////////////////////////////////////////////
+
+message TDbPoolConfig {
+ bool Enabled = 1;
+ TYdbStorageConfig Storage = 2;
+ uint32 MaxSessionCount = 3;
+}
diff --git a/ydb/core/yq/libs/config/protos/gateways.proto b/ydb/core/yq/libs/config/protos/gateways.proto
index b953143764..970bed919b 100644
--- a/ydb/core/yq/libs/config/protos/gateways.proto
+++ b/ydb/core/yq/libs/config/protos/gateways.proto
@@ -1,19 +1,19 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
import "ydb/library/yql/providers/common/proto/gateways_config.proto";
-
-////////////////////////////////////////////////////////////
-
-message TGatewaysConfig {
- bool Enabled = 1;
- NYql.TDqGatewayConfig Dq = 2;
- NYql.TPqGatewayConfig Pq = 3;
- NYql.TYdbGatewayConfig Ydb = 4;
- NYql.TS3GatewayConfig S3 = 5;
- NYql.TSolomonGatewayConfig Solomon = 6;
+
+////////////////////////////////////////////////////////////
+
+message TGatewaysConfig {
+ bool Enabled = 1;
+ NYql.TDqGatewayConfig Dq = 2;
+ NYql.TPqGatewayConfig Pq = 3;
+ NYql.TYdbGatewayConfig Ydb = 4;
+ NYql.TS3GatewayConfig S3 = 5;
+ NYql.TSolomonGatewayConfig Solomon = 6;
NYql.THttpGatewayConfig HttpGateway = 7;
-}
+}
diff --git a/ydb/core/yq/libs/config/protos/issue_id.proto b/ydb/core/yq/libs/config/protos/issue_id.proto
index e4090be506..7939613b5d 100644
--- a/ydb/core/yq/libs/config/protos/issue_id.proto
+++ b/ydb/core/yq/libs/config/protos/issue_id.proto
@@ -1,20 +1,20 @@
-syntax = "proto3";
-
-package NYq;
-
-message TIssuesIds {
- enum EIssueCode {
- DEFAULT_ERROR = 0;
- UNEXPECTED = 1;
- INFO = 2;
- WARNING = 3;
- SUCCESS = 4;
-
- ACCESS_DENIED = 1000;
- INTERNAL_ERROR = 1001;
- TIMEOUT = 1002;
- BAD_REQUEST = 1003;
+syntax = "proto3";
+
+package NYq;
+
+message TIssuesIds {
+ enum EIssueCode {
+ DEFAULT_ERROR = 0;
+ UNEXPECTED = 1;
+ INFO = 2;
+ WARNING = 3;
+ SUCCESS = 4;
+
+ ACCESS_DENIED = 1000;
+ INTERNAL_ERROR = 1001;
+ TIMEOUT = 1002;
+ BAD_REQUEST = 1003;
EXPIRED = 1004;
UNSUPPORTED = 1005;
- }
+ }
}
diff --git a/ydb/core/yq/libs/config/protos/nodes_manager.proto b/ydb/core/yq/libs/config/protos/nodes_manager.proto
index 8daaff6bb4..c877899b17 100644
--- a/ydb/core/yq/libs/config/protos/nodes_manager.proto
+++ b/ydb/core/yq/libs/config/protos/nodes_manager.proto
@@ -1,11 +1,11 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
-////////////////////////////////////////////////////////////
-
-message TNodesManagerConfig {
- bool Enabled = 1;
-}
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
+////////////////////////////////////////////////////////////
+
+message TNodesManagerConfig {
+ bool Enabled = 1;
+}
diff --git a/ydb/core/yq/libs/config/protos/pending_fetcher.proto b/ydb/core/yq/libs/config/protos/pending_fetcher.proto
index 965c7a039f..637d68b427 100644
--- a/ydb/core/yq/libs/config/protos/pending_fetcher.proto
+++ b/ydb/core/yq/libs/config/protos/pending_fetcher.proto
@@ -1,11 +1,11 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
-////////////////////////////////////////////////////////////
-
-message TPendingFetcherConfig {
- bool Enabled = 1;
-}
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
+////////////////////////////////////////////////////////////
+
+message TPendingFetcherConfig {
+ bool Enabled = 1;
+}
diff --git a/ydb/core/yq/libs/config/protos/pinger.proto b/ydb/core/yq/libs/config/protos/pinger.proto
index f27cbfb991..f03951bc64 100644
--- a/ydb/core/yq/libs/config/protos/pinger.proto
+++ b/ydb/core/yq/libs/config/protos/pinger.proto
@@ -1,11 +1,11 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
-////////////////////////////////////////////////////////////
-
-message TPingerConfig {
- string PingPeriod = 1;
-}
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
+////////////////////////////////////////////////////////////
+
+message TPingerConfig {
+ string PingPeriod = 1;
+}
diff --git a/ydb/core/yq/libs/config/protos/private_api.proto b/ydb/core/yq/libs/config/protos/private_api.proto
index b40663d9a3..cf675e4af3 100644
--- a/ydb/core/yq/libs/config/protos/private_api.proto
+++ b/ydb/core/yq/libs/config/protos/private_api.proto
@@ -1,14 +1,14 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
-////////////////////////////////////////////////////////////
-
-message TPrivateApiConfig {
- bool Enabled = 1;
- string TaskServiceEndpoint = 2;
- string TaskServiceDatabase = 3;
- bool SecureTaskService = 4;
-}
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
+////////////////////////////////////////////////////////////
+
+message TPrivateApiConfig {
+ bool Enabled = 1;
+ string TaskServiceEndpoint = 2;
+ string TaskServiceDatabase = 3;
+ bool SecureTaskService = 4;
+}
diff --git a/ydb/core/yq/libs/config/protos/private_proxy.proto b/ydb/core/yq/libs/config/protos/private_proxy.proto
index f26f937d12..407e3d6b39 100644
--- a/ydb/core/yq/libs/config/protos/private_proxy.proto
+++ b/ydb/core/yq/libs/config/protos/private_proxy.proto
@@ -1,11 +1,11 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
-////////////////////////////////////////////////////////////
-
-message TPrivateProxyConfig {
- bool Enabled = 1;
-}
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
+////////////////////////////////////////////////////////////
+
+message TPrivateProxyConfig {
+ bool Enabled = 1;
+}
diff --git a/ydb/core/yq/libs/config/protos/resource_manager.proto b/ydb/core/yq/libs/config/protos/resource_manager.proto
index b25ef580bd..4e5e8f7e68 100644
--- a/ydb/core/yq/libs/config/protos/resource_manager.proto
+++ b/ydb/core/yq/libs/config/protos/resource_manager.proto
@@ -1,14 +1,14 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
-////////////////////////////////////////////////////////////
-
-message TResourceManagerConfig {
- bool Enabled = 1;
- uint64 MkqlInitialMemoryLimit = 2; // per task, default: 8_GB
- uint64 MkqlTotalMemoryLimit = 3; // per node, default: 0, means no limit management
- uint64 MkqlAllocSize = 4; // min alloc/free, default 30_MB
-}
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
+////////////////////////////////////////////////////////////
+
+message TResourceManagerConfig {
+ bool Enabled = 1;
+ uint64 MkqlInitialMemoryLimit = 2; // per task, default: 8_GB
+ uint64 MkqlTotalMemoryLimit = 3; // per node, default: 0, means no limit management
+ uint64 MkqlAllocSize = 4; // min alloc/free, default 30_MB
+}
diff --git a/ydb/core/yq/libs/config/protos/storage.proto b/ydb/core/yq/libs/config/protos/storage.proto
index dd1f3fb8c5..e1a3c1b6a6 100644
--- a/ydb/core/yq/libs/config/protos/storage.proto
+++ b/ydb/core/yq/libs/config/protos/storage.proto
@@ -1,25 +1,25 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
-////////////////////////////////////////////////////////////
-
-message TYdbStorageConfig {
- string Endpoint = 1;
- string Database = 2;
- string OAuthFile = 3;
- string TablePrefix = 4;
- string CertificateFile = 6;
- string IamEndpoint = 7;
- string SaKeyFile = 8;
- bool UseLocalMetadataService = 9;
- uint32 ClientTimeoutSec = 10;
- uint32 OperationTimeoutSec = 11;
- uint32 CancelAfterSec = 12;
- bool UseSsl = 13;
-
- // alternative to OAuthFile to simplify tests
- string Token = 5;
-}
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
+////////////////////////////////////////////////////////////
+
+message TYdbStorageConfig {
+ string Endpoint = 1;
+ string Database = 2;
+ string OAuthFile = 3;
+ string TablePrefix = 4;
+ string CertificateFile = 6;
+ string IamEndpoint = 7;
+ string SaKeyFile = 8;
+ bool UseLocalMetadataService = 9;
+ uint32 ClientTimeoutSec = 10;
+ uint32 OperationTimeoutSec = 11;
+ uint32 CancelAfterSec = 12;
+ bool UseSsl = 13;
+
+ // alternative to OAuthFile to simplify tests
+ string Token = 5;
+}
diff --git a/ydb/core/yq/libs/config/protos/test_connection.proto b/ydb/core/yq/libs/config/protos/test_connection.proto
index f13d131abf..feb9f81eb2 100644
--- a/ydb/core/yq/libs/config/protos/test_connection.proto
+++ b/ydb/core/yq/libs/config/protos/test_connection.proto
@@ -1,11 +1,11 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
-////////////////////////////////////////////////////////////
-
-message TTestConnectionConfig {
- bool Enabled = 1;
-}
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
+////////////////////////////////////////////////////////////
+
+message TTestConnectionConfig {
+ bool Enabled = 1;
+}
diff --git a/ydb/core/yq/libs/config/protos/token_accessor.proto b/ydb/core/yq/libs/config/protos/token_accessor.proto
index 6885b3381c..37bc8a1aae 100644
--- a/ydb/core/yq/libs/config/protos/token_accessor.proto
+++ b/ydb/core/yq/libs/config/protos/token_accessor.proto
@@ -1,14 +1,14 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
-////////////////////////////////////////////////////////////
-
-message TTokenAccessorConfig {
- bool Enabled = 1;
- string Endpoint = 2; // GRPC endpoint of token accessor daemon
- bool UseSsl = 3; // Whether to use SSL
- string HmacSecretFile = 4;
-}
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
+////////////////////////////////////////////////////////////
+
+message TTokenAccessorConfig {
+ bool Enabled = 1;
+ string Endpoint = 2; // GRPC endpoint of token accessor daemon
+ bool UseSsl = 3; // Whether to use SSL
+ string HmacSecretFile = 4;
+}
diff --git a/ydb/core/yq/libs/config/protos/ya.make b/ydb/core/yq/libs/config/protos/ya.make
index 72000d86fa..b0283ed225 100644
--- a/ydb/core/yq/libs/config/protos/ya.make
+++ b/ydb/core/yq/libs/config/protos/ya.make
@@ -1,35 +1,35 @@
OWNER(g:yq)
-
-PROTO_LIBRARY()
-
-SRCS(
- audit.proto
- checkpoint_coordinator.proto
- common.proto
- control_plane_proxy.proto
- control_plane_storage.proto
- db_pool.proto
- gateways.proto
- issue_id.proto
- nodes_manager.proto
- pending_fetcher.proto
- pinger.proto
- private_api.proto
- private_proxy.proto
+
+PROTO_LIBRARY()
+
+SRCS(
+ audit.proto
+ checkpoint_coordinator.proto
+ common.proto
+ control_plane_proxy.proto
+ control_plane_storage.proto
+ db_pool.proto
+ gateways.proto
+ issue_id.proto
+ nodes_manager.proto
+ pending_fetcher.proto
+ pinger.proto
+ private_api.proto
+ private_proxy.proto
read_actors_factory.proto
- resource_manager.proto
- storage.proto
- test_connection.proto
- token_accessor.proto
- yq_config.proto
-)
-
-PEERDIR(
+ resource_manager.proto
+ storage.proto
+ test_connection.proto
+ token_accessor.proto
+ yq_config.proto
+)
+
+PEERDIR(
ydb/library/folder_service/proto
ydb/library/yql/providers/common/proto
ydb/library/yql/providers/s3/proto
-)
-
-EXCLUDE_TAGS(GO_PROTO)
-
-END()
+)
+
+EXCLUDE_TAGS(GO_PROTO)
+
+END()
diff --git a/ydb/core/yq/libs/config/protos/yq_config.proto b/ydb/core/yq/libs/config/protos/yq_config.proto
index 841b816821..6993cccb32 100644
--- a/ydb/core/yq/libs/config/protos/yq_config.proto
+++ b/ydb/core/yq/libs/config/protos/yq_config.proto
@@ -1,9 +1,9 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package NYq.NConfig;
-option java_package = "ru.yandex.kikimr.proto";
-
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package NYq.NConfig;
+option java_package = "ru.yandex.kikimr.proto";
+
import "ydb/core/yq/libs/config/protos/audit.proto";
import "ydb/core/yq/libs/config/protos/checkpoint_coordinator.proto";
import "ydb/core/yq/libs/config/protos/common.proto";
@@ -18,30 +18,30 @@ import "ydb/core/yq/libs/config/protos/private_api.proto";
import "ydb/core/yq/libs/config/protos/private_proxy.proto";
import "ydb/core/yq/libs/config/protos/read_actors_factory.proto";
import "ydb/core/yq/libs/config/protos/resource_manager.proto";
-import "ydb/core/yq/libs/config/protos/test_connection.proto";
+import "ydb/core/yq/libs/config/protos/test_connection.proto";
import "ydb/core/yq/libs/config/protos/token_accessor.proto";
-import "ydb/library/folder_service/proto/config.proto";
-
-////////////////////////////////////////////////////////////
-
-message TConfig {
- bool Enabled = 1;
- TCommonConfig Common = 2;
- TControlPlaneStorageConfig ControlPlaneStorage = 3;
- TControlPlaneProxyConfig ControlPlaneProxy = 4;
+import "ydb/library/folder_service/proto/config.proto";
+
+////////////////////////////////////////////////////////////
+
+message TConfig {
+ bool Enabled = 1;
+ TCommonConfig Common = 2;
+ TControlPlaneStorageConfig ControlPlaneStorage = 3;
+ TControlPlaneProxyConfig ControlPlaneProxy = 4;
NKikimrProto.NFolderService.TFolderServiceConfig FolderService = 5;
- TPrivateApiConfig PrivateApi = 6;
- TTokenAccessorConfig TokenAccessor = 7;
- TDbPoolConfig DbPool = 8;
- TGatewaysConfig Gateways = 9;
- TCheckpointCoordinatorConfig CheckpointCoordinator = 10;
- TAuditConfig Audit = 11;
- TResourceManagerConfig ResourceManager = 12;
- TPrivateProxyConfig PrivateProxy = 13;
- TNodesManagerConfig NodesManager = 14;
- TPendingFetcherConfig PendingFetcher = 15;
- TPingerConfig Pinger = 16;
+ TPrivateApiConfig PrivateApi = 6;
+ TTokenAccessorConfig TokenAccessor = 7;
+ TDbPoolConfig DbPool = 8;
+ TGatewaysConfig Gateways = 9;
+ TCheckpointCoordinatorConfig CheckpointCoordinator = 10;
+ TAuditConfig Audit = 11;
+ TResourceManagerConfig ResourceManager = 12;
+ TPrivateProxyConfig PrivateProxy = 13;
+ TNodesManagerConfig NodesManager = 14;
+ TPendingFetcherConfig PendingFetcher = 15;
+ TPingerConfig Pinger = 16;
bool EnableDynamicNameservice = 17;
- TTestConnectionConfig TestConnection = 18;
+ TTestConnectionConfig TestConnection = 18;
TReadActorsFactoryConfig ReadActorsFactoryConfig = 19;
-}
+}
diff --git a/ydb/core/yq/libs/config/ya.make b/ydb/core/yq/libs/config/ya.make
index 09d253c134..5bd8fd32b8 100644
--- a/ydb/core/yq/libs/config/ya.make
+++ b/ydb/core/yq/libs/config/ya.make
@@ -1,18 +1,18 @@
OWNER(g:yq)
-
-LIBRARY()
-
-SRCS(
- yq_issue.cpp
-)
-
-PEERDIR(
+
+LIBRARY()
+
+SRCS(
+ yq_issue.cpp
+)
+
+PEERDIR(
ydb/core/yq/libs/config/protos
ydb/library/yql/public/issue/protos
-)
-
-END()
-
-RECURSE(
- protos
+)
+
+END()
+
+RECURSE(
+ protos
)
diff --git a/ydb/core/yq/libs/config/yq_issue.cpp b/ydb/core/yq/libs/config/yq_issue.cpp
index f66ab2eb0c..0232389b42 100644
--- a/ydb/core/yq/libs/config/yq_issue.cpp
+++ b/ydb/core/yq/libs/config/yq_issue.cpp
@@ -1,36 +1,36 @@
-#include "yq_issue.h"
+#include "yq_issue.h"
#include <ydb/library/yql/public/issue/protos/issue_severity.pb.h>
#include <ydb/library/yql/public/issue/yql_issue_id.h>
#include <ydb/library/yql/public/issue/yql_issue_message.h>
-
-namespace NYq {
-
-NYql::TIssue MakeFatalIssue(TIssuesIds::EIssueCode id, const TString& message) {
- NYql::TIssue issue;
- issue.SetCode(id, NYql::TSeverityIds::S_FATAL);
- issue.Message = message;
- return issue;
-}
-
-NYql::TIssue MakeErrorIssue(TIssuesIds::EIssueCode id, const TString& message) {
- NYql::TIssue issue;
- issue.SetCode(id, NYql::TSeverityIds::S_ERROR);
- issue.Message = message;
- return issue;
-}
-
-NYql::TIssue MakeWarningIssue(TIssuesIds::EIssueCode id, const TString& message) {
- NYql::TIssue issue;
- issue.SetCode(id, NYql::TSeverityIds::S_WARNING);
- issue.Message = message;
- return issue;
-}
-
-NYql::TIssue MakeInfoIssue(TIssuesIds::EIssueCode id, const TString& message) {
- NYql::TIssue issue;
- issue.SetCode(id, NYql::TSeverityIds::S_INFO);
- issue.Message = message;
- return issue;
-}
-
-}
+
+namespace NYq {
+
+NYql::TIssue MakeFatalIssue(TIssuesIds::EIssueCode id, const TString& message) {
+ NYql::TIssue issue;
+ issue.SetCode(id, NYql::TSeverityIds::S_FATAL);
+ issue.Message = message;
+ return issue;
+}
+
+NYql::TIssue MakeErrorIssue(TIssuesIds::EIssueCode id, const TString& message) {
+ NYql::TIssue issue;
+ issue.SetCode(id, NYql::TSeverityIds::S_ERROR);
+ issue.Message = message;
+ return issue;
+}
+
+NYql::TIssue MakeWarningIssue(TIssuesIds::EIssueCode id, const TString& message) {
+ NYql::TIssue issue;
+ issue.SetCode(id, NYql::TSeverityIds::S_WARNING);
+ issue.Message = message;
+ return issue;
+}
+
+NYql::TIssue MakeInfoIssue(TIssuesIds::EIssueCode id, const TString& message) {
+ NYql::TIssue issue;
+ issue.SetCode(id, NYql::TSeverityIds::S_INFO);
+ issue.Message = message;
+ return issue;
+}
+
+}
diff --git a/ydb/core/yq/libs/config/yq_issue.h b/ydb/core/yq/libs/config/yq_issue.h
index 68d4600ed7..87450cff14 100644
--- a/ydb/core/yq/libs/config/yq_issue.h
+++ b/ydb/core/yq/libs/config/yq_issue.h
@@ -1,17 +1,17 @@
-#pragma once
-
+#pragma once
+
#include <ydb/core/yq/libs/config/protos/issue_id.pb.h>
-
+
#include <ydb/library/yql/public/issue/yql_issue.h>
-
-namespace NYq {
-
-NYql::TIssue MakeFatalIssue(TIssuesIds::EIssueCode id, const TString& message);
-
-NYql::TIssue MakeErrorIssue(TIssuesIds::EIssueCode id, const TString& message);
-
-NYql::TIssue MakeWarningIssue(TIssuesIds::EIssueCode id, const TString& message);
-
-NYql::TIssue MakeInfoIssue(TIssuesIds::EIssueCode id, const TString& message);
-
-}
+
+namespace NYq {
+
+NYql::TIssue MakeFatalIssue(TIssuesIds::EIssueCode id, const TString& message);
+
+NYql::TIssue MakeErrorIssue(TIssuesIds::EIssueCode id, const TString& message);
+
+NYql::TIssue MakeWarningIssue(TIssuesIds::EIssueCode id, const TString& message);
+
+NYql::TIssue MakeInfoIssue(TIssuesIds::EIssueCode id, const TString& message);
+
+}
diff --git a/ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.cpp b/ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.cpp
index 53838351b4..f81712897b 100644
--- a/ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.cpp
+++ b/ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.cpp
@@ -1,532 +1,532 @@
-#include "control_plane_proxy.h"
-#include "probes.h"
-#include "utils.h"
-
+#include "control_plane_proxy.h"
+#include "probes.h"
+#include "utils.h"
+
#include <ydb/core/yq/libs/actors/logging/log.h>
#include <ydb/core/yq/libs/control_plane_storage/control_plane_storage.h>
#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
#include <ydb/core/yq/libs/control_plane_storage/util.h>
-#include <ydb/core/yq/libs/test_connection/test_connection.h>
-#include <ydb/core/yq/libs/test_connection/events/events.h>
+#include <ydb/core/yq/libs/test_connection/test_connection.h>
+#include <ydb/core/yq/libs/test_connection/events/events.h>
#include <ydb/core/yq/libs/ydb/util.h>
#include <ydb/core/yq/libs/ydb/ydb.h>
-
+
#include <ydb/core/yq/libs/config/yq_issue.h>
#include <ydb/core/yq/libs/control_plane_proxy/events/events.h>
-
-#include <library/cpp/actors/core/actor_bootstrapped.h>
-#include <library/cpp/actors/core/actor.h>
-
+
+#include <library/cpp/actors/core/actor_bootstrapped.h>
+#include <library/cpp/actors/core/actor.h>
+
#include <ydb/core/base/kikimr_issue.h>
#include <ydb/public/sdk/cpp/client/ydb_scheme/scheme.h>
-
+
#include <ydb/library/yql/public/issue/yql_issue_message.h>
-
-#include <util/generic/maybe.h>
-#include <util/generic/ptr.h>
-
+
+#include <util/generic/maybe.h>
+#include <util/generic/ptr.h>
+
#include <library/cpp/lwtrace/mon/mon_lwtrace.h>
#include <ydb/library/security/util.h>
-
+
#include <ydb/core/base/appdata.h>
#include <ydb/core/mon/mon.h>
-#include <library/cpp/monlib/service/pages/templates.h>
-
+#include <library/cpp/monlib/service/pages/templates.h>
+
#include <ydb/library/folder_service/folder_service.h>
#include <ydb/library/folder_service/events.h>
-
-
-namespace NYq {
+
+
+namespace NYq {
namespace {
-
-using namespace NActors;
+
+using namespace NActors;
using namespace NYq::NConfig;
-using namespace NKikimr;
-using namespace NThreading;
-using namespace NYdb;
-using namespace NYdb::NTable;
-
-LWTRACE_USING(YQ_CONTROL_PLANE_PROXY_PROVIDER);
-
+using namespace NKikimr;
+using namespace NThreading;
+using namespace NYdb;
+using namespace NYdb::NTable;
+
+LWTRACE_USING(YQ_CONTROL_PLANE_PROXY_PROVIDER);
+
struct TRequestCounters: public virtual TThrRefBase {
- const TString Name;
-
- NMonitoring::TDynamicCounters::TCounterPtr InFly;
- NMonitoring::TDynamicCounters::TCounterPtr Ok;
- NMonitoring::TDynamicCounters::TCounterPtr Error;
- NMonitoring::TDynamicCounters::TCounterPtr Timeout;
- NMonitoring::THistogramPtr LatencyMs;
-
- explicit TRequestCounters(const TString& name)
- : Name(name)
- { }
-
- void Register(const NMonitoring::TDynamicCounterPtr& counters) {
- NMonitoring::TDynamicCounterPtr subgroup = counters->GetSubgroup("request", Name);
- InFly = subgroup->GetCounter("InFly", false);
- Ok = subgroup->GetCounter("Ok", true);
- Error = subgroup->GetCounter("Error", true);
- Timeout = subgroup->GetCounter("Timeout", true);
- LatencyMs = subgroup->GetHistogram("LatencyMs", GetLatencyHistogramBuckets());
- }
-
-private:
- static NMonitoring::IHistogramCollectorPtr GetLatencyHistogramBuckets() {
- return NMonitoring::ExplicitHistogram({0, 1, 2, 5, 10, 20, 50, 100, 500, 1000, 2000, 5000, 10000, 30000, 50000, 500000});
- }
-};
-
-using TRequestCountersPtr = TIntrusivePtr<TRequestCounters>;
-
-template<class TRequestProto, class TRequest, class TResponse, class TResponseProxy, bool ResolveFolder = false>
-class TRequestActor : public NActors::TActorBootstrapped<TRequestActor<TRequestProto, TRequest, TResponse, TResponseProxy, ResolveFolder>> {
- using TBase = NActors::TActorBootstrapped<TRequestActor<TRequestProto, TRequest, TResponse, TResponseProxy, ResolveFolder>>;
- using TBase::SelfId;
- using TBase::Send;
- using TBase::PassAway;
- using TBase::Become;
-
- NConfig::TControlPlaneProxyConfig Config;
- TRequestProto RequestProto;
- TString Scope;
- TString FolderId;
- TString User;
- TString Token;
- TActorId Sender;
- ui32 Cookie;
- TActorId ServiceId;
- TRequestCountersPtr Counters;
- TInstant StartTime;
- std::function<void(const TDuration&, bool, bool)> Probe;
- TPermissions Permissions;
- TRequestCountersPtr ResolveFolderCounters;
- TString CloudId;
-
-public:
+ const TString Name;
+
+ NMonitoring::TDynamicCounters::TCounterPtr InFly;
+ NMonitoring::TDynamicCounters::TCounterPtr Ok;
+ NMonitoring::TDynamicCounters::TCounterPtr Error;
+ NMonitoring::TDynamicCounters::TCounterPtr Timeout;
+ NMonitoring::THistogramPtr LatencyMs;
+
+ explicit TRequestCounters(const TString& name)
+ : Name(name)
+ { }
+
+ void Register(const NMonitoring::TDynamicCounterPtr& counters) {
+ NMonitoring::TDynamicCounterPtr subgroup = counters->GetSubgroup("request", Name);
+ InFly = subgroup->GetCounter("InFly", false);
+ Ok = subgroup->GetCounter("Ok", true);
+ Error = subgroup->GetCounter("Error", true);
+ Timeout = subgroup->GetCounter("Timeout", true);
+ LatencyMs = subgroup->GetHistogram("LatencyMs", GetLatencyHistogramBuckets());
+ }
+
+private:
+ static NMonitoring::IHistogramCollectorPtr GetLatencyHistogramBuckets() {
+ return NMonitoring::ExplicitHistogram({0, 1, 2, 5, 10, 20, 50, 100, 500, 1000, 2000, 5000, 10000, 30000, 50000, 500000});
+ }
+};
+
+using TRequestCountersPtr = TIntrusivePtr<TRequestCounters>;
+
+template<class TRequestProto, class TRequest, class TResponse, class TResponseProxy, bool ResolveFolder = false>
+class TRequestActor : public NActors::TActorBootstrapped<TRequestActor<TRequestProto, TRequest, TResponse, TResponseProxy, ResolveFolder>> {
+ using TBase = NActors::TActorBootstrapped<TRequestActor<TRequestProto, TRequest, TResponse, TResponseProxy, ResolveFolder>>;
+ using TBase::SelfId;
+ using TBase::Send;
+ using TBase::PassAway;
+ using TBase::Become;
+
+ NConfig::TControlPlaneProxyConfig Config;
+ TRequestProto RequestProto;
+ TString Scope;
+ TString FolderId;
+ TString User;
+ TString Token;
+ TActorId Sender;
+ ui32 Cookie;
+ TActorId ServiceId;
+ TRequestCountersPtr Counters;
+ TInstant StartTime;
+ std::function<void(const TDuration&, bool, bool)> Probe;
+ TPermissions Permissions;
+ TRequestCountersPtr ResolveFolderCounters;
+ TString CloudId;
+
+public:
static constexpr char ActorName[] = "YQ_CONTROL_PLANE_PROXY_REQUEST_ACTOR";
- explicit TRequestActor(const NConfig::TControlPlaneProxyConfig& config,
- TActorId sender, ui32 cookie,
- const TString& scope, const TString& folderId, TRequestProto&& requestProto,
- TString&& user, TString&& token, const TActorId& serviceId,
- const TRequestCountersPtr& counters,
- const std::function<void(const TDuration&, bool, bool)>& probe,
- TPermissions permissions,
- const TRequestCountersPtr& resolveFolderCounters = nullptr)
- : Config(config)
- , RequestProto(std::forward<TRequestProto>(requestProto))
- , Scope(scope)
- , FolderId(folderId)
- , User(std::move(user))
- , Token(std::move(token))
- , Sender(sender)
- , Cookie(cookie)
- , ServiceId(serviceId)
- , Counters(counters)
- , StartTime(TInstant::Now())
- , Probe(probe)
- , Permissions(permissions)
- , ResolveFolderCounters(resolveFolderCounters)
- {
- Counters->InFly->Inc();
- FillDefaultParameters(Config);
- }
-
-public:
-
- void Bootstrap() {
- CPP_LOG_T("Request actor. Actor id: " << SelfId());
- Become(&TRequestActor::StateFunc, GetDuration(Config.GetRequestTimeout(), TDuration::Seconds(30)), new NActors::TEvents::TEvWakeup());
- if constexpr (ResolveFolder) {
+ explicit TRequestActor(const NConfig::TControlPlaneProxyConfig& config,
+ TActorId sender, ui32 cookie,
+ const TString& scope, const TString& folderId, TRequestProto&& requestProto,
+ TString&& user, TString&& token, const TActorId& serviceId,
+ const TRequestCountersPtr& counters,
+ const std::function<void(const TDuration&, bool, bool)>& probe,
+ TPermissions permissions,
+ const TRequestCountersPtr& resolveFolderCounters = nullptr)
+ : Config(config)
+ , RequestProto(std::forward<TRequestProto>(requestProto))
+ , Scope(scope)
+ , FolderId(folderId)
+ , User(std::move(user))
+ , Token(std::move(token))
+ , Sender(sender)
+ , Cookie(cookie)
+ , ServiceId(serviceId)
+ , Counters(counters)
+ , StartTime(TInstant::Now())
+ , Probe(probe)
+ , Permissions(permissions)
+ , ResolveFolderCounters(resolveFolderCounters)
+ {
+ Counters->InFly->Inc();
+ FillDefaultParameters(Config);
+ }
+
+public:
+
+ void Bootstrap() {
+ CPP_LOG_T("Request actor. Actor id: " << SelfId());
+ Become(&TRequestActor::StateFunc, GetDuration(Config.GetRequestTimeout(), TDuration::Seconds(30)), new NActors::TEvents::TEvWakeup());
+ if constexpr (ResolveFolder) {
auto request = std::make_unique<NKikimr::NFolderService::TEvFolderService::TEvGetFolderRequest>();
request->Request.set_folder_id(FolderId);
request->Token = Token;
- ResolveFolderCounters->InFly->Inc();
+ ResolveFolderCounters->InFly->Inc();
Send(NKikimr::NFolderService::FolderServiceActorId(), request.release(), 0, 0);
- } else {
- Send(ServiceId, new TRequest(Scope, RequestProto, User, Token, Permissions), 0, Cookie);
- }
- }
-
- STRICT_STFUNC(StateFunc,
- cFunc(NActors::TEvents::TSystem::Wakeup, HandleTimeout);
- hFunc(TResponse, Handle);
+ } else {
+ Send(ServiceId, new TRequest(Scope, RequestProto, User, Token, Permissions), 0, Cookie);
+ }
+ }
+
+ STRICT_STFUNC(StateFunc,
+ cFunc(NActors::TEvents::TSystem::Wakeup, HandleTimeout);
+ hFunc(TResponse, Handle);
hFunc(NKikimr::NFolderService::TEvFolderService::TEvGetFolderResponse, Handle);
- )
-
- void HandleTimeout() {
- CPP_LOG_D("Request timeout. " << RequestProto.DebugString());
- NYql::TIssues issues;
- NYql::TIssue issue = MakeErrorIssue(TIssuesIds::TIMEOUT, "Request timeout. Try repeating the request later");
- issues.AddIssue(issue);
- if (ResolveFolder && !CloudId) {
- ResolveFolderCounters->Error->Inc();
- ResolveFolderCounters->Timeout->Inc();
- }
- Counters->Error->Inc();
- Counters->Timeout->Inc();
- const TDuration delta = TInstant::Now() - StartTime;
- Probe(delta, false, true);
- Send(Sender, new TResponseProxy(issues), 0, Cookie);
- PassAway();
- }
-
+ )
+
+ void HandleTimeout() {
+ CPP_LOG_D("Request timeout. " << RequestProto.DebugString());
+ NYql::TIssues issues;
+ NYql::TIssue issue = MakeErrorIssue(TIssuesIds::TIMEOUT, "Request timeout. Try repeating the request later");
+ issues.AddIssue(issue);
+ if (ResolveFolder && !CloudId) {
+ ResolveFolderCounters->Error->Inc();
+ ResolveFolderCounters->Timeout->Inc();
+ }
+ Counters->Error->Inc();
+ Counters->Timeout->Inc();
+ const TDuration delta = TInstant::Now() - StartTime;
+ Probe(delta, false, true);
+ Send(Sender, new TResponseProxy(issues), 0, Cookie);
+ PassAway();
+ }
+
void Handle(NKikimr::NFolderService::TEvFolderService::TEvGetFolderResponse::TPtr& ev) {
- ResolveFolderCounters->InFly->Dec();
- ResolveFolderCounters->LatencyMs->Collect((TInstant::Now() - StartTime).MilliSeconds());
-
+ ResolveFolderCounters->InFly->Dec();
+ ResolveFolderCounters->LatencyMs->Collect((TInstant::Now() - StartTime).MilliSeconds());
+
const auto& response = ev->Get()->Response;
TString errorMessage;
-
+
const auto& status = ev->Get()->Status;
if (!status.Ok() || !ev->Get()->Response.has_folder()) {
- ResolveFolderCounters->Error->Inc();
+ ResolveFolderCounters->Error->Inc();
errorMessage = "Msg: " + status.Msg + " Details: " + status.Details + " Code: " + ToString(status.GRpcStatusCode) + " InternalError: " + ToString(status.InternalError);
CPP_LOG_E(errorMessage);
- NYql::TIssues issues;
+ NYql::TIssues issues;
NYql::TIssue issue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, "Resolve folder error");
- issues.AddIssue(issue);
- Counters->Error->Inc();
- Counters->Timeout->Inc();
- const TDuration delta = TInstant::Now() - StartTime;
- Probe(delta, false, false);
- Send(Sender, new TResponseProxy(issues), 0, Cookie);
- PassAway();
- return;
- }
-
- ResolveFolderCounters->Ok->Inc();
+ issues.AddIssue(issue);
+ Counters->Error->Inc();
+ Counters->Timeout->Inc();
+ const TDuration delta = TInstant::Now() - StartTime;
+ Probe(delta, false, false);
+ Send(Sender, new TResponseProxy(issues), 0, Cookie);
+ PassAway();
+ return;
+ }
+
+ ResolveFolderCounters->Ok->Inc();
CloudId = response.folder().cloud_id();
- CPP_LOG_T("Cloud id: " << CloudId << " Folder id: " << FolderId);
- if constexpr (ResolveFolder) {
- Send(ServiceId, new TRequest(Scope, RequestProto, User, Token, CloudId, Permissions), 0, Cookie);
- }
- }
-
- void Handle(typename TResponse::TPtr& ev) {
- const TDuration delta = TInstant::Now() - StartTime;
- auto& response = *ev->Get();
- ProcessResponse(delta, response);
- }
-
- template<typename T>
- void ProcessResponse(const TDuration& delta, const T& response) {
- if (response.Issues) {
- Counters->Error->Inc();
- Probe(delta, false, false);
- Send(Sender, new TResponseProxy(response.Issues), 0, Cookie);
- } else {
- Counters->Ok->Inc();
- Probe(delta, true, false);
- Send(Sender, new TResponseProxy(response.Result), 0, Cookie);
- }
- PassAway();
- }
-
- template<typename T> requires requires (T t) { t.AuditDetails; }
- void ProcessResponse(const TDuration& delta, const T& response) {
- if (response.Issues) {
- Counters->Error->Inc();
- Probe(delta, false, false);
- Send(Sender, new TResponseProxy(response.Issues), 0, Cookie);
- } else {
- Counters->Ok->Inc();
- Probe(delta, true, false);
- Send(Sender, new TResponseProxy(response.Result, response.AuditDetails), 0, Cookie);
- }
- PassAway();
- }
-
- virtual ~TRequestActor() {
- Counters->InFly->Dec();
- Counters->LatencyMs->Collect((TInstant::Now() - StartTime).MilliSeconds());
- }
-
- TDuration GetDuration(const TString& value, const TDuration& defaultValue)
- {
- TDuration result = defaultValue;
- TDuration::TryParse(value, result);
- return result;
- }
-
- void FillDefaultParameters(NConfig::TControlPlaneProxyConfig& config)
- {
- if (!config.GetRequestTimeout()) {
- config.SetRequestTimeout("30s");
- }
- }
-};
-
-class TControlPlaneProxyActor : public NActors::TActorBootstrapped<TControlPlaneProxyActor> {
- enum ERequestType {
- RT_CREATE_QUERY,
- RT_LIST_QUERIES,
- RT_DESCRIBE_QUERY,
+ CPP_LOG_T("Cloud id: " << CloudId << " Folder id: " << FolderId);
+ if constexpr (ResolveFolder) {
+ Send(ServiceId, new TRequest(Scope, RequestProto, User, Token, CloudId, Permissions), 0, Cookie);
+ }
+ }
+
+ void Handle(typename TResponse::TPtr& ev) {
+ const TDuration delta = TInstant::Now() - StartTime;
+ auto& response = *ev->Get();
+ ProcessResponse(delta, response);
+ }
+
+ template<typename T>
+ void ProcessResponse(const TDuration& delta, const T& response) {
+ if (response.Issues) {
+ Counters->Error->Inc();
+ Probe(delta, false, false);
+ Send(Sender, new TResponseProxy(response.Issues), 0, Cookie);
+ } else {
+ Counters->Ok->Inc();
+ Probe(delta, true, false);
+ Send(Sender, new TResponseProxy(response.Result), 0, Cookie);
+ }
+ PassAway();
+ }
+
+ template<typename T> requires requires (T t) { t.AuditDetails; }
+ void ProcessResponse(const TDuration& delta, const T& response) {
+ if (response.Issues) {
+ Counters->Error->Inc();
+ Probe(delta, false, false);
+ Send(Sender, new TResponseProxy(response.Issues), 0, Cookie);
+ } else {
+ Counters->Ok->Inc();
+ Probe(delta, true, false);
+ Send(Sender, new TResponseProxy(response.Result, response.AuditDetails), 0, Cookie);
+ }
+ PassAway();
+ }
+
+ virtual ~TRequestActor() {
+ Counters->InFly->Dec();
+ Counters->LatencyMs->Collect((TInstant::Now() - StartTime).MilliSeconds());
+ }
+
+ TDuration GetDuration(const TString& value, const TDuration& defaultValue)
+ {
+ TDuration result = defaultValue;
+ TDuration::TryParse(value, result);
+ return result;
+ }
+
+ void FillDefaultParameters(NConfig::TControlPlaneProxyConfig& config)
+ {
+ if (!config.GetRequestTimeout()) {
+ config.SetRequestTimeout("30s");
+ }
+ }
+};
+
+class TControlPlaneProxyActor : public NActors::TActorBootstrapped<TControlPlaneProxyActor> {
+ enum ERequestType {
+ RT_CREATE_QUERY,
+ RT_LIST_QUERIES,
+ RT_DESCRIBE_QUERY,
RT_GET_QUERY_STATUS,
- RT_MODIFY_QUERY,
- RT_DELETE_QUERY,
- RT_CONTROL_QUERY,
- RT_GET_RESULT_DATA,
- RT_LIST_JOBS,
+ RT_MODIFY_QUERY,
+ RT_DELETE_QUERY,
+ RT_CONTROL_QUERY,
+ RT_GET_RESULT_DATA,
+ RT_LIST_JOBS,
RT_DESCRIBE_JOB,
- RT_CREATE_CONNECTION,
- RT_LIST_CONNECTIONS,
- RT_DESCRIBE_CONNECTION,
- RT_MODIFY_CONNECTION,
- RT_DELETE_CONNECTION,
- RT_TEST_CONNECTION,
- RT_CREATE_BINDING,
- RT_LIST_BINDINGS,
- RT_DESCRIBE_BINDING,
- RT_MODIFY_BINDING,
- RT_DELETE_BINDING,
- RT_RESOLVE_FOLDER,
- RT_MAX,
- };
-
- struct TCounters: public virtual TThrRefBase {
- std::array<TRequestCountersPtr, RT_MAX> Requests = CreateArray<RT_MAX, TRequestCountersPtr>({
- { MakeIntrusive<TRequestCounters>("CreateQuery") },
- { MakeIntrusive<TRequestCounters>("ListQueries") },
- { MakeIntrusive<TRequestCounters>("DescribeQuery") },
+ RT_CREATE_CONNECTION,
+ RT_LIST_CONNECTIONS,
+ RT_DESCRIBE_CONNECTION,
+ RT_MODIFY_CONNECTION,
+ RT_DELETE_CONNECTION,
+ RT_TEST_CONNECTION,
+ RT_CREATE_BINDING,
+ RT_LIST_BINDINGS,
+ RT_DESCRIBE_BINDING,
+ RT_MODIFY_BINDING,
+ RT_DELETE_BINDING,
+ RT_RESOLVE_FOLDER,
+ RT_MAX,
+ };
+
+ struct TCounters: public virtual TThrRefBase {
+ std::array<TRequestCountersPtr, RT_MAX> Requests = CreateArray<RT_MAX, TRequestCountersPtr>({
+ { MakeIntrusive<TRequestCounters>("CreateQuery") },
+ { MakeIntrusive<TRequestCounters>("ListQueries") },
+ { MakeIntrusive<TRequestCounters>("DescribeQuery") },
{ MakeIntrusive<TRequestCounters>("GetQueryStatus") },
- { MakeIntrusive<TRequestCounters>("ModifyQuery") },
- { MakeIntrusive<TRequestCounters>("DeleteQuery") },
- { MakeIntrusive<TRequestCounters>("ControlQuery") },
- { MakeIntrusive<TRequestCounters>("GetResultData") },
- { MakeIntrusive<TRequestCounters>("ListJobs") },
+ { MakeIntrusive<TRequestCounters>("ModifyQuery") },
+ { MakeIntrusive<TRequestCounters>("DeleteQuery") },
+ { MakeIntrusive<TRequestCounters>("ControlQuery") },
+ { MakeIntrusive<TRequestCounters>("GetResultData") },
+ { MakeIntrusive<TRequestCounters>("ListJobs") },
{ MakeIntrusive<TRequestCounters>("DescribeJob") },
- { MakeIntrusive<TRequestCounters>("CreateConnection") },
- { MakeIntrusive<TRequestCounters>("ListConnections") },
- { MakeIntrusive<TRequestCounters>("DescribeConnection") },
- { MakeIntrusive<TRequestCounters>("ModifyConnection") },
- { MakeIntrusive<TRequestCounters>("DeleteConnection") },
- { MakeIntrusive<TRequestCounters>("TestConnection") },
- { MakeIntrusive<TRequestCounters>("CreateBinding") },
- { MakeIntrusive<TRequestCounters>("ListBindings") },
- { MakeIntrusive<TRequestCounters>("DescribeBinding") },
- { MakeIntrusive<TRequestCounters>("ModifyBinding") },
- { MakeIntrusive<TRequestCounters>("DeleteBinding") },
- { MakeIntrusive<TRequestCounters>("ResolveFolder") },
- });
-
- NMonitoring::TDynamicCounterPtr Counters;
-
- explicit TCounters(const NMonitoring::TDynamicCounterPtr& counters)
- : Counters(counters)
- {
- for (auto& request: Requests) {
- request->Register(Counters);
+ { MakeIntrusive<TRequestCounters>("CreateConnection") },
+ { MakeIntrusive<TRequestCounters>("ListConnections") },
+ { MakeIntrusive<TRequestCounters>("DescribeConnection") },
+ { MakeIntrusive<TRequestCounters>("ModifyConnection") },
+ { MakeIntrusive<TRequestCounters>("DeleteConnection") },
+ { MakeIntrusive<TRequestCounters>("TestConnection") },
+ { MakeIntrusive<TRequestCounters>("CreateBinding") },
+ { MakeIntrusive<TRequestCounters>("ListBindings") },
+ { MakeIntrusive<TRequestCounters>("DescribeBinding") },
+ { MakeIntrusive<TRequestCounters>("ModifyBinding") },
+ { MakeIntrusive<TRequestCounters>("DeleteBinding") },
+ { MakeIntrusive<TRequestCounters>("ResolveFolder") },
+ });
+
+ NMonitoring::TDynamicCounterPtr Counters;
+
+ explicit TCounters(const NMonitoring::TDynamicCounterPtr& counters)
+ : Counters(counters)
+ {
+ for (auto& request: Requests) {
+ request->Register(Counters);
}
- }
- };
-
- TCounters Counters;
- NConfig::TControlPlaneProxyConfig Config;
-
-public:
- TControlPlaneProxyActor(const NConfig::TControlPlaneProxyConfig& config, const NMonitoring::TDynamicCounterPtr& counters)
- : Counters(counters)
- , Config(config)
- {
- }
-
+ }
+ };
+
+ TCounters Counters;
+ NConfig::TControlPlaneProxyConfig Config;
+
+public:
+ TControlPlaneProxyActor(const NConfig::TControlPlaneProxyConfig& config, const NMonitoring::TDynamicCounterPtr& counters)
+ : Counters(counters)
+ , Config(config)
+ {
+ }
+
static constexpr char ActorName[] = "YQ_CONTROL_PLANE_PROXY";
-
- void Bootstrap() {
- CPP_LOG_D("Starting yandex query control plane proxy. Actor id: " << SelfId());
-
- NLwTraceMonPage::ProbeRegistry().AddProbesList(LWTRACE_GET_PROBES(YQ_CONTROL_PLANE_PROXY_PROVIDER));
-
- NActors::TMon* mon = AppData()->Mon;
- if (mon) {
- NMonitoring::TIndexMonPage* actorsMonPage = mon->RegisterIndexPage("actors", "Actors");
- mon->RegisterActorPage(actorsMonPage, "yq_control_plane_proxy", "YQ Control Plane Proxy", false,
- TlsActivationContext->ExecutorThread.ActorSystem, SelfId());
- }
-
- Become(&TControlPlaneProxyActor::StateFunc);
- }
-
-private:
- STRICT_STFUNC(StateFunc,
- hFunc(TEvControlPlaneProxy::TEvCreateQueryRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvListQueriesRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvDescribeQueryRequest, Handle);
+
+ void Bootstrap() {
+ CPP_LOG_D("Starting yandex query control plane proxy. Actor id: " << SelfId());
+
+ NLwTraceMonPage::ProbeRegistry().AddProbesList(LWTRACE_GET_PROBES(YQ_CONTROL_PLANE_PROXY_PROVIDER));
+
+ NActors::TMon* mon = AppData()->Mon;
+ if (mon) {
+ NMonitoring::TIndexMonPage* actorsMonPage = mon->RegisterIndexPage("actors", "Actors");
+ mon->RegisterActorPage(actorsMonPage, "yq_control_plane_proxy", "YQ Control Plane Proxy", false,
+ TlsActivationContext->ExecutorThread.ActorSystem, SelfId());
+ }
+
+ Become(&TControlPlaneProxyActor::StateFunc);
+ }
+
+private:
+ STRICT_STFUNC(StateFunc,
+ hFunc(TEvControlPlaneProxy::TEvCreateQueryRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvListQueriesRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvDescribeQueryRequest, Handle);
hFunc(TEvControlPlaneProxy::TEvGetQueryStatusRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvModifyQueryRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvDeleteQueryRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvControlQueryRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvGetResultDataRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvListJobsRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvModifyQueryRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvDeleteQueryRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvControlQueryRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvGetResultDataRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvListJobsRequest, Handle);
hFunc(TEvControlPlaneProxy::TEvDescribeJobRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvCreateConnectionRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvListConnectionsRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvDescribeConnectionRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvModifyConnectionRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvDeleteConnectionRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvTestConnectionRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvCreateBindingRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvListBindingsRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvDescribeBindingRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvModifyBindingRequest, Handle);
- hFunc(TEvControlPlaneProxy::TEvDeleteBindingRequest, Handle);
- hFunc(NMon::TEvHttpInfo, Handle);
- )
-
- inline static const TMap<TString, TPermissions::TPermission> PermissionsItems = {
- {"yq.resources.viewPublic@as", TPermissions::VIEW_PUBLIC},
- {"yq.resources.viewPrivate@as", TPermissions::VIEW_PRIVATE},
- {"yq.queries.viewAst@as", TPermissions::VIEW_AST},
- {"yq.resources.managePublic@as", TPermissions::MANAGE_PUBLIC},
- {"yq.resources.managePrivate@as", TPermissions::MANAGE_PRIVATE},
- {"yq.connections.use@as", TPermissions::CONNECTIONS_USE},
- {"yq.bindings.use@as", TPermissions::BINDINGS_USE},
- {"yq.queries.invoke@as", TPermissions::QUERY_INVOKE},
- };
-
- template<typename T>
- TPermissions ExtractPermissions(T& ev) {
- TPermissions permissions;
- for (const auto& permission: ev->Get()->Permissions) {
- if (auto it = PermissionsItems.find(permission); it != PermissionsItems.end()) {
- permissions.Set(it->second);
- }
- }
- return permissions;
- }
-
- template<typename T>
- NYql::TIssues ValidatePermissions(T& ev, const TVector<TString>& requiredPermissions) {
- NYql::TIssues issues;
- if (!Config.GetEnablePermissions()) {
- return issues;
- }
-
- for (const auto& requiredPermission: requiredPermissions) {
- if (!IsIn(ev->Get()->Permissions, requiredPermission)) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::ACCESS_DENIED, "No permission " + requiredPermission + " in a given scope yandexcloud://" + ev->Get()->FolderId));
- }
- }
-
- return issues;
- }
-
- void Handle(TEvControlPlaneProxy::TEvCreateQueryRequest::TPtr& ev) {
+ hFunc(TEvControlPlaneProxy::TEvCreateConnectionRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvListConnectionsRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvDescribeConnectionRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvModifyConnectionRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvDeleteConnectionRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvTestConnectionRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvCreateBindingRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvListBindingsRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvDescribeBindingRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvModifyBindingRequest, Handle);
+ hFunc(TEvControlPlaneProxy::TEvDeleteBindingRequest, Handle);
+ hFunc(NMon::TEvHttpInfo, Handle);
+ )
+
+ inline static const TMap<TString, TPermissions::TPermission> PermissionsItems = {
+ {"yq.resources.viewPublic@as", TPermissions::VIEW_PUBLIC},
+ {"yq.resources.viewPrivate@as", TPermissions::VIEW_PRIVATE},
+ {"yq.queries.viewAst@as", TPermissions::VIEW_AST},
+ {"yq.resources.managePublic@as", TPermissions::MANAGE_PUBLIC},
+ {"yq.resources.managePrivate@as", TPermissions::MANAGE_PRIVATE},
+ {"yq.connections.use@as", TPermissions::CONNECTIONS_USE},
+ {"yq.bindings.use@as", TPermissions::BINDINGS_USE},
+ {"yq.queries.invoke@as", TPermissions::QUERY_INVOKE},
+ };
+
+ template<typename T>
+ TPermissions ExtractPermissions(T& ev) {
+ TPermissions permissions;
+ for (const auto& permission: ev->Get()->Permissions) {
+ if (auto it = PermissionsItems.find(permission); it != PermissionsItems.end()) {
+ permissions.Set(it->second);
+ }
+ }
+ return permissions;
+ }
+
+ template<typename T>
+ NYql::TIssues ValidatePermissions(T& ev, const TVector<TString>& requiredPermissions) {
+ NYql::TIssues issues;
+ if (!Config.GetEnablePermissions()) {
+ return issues;
+ }
+
+ for (const auto& requiredPermission: requiredPermissions) {
+ if (!IsIn(ev->Get()->Permissions, requiredPermission)) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::ACCESS_DENIED, "No permission " + requiredPermission + " in a given scope yandexcloud://" + ev->Get()->FolderId));
+ }
+ }
+
+ return issues;
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvCreateQueryRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::CreateQueryRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("CreateQueryRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_CREATE_QUERY];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(CreateQueryRequest, scope, user, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.queries.create@as"});
- if (issues) {
- CPS_LOG_E("CreateQueryRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvCreateQueryResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::CreateQueryRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("CreateQueryRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_CREATE_QUERY];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(CreateQueryRequest, scope, user, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.queries.create@as"});
+ if (issues) {
+ CPS_LOG_E("CreateQueryRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvCreateQueryResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::CreateQueryRequest,
- TEvControlPlaneStorage::TEvCreateQueryRequest,
- TEvControlPlaneStorage::TEvCreateQueryResponse,
- TEvControlPlaneProxy::TEvCreateQueryResponse,
- true>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe, ExtractPermissions(ev), Counters.Requests[RT_RESOLVE_FOLDER]));
- }
-
- void Handle(TEvControlPlaneProxy::TEvListQueriesRequest::TPtr& ev) {
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::CreateQueryRequest,
+ TEvControlPlaneStorage::TEvCreateQueryRequest,
+ TEvControlPlaneStorage::TEvCreateQueryResponse,
+ TEvControlPlaneProxy::TEvCreateQueryResponse,
+ true>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe, ExtractPermissions(ev), Counters.Requests[RT_RESOLVE_FOLDER]));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvListQueriesRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::ListQueriesRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("ListQueriesRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_QUERIES];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(ListQueriesRequest, scope, user, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.queries.get@as"});
- if (issues) {
- CPS_LOG_E("ListQueriesRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvListQueriesResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::ListQueriesRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("ListQueriesRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_QUERIES];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(ListQueriesRequest, scope, user, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.queries.get@as"});
+ if (issues) {
+ CPS_LOG_E("ListQueriesRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvListQueriesResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::ListQueriesRequest,
- TEvControlPlaneStorage::TEvListQueriesRequest,
- TEvControlPlaneStorage::TEvListQueriesResponse,
- TEvControlPlaneProxy::TEvListQueriesResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe,
- ExtractPermissions(ev)));
- }
-
- void Handle(TEvControlPlaneProxy::TEvDescribeQueryRequest::TPtr& ev) {
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::ListQueriesRequest,
+ TEvControlPlaneStorage::TEvListQueriesRequest,
+ TEvControlPlaneStorage::TEvListQueriesResponse,
+ TEvControlPlaneProxy::TEvListQueriesResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe,
+ ExtractPermissions(ev)));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvDescribeQueryRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::DescribeQueryRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("DescribeQueryRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_DESCRIBE_QUERY];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const TString queryId = request.query_id();
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(DescribeQueryRequest, scope, user, queryId, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.queries.get@as"});
- if (issues) {
- CPS_LOG_E("DescribeQueryRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvDescribeQueryResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::DescribeQueryRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("DescribeQueryRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_DESCRIBE_QUERY];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const TString queryId = request.query_id();
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(DescribeQueryRequest, scope, user, queryId, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.queries.get@as"});
+ if (issues) {
+ CPS_LOG_E("DescribeQueryRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvDescribeQueryResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::DescribeQueryRequest,
- TEvControlPlaneStorage::TEvDescribeQueryRequest,
- TEvControlPlaneStorage::TEvDescribeQueryResponse,
- TEvControlPlaneProxy::TEvDescribeQueryResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe,
- ExtractPermissions(ev)));
- }
-
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::DescribeQueryRequest,
+ TEvControlPlaneStorage::TEvDescribeQueryRequest,
+ TEvControlPlaneStorage::TEvDescribeQueryResponse,
+ TEvControlPlaneProxy::TEvDescribeQueryResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe,
+ ExtractPermissions(ev)));
+ }
+
void Handle(TEvControlPlaneProxy::TEvGetQueryStatusRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
YandexQuery::GetQueryStatusRequest request = std::move(ev->Get()->Request);
@@ -566,208 +566,208 @@ private:
ExtractPermissions(ev)));
}
- void Handle(TEvControlPlaneProxy::TEvModifyQueryRequest::TPtr& ev) {
+ void Handle(TEvControlPlaneProxy::TEvModifyQueryRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::ModifyQueryRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("ModifyQueryRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_MODIFY_QUERY];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const TString queryId = request.query_id();
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(ModifyQueryRequest, scope, user, queryId, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.queries.update@as"});
- if (issues) {
- CPS_LOG_E("ModifyQueryRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvModifyQueryResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::ModifyQueryRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("ModifyQueryRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_MODIFY_QUERY];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const TString queryId = request.query_id();
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(ModifyQueryRequest, scope, user, queryId, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.queries.update@as"});
+ if (issues) {
+ CPS_LOG_E("ModifyQueryRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvModifyQueryResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::ModifyQueryRequest,
- TEvControlPlaneStorage::TEvModifyQueryRequest,
- TEvControlPlaneStorage::TEvModifyQueryResponse,
- TEvControlPlaneProxy::TEvModifyQueryResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe,
- ExtractPermissions(ev)));
- }
-
- void Handle(TEvControlPlaneProxy::TEvDeleteQueryRequest::TPtr& ev) {
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::ModifyQueryRequest,
+ TEvControlPlaneStorage::TEvModifyQueryRequest,
+ TEvControlPlaneStorage::TEvModifyQueryResponse,
+ TEvControlPlaneProxy::TEvModifyQueryResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe,
+ ExtractPermissions(ev)));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvDeleteQueryRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::DeleteQueryRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("DeleteQueryRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_DELETE_QUERY];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const TString queryId = request.query_id();
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(DeleteQueryRequest, scope, user, queryId, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.queries.delete@as"});
- if (issues) {
- CPS_LOG_E("DeleteQueryRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvDeleteQueryResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::DeleteQueryRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("DeleteQueryRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_DELETE_QUERY];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const TString queryId = request.query_id();
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(DeleteQueryRequest, scope, user, queryId, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.queries.delete@as"});
+ if (issues) {
+ CPS_LOG_E("DeleteQueryRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvDeleteQueryResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::DeleteQueryRequest,
- TEvControlPlaneStorage::TEvDeleteQueryRequest,
- TEvControlPlaneStorage::TEvDeleteQueryResponse,
- TEvControlPlaneProxy::TEvDeleteQueryResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe,
- ExtractPermissions(ev)));
- }
-
- void Handle(TEvControlPlaneProxy::TEvControlQueryRequest::TPtr& ev) {
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::DeleteQueryRequest,
+ TEvControlPlaneStorage::TEvDeleteQueryRequest,
+ TEvControlPlaneStorage::TEvDeleteQueryResponse,
+ TEvControlPlaneProxy::TEvDeleteQueryResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe,
+ ExtractPermissions(ev)));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvControlQueryRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::ControlQueryRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("ControlQueryRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_CONTROL_QUERY];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const TString queryId = request.query_id();
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(ControlQueryRequest, scope, user, queryId, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.queries.control@as"});
- if (issues) {
- CPS_LOG_E("ControlQueryRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvControlQueryResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::ControlQueryRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("ControlQueryRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_CONTROL_QUERY];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const TString queryId = request.query_id();
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(ControlQueryRequest, scope, user, queryId, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.queries.control@as"});
+ if (issues) {
+ CPS_LOG_E("ControlQueryRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvControlQueryResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::ControlQueryRequest,
- TEvControlPlaneStorage::TEvControlQueryRequest,
- TEvControlPlaneStorage::TEvControlQueryResponse,
- TEvControlPlaneProxy::TEvControlQueryResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe,
- ExtractPermissions(ev)));
- }
-
- void Handle(TEvControlPlaneProxy::TEvGetResultDataRequest::TPtr& ev) {
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::ControlQueryRequest,
+ TEvControlPlaneStorage::TEvControlQueryRequest,
+ TEvControlPlaneStorage::TEvControlQueryResponse,
+ TEvControlPlaneProxy::TEvControlQueryResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe,
+ ExtractPermissions(ev)));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvGetResultDataRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::GetResultDataRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("GetResultDataRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_GET_RESULT_DATA];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const TString queryId = request.query_id();
- const int32_t resultSetIndex = request.result_set_index();
- const int64_t limit = request.limit();
- const int64_t offset = request.offset();
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(GetResultDataRequest, scope, user, queryId, resultSetIndex, offset, limit, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.queries.getData@as"});
- if (issues) {
- CPS_LOG_E("GetResultDataRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvGetResultDataResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::GetResultDataRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("GetResultDataRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_GET_RESULT_DATA];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const TString queryId = request.query_id();
+ const int32_t resultSetIndex = request.result_set_index();
+ const int64_t limit = request.limit();
+ const int64_t offset = request.offset();
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(GetResultDataRequest, scope, user, queryId, resultSetIndex, offset, limit, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.queries.getData@as"});
+ if (issues) {
+ CPS_LOG_E("GetResultDataRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvGetResultDataResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::GetResultDataRequest,
- TEvControlPlaneStorage::TEvGetResultDataRequest,
- TEvControlPlaneStorage::TEvGetResultDataResponse,
- TEvControlPlaneProxy::TEvGetResultDataResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe,
- ExtractPermissions(ev)));
- }
-
- void Handle(TEvControlPlaneProxy::TEvListJobsRequest::TPtr& ev) {
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::GetResultDataRequest,
+ TEvControlPlaneStorage::TEvGetResultDataRequest,
+ TEvControlPlaneStorage::TEvGetResultDataResponse,
+ TEvControlPlaneProxy::TEvGetResultDataResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe,
+ ExtractPermissions(ev)));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvListJobsRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::ListJobsRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("ListJobsRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_JOBS];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const TString queryId = request.query_id();
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(ListJobsRequest, scope, user, queryId, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.jobs.get@as"});
- if (issues) {
- CPS_LOG_E("ListJobsRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvListJobsResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::ListJobsRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("ListJobsRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_JOBS];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const TString queryId = request.query_id();
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(ListJobsRequest, scope, user, queryId, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.jobs.get@as"});
+ if (issues) {
+ CPS_LOG_E("ListJobsRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvListJobsResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::ListJobsRequest,
- TEvControlPlaneStorage::TEvListJobsRequest,
- TEvControlPlaneStorage::TEvListJobsResponse,
- TEvControlPlaneProxy::TEvListJobsResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe,
- ExtractPermissions(ev)));
- }
-
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::ListJobsRequest,
+ TEvControlPlaneStorage::TEvListJobsRequest,
+ TEvControlPlaneStorage::TEvListJobsResponse,
+ TEvControlPlaneProxy::TEvListJobsResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe,
+ ExtractPermissions(ev)));
+ }
+
void Handle(TEvControlPlaneProxy::TEvDescribeJobRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
YandexQuery::DescribeJobRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("DescribeJobRequest: " << request.DebugString());
+ CPP_LOG_T("DescribeJobRequest: " << request.DebugString());
TRequestCountersPtr requestCounters = Counters.Requests[RT_DESCRIBE_JOB];
const TString folderId = ev->Get()->FolderId;
@@ -781,7 +781,7 @@ private:
LWPROBE(DescribeJobRequest, scope, user, jobId, delta, byteSize, isSuccess, isTimeout);
};
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.jobs.get@as"});
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.jobs.get@as"});
if (issues) {
CPS_LOG_E("DescribeJobRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
Send(ev->Sender, new TEvControlPlaneProxy::TEvDescribeJobResponse(issues), 0, ev->Cookie);
@@ -799,471 +799,471 @@ private:
std::move(request), std::move(user), std::move(token),
ControlPlaneStorageServiceActorId(),
requestCounters,
- probe,
- ExtractPermissions(ev)));
+ probe,
+ ExtractPermissions(ev)));
}
- void Handle(TEvControlPlaneProxy::TEvCreateConnectionRequest::TPtr& ev) {
+ void Handle(TEvControlPlaneProxy::TEvCreateConnectionRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::CreateConnectionRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("CreateConnectionRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_CREATE_CONNECTION];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(CreateConnectionRequest, scope, user, delta, byteSize, isSuccess, isTimeout);
- };
-
- TVector<TString> requiredPermissions = {"yq.connections.create@as"};
- if (ExtractServiceAccountId(request)) {
- requiredPermissions.push_back("iam.serviceAccounts.use@as");
- }
-
- NYql::TIssues issues = ValidatePermissions(ev, requiredPermissions);
- if (issues) {
- CPS_LOG_E("CreateConnectionRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvCreateConnectionResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::CreateConnectionRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("CreateConnectionRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_CREATE_CONNECTION];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(CreateConnectionRequest, scope, user, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ TVector<TString> requiredPermissions = {"yq.connections.create@as"};
+ if (ExtractServiceAccountId(request)) {
+ requiredPermissions.push_back("iam.serviceAccounts.use@as");
+ }
+
+ NYql::TIssues issues = ValidatePermissions(ev, requiredPermissions);
+ if (issues) {
+ CPS_LOG_E("CreateConnectionRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvCreateConnectionResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::CreateConnectionRequest,
- TEvControlPlaneStorage::TEvCreateConnectionRequest,
- TEvControlPlaneStorage::TEvCreateConnectionResponse,
- TEvControlPlaneProxy::TEvCreateConnectionResponse,
- true>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe, ExtractPermissions(ev), Counters.Requests[RT_RESOLVE_FOLDER]));
- }
-
- void Handle(TEvControlPlaneProxy::TEvListConnectionsRequest::TPtr& ev) {
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::CreateConnectionRequest,
+ TEvControlPlaneStorage::TEvCreateConnectionRequest,
+ TEvControlPlaneStorage::TEvCreateConnectionResponse,
+ TEvControlPlaneProxy::TEvCreateConnectionResponse,
+ true>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe, ExtractPermissions(ev), Counters.Requests[RT_RESOLVE_FOLDER]));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvListConnectionsRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::ListConnectionsRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("ListConnectionsRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_CONNECTIONS];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(ListConnectionsRequest, scope, user, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.connections.get@as"});
- if (issues) {
- CPS_LOG_E("ListConnectionsRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvListConnectionsResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::ListConnectionsRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("ListConnectionsRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_CONNECTIONS];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(ListConnectionsRequest, scope, user, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.connections.get@as"});
+ if (issues) {
+ CPS_LOG_E("ListConnectionsRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvListConnectionsResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::ListConnectionsRequest,
- TEvControlPlaneStorage::TEvListConnectionsRequest,
- TEvControlPlaneStorage::TEvListConnectionsResponse,
- TEvControlPlaneProxy::TEvListConnectionsResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe,
- ExtractPermissions(ev)));
- }
-
- void Handle(TEvControlPlaneProxy::TEvDescribeConnectionRequest::TPtr& ev) {
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::ListConnectionsRequest,
+ TEvControlPlaneStorage::TEvListConnectionsRequest,
+ TEvControlPlaneStorage::TEvListConnectionsResponse,
+ TEvControlPlaneProxy::TEvListConnectionsResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe,
+ ExtractPermissions(ev)));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvDescribeConnectionRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::DescribeConnectionRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("DescribeConnectionRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_DESCRIBE_CONNECTION];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const TString connectionId = request.connection_id();
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(DescribeConnectionRequest, scope, user, connectionId, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.connections.get@as"});
- if (issues) {
- CPS_LOG_E("DescribeConnectionRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvDescribeConnectionResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::DescribeConnectionRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("DescribeConnectionRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_DESCRIBE_CONNECTION];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const TString connectionId = request.connection_id();
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(DescribeConnectionRequest, scope, user, connectionId, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.connections.get@as"});
+ if (issues) {
+ CPS_LOG_E("DescribeConnectionRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvDescribeConnectionResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::DescribeConnectionRequest,
- TEvControlPlaneStorage::TEvDescribeConnectionRequest,
- TEvControlPlaneStorage::TEvDescribeConnectionResponse,
- TEvControlPlaneProxy::TEvDescribeConnectionResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe,
- ExtractPermissions(ev)));
- }
-
- void Handle(TEvControlPlaneProxy::TEvModifyConnectionRequest::TPtr& ev) {
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::DescribeConnectionRequest,
+ TEvControlPlaneStorage::TEvDescribeConnectionRequest,
+ TEvControlPlaneStorage::TEvDescribeConnectionResponse,
+ TEvControlPlaneProxy::TEvDescribeConnectionResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe,
+ ExtractPermissions(ev)));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvModifyConnectionRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::ModifyConnectionRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("ModifyConnectionRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_MODIFY_CONNECTION];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const TString connectionId = request.connection_id();
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(ModifyConnectionRequest, scope, user, connectionId, delta, byteSize, isSuccess, isTimeout);
- };
-
- TVector<TString> requiredPermissions = {"yq.connections.update@as"};
- if (ExtractServiceAccountId(request)) {
- requiredPermissions.push_back("iam.serviceAccounts.use@as");
- }
-
- NYql::TIssues issues = ValidatePermissions(ev, requiredPermissions);
- if (issues) {
- CPS_LOG_E("ModifyConnectionRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvModifyConnectionResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::ModifyConnectionRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("ModifyConnectionRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_MODIFY_CONNECTION];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const TString connectionId = request.connection_id();
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(ModifyConnectionRequest, scope, user, connectionId, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ TVector<TString> requiredPermissions = {"yq.connections.update@as"};
+ if (ExtractServiceAccountId(request)) {
+ requiredPermissions.push_back("iam.serviceAccounts.use@as");
+ }
+
+ NYql::TIssues issues = ValidatePermissions(ev, requiredPermissions);
+ if (issues) {
+ CPS_LOG_E("ModifyConnectionRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvModifyConnectionResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::ModifyConnectionRequest,
- TEvControlPlaneStorage::TEvModifyConnectionRequest,
- TEvControlPlaneStorage::TEvModifyConnectionResponse,
- TEvControlPlaneProxy::TEvModifyConnectionResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe,
- ExtractPermissions(ev)));
- }
-
- void Handle(TEvControlPlaneProxy::TEvDeleteConnectionRequest::TPtr& ev) {
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::ModifyConnectionRequest,
+ TEvControlPlaneStorage::TEvModifyConnectionRequest,
+ TEvControlPlaneStorage::TEvModifyConnectionResponse,
+ TEvControlPlaneProxy::TEvModifyConnectionResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe,
+ ExtractPermissions(ev)));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvDeleteConnectionRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::DeleteConnectionRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("DeleteConnectionRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_DELETE_CONNECTION];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const TString connectionId = request.connection_id();
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(DeleteConnectionRequest, scope, user, connectionId, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.connections.delete@as"});
- if (issues) {
- CPS_LOG_E("DeleteConnectionRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvDeleteConnectionResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::DeleteConnectionRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("DeleteConnectionRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_DELETE_CONNECTION];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const TString connectionId = request.connection_id();
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(DeleteConnectionRequest, scope, user, connectionId, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.connections.delete@as"});
+ if (issues) {
+ CPS_LOG_E("DeleteConnectionRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvDeleteConnectionResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::DeleteConnectionRequest,
- TEvControlPlaneStorage::TEvDeleteConnectionRequest,
- TEvControlPlaneStorage::TEvDeleteConnectionResponse,
- TEvControlPlaneProxy::TEvDeleteConnectionResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe,
- ExtractPermissions(ev)));
- }
-
- void Handle(TEvControlPlaneProxy::TEvTestConnectionRequest::TPtr& ev) {
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::DeleteConnectionRequest,
+ TEvControlPlaneStorage::TEvDeleteConnectionRequest,
+ TEvControlPlaneStorage::TEvDeleteConnectionResponse,
+ TEvControlPlaneProxy::TEvDeleteConnectionResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe,
+ ExtractPermissions(ev)));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvTestConnectionRequest::TPtr& ev) {
+ TInstant startTime = TInstant::Now();
+ YandexQuery::TestConnectionRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("TestConnectionRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_TEST_CONNECTION];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(TestConnectionRequest, scope, user, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ TVector<TString> requiredPermissions = {"yq.connections.create@as"};
+ if (ExtractServiceAccountId(request)) {
+ requiredPermissions.push_back("iam.serviceAccounts.use@as");
+ }
+
+ NYql::TIssues issues = ValidatePermissions(ev, requiredPermissions);
+ if (issues) {
+ CPS_LOG_E("TestConnectionRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvTestConnectionResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
+ TDuration delta = TInstant::Now() - startTime;
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::TestConnectionRequest,
+ TEvTestConnection::TEvTestConnectionRequest,
+ TEvTestConnection::TEvTestConnectionResponse,
+ TEvControlPlaneProxy::TEvTestConnectionResponse>
+ (Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ TestConnectionActorId(),
+ requestCounters,
+ probe, ExtractPermissions(ev)));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvCreateBindingRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::TestConnectionRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("TestConnectionRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_TEST_CONNECTION];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(TestConnectionRequest, scope, user, delta, byteSize, isSuccess, isTimeout);
- };
-
- TVector<TString> requiredPermissions = {"yq.connections.create@as"};
- if (ExtractServiceAccountId(request)) {
- requiredPermissions.push_back("iam.serviceAccounts.use@as");
- }
-
- NYql::TIssues issues = ValidatePermissions(ev, requiredPermissions);
- if (issues) {
- CPS_LOG_E("TestConnectionRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvTestConnectionResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
- TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::TestConnectionRequest,
- TEvTestConnection::TEvTestConnectionRequest,
- TEvTestConnection::TEvTestConnectionResponse,
- TEvControlPlaneProxy::TEvTestConnectionResponse>
- (Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- TestConnectionActorId(),
- requestCounters,
- probe, ExtractPermissions(ev)));
- }
-
- void Handle(TEvControlPlaneProxy::TEvCreateBindingRequest::TPtr& ev) {
- TInstant startTime = TInstant::Now();
- YandexQuery::CreateBindingRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("CreateBindingRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_CREATE_BINDING];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(CreateBindingRequest, scope, user, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.bindings.create@as"});
- if (issues) {
- CPS_LOG_E("CreateBindingRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvCreateBindingResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::CreateBindingRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("CreateBindingRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_CREATE_BINDING];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(CreateBindingRequest, scope, user, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.bindings.create@as"});
+ if (issues) {
+ CPS_LOG_E("CreateBindingRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvCreateBindingResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::CreateBindingRequest,
- TEvControlPlaneStorage::TEvCreateBindingRequest,
- TEvControlPlaneStorage::TEvCreateBindingResponse,
- TEvControlPlaneProxy::TEvCreateBindingResponse,
- true>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe, ExtractPermissions(ev), Counters.Requests[RT_RESOLVE_FOLDER]));
- }
-
- void Handle(TEvControlPlaneProxy::TEvListBindingsRequest::TPtr& ev) {
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::CreateBindingRequest,
+ TEvControlPlaneStorage::TEvCreateBindingRequest,
+ TEvControlPlaneStorage::TEvCreateBindingResponse,
+ TEvControlPlaneProxy::TEvCreateBindingResponse,
+ true>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe, ExtractPermissions(ev), Counters.Requests[RT_RESOLVE_FOLDER]));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvListBindingsRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::ListBindingsRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("ListBindingsRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_BINDINGS];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(ListBindingsRequest, scope, user, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.bindings.get@as"});
- if (issues) {
- CPS_LOG_E("ListBindingsRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvListBindingsResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::ListBindingsRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("ListBindingsRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_BINDINGS];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(ListBindingsRequest, scope, user, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.bindings.get@as"});
+ if (issues) {
+ CPS_LOG_E("ListBindingsRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvListBindingsResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::ListBindingsRequest,
- TEvControlPlaneStorage::TEvListBindingsRequest,
- TEvControlPlaneStorage::TEvListBindingsResponse,
- TEvControlPlaneProxy::TEvListBindingsResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe,
- ExtractPermissions(ev)));
- }
-
- void Handle(TEvControlPlaneProxy::TEvDescribeBindingRequest::TPtr& ev) {
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::ListBindingsRequest,
+ TEvControlPlaneStorage::TEvListBindingsRequest,
+ TEvControlPlaneStorage::TEvListBindingsResponse,
+ TEvControlPlaneProxy::TEvListBindingsResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe,
+ ExtractPermissions(ev)));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvDescribeBindingRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::DescribeBindingRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("DescribeBindingRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_DESCRIBE_BINDING];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const TString bindingId = request.binding_id();
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(DescribeBindingRequest, scope, user, bindingId, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.bindings.get@as"});
- if (issues) {
- CPS_LOG_E("DescribeBindingRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvDescribeBindingResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::DescribeBindingRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("DescribeBindingRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_DESCRIBE_BINDING];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const TString bindingId = request.binding_id();
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(DescribeBindingRequest, scope, user, bindingId, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.bindings.get@as"});
+ if (issues) {
+ CPS_LOG_E("DescribeBindingRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvDescribeBindingResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::DescribeBindingRequest,
- TEvControlPlaneStorage::TEvDescribeBindingRequest,
- TEvControlPlaneStorage::TEvDescribeBindingResponse,
- TEvControlPlaneProxy::TEvDescribeBindingResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe,
- ExtractPermissions(ev)));
- }
-
- void Handle(TEvControlPlaneProxy::TEvModifyBindingRequest::TPtr& ev) {
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::DescribeBindingRequest,
+ TEvControlPlaneStorage::TEvDescribeBindingRequest,
+ TEvControlPlaneStorage::TEvDescribeBindingResponse,
+ TEvControlPlaneProxy::TEvDescribeBindingResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe,
+ ExtractPermissions(ev)));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvModifyBindingRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::ModifyBindingRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("ModifyBindingRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_MODIFY_BINDING];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const TString bindingId = request.binding_id();
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(ModifyBindingRequest, scope, user, bindingId, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.bindings.update@as"});
- if (issues) {
- CPS_LOG_E("ModifyBindingRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvModifyBindingResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::ModifyBindingRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("ModifyBindingRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_MODIFY_BINDING];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const TString bindingId = request.binding_id();
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(ModifyBindingRequest, scope, user, bindingId, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.bindings.update@as"});
+ if (issues) {
+ CPS_LOG_E("ModifyBindingRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvModifyBindingResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::ModifyBindingRequest,
- TEvControlPlaneStorage::TEvModifyBindingRequest,
- TEvControlPlaneStorage::TEvModifyBindingResponse,
- TEvControlPlaneProxy::TEvModifyBindingResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe,
- ExtractPermissions(ev)));
- }
-
- void Handle(TEvControlPlaneProxy::TEvDeleteBindingRequest::TPtr& ev) {
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::ModifyBindingRequest,
+ TEvControlPlaneStorage::TEvModifyBindingRequest,
+ TEvControlPlaneStorage::TEvModifyBindingResponse,
+ TEvControlPlaneProxy::TEvModifyBindingResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe,
+ ExtractPermissions(ev)));
+ }
+
+ void Handle(TEvControlPlaneProxy::TEvDeleteBindingRequest::TPtr& ev) {
TInstant startTime = TInstant::Now();
- YandexQuery::DeleteBindingRequest request = std::move(ev->Get()->Request);
- CPP_LOG_T("DeleteBindingRequest: " << request.DebugString());
- TRequestCountersPtr requestCounters = Counters.Requests[RT_DELETE_BINDING];
-
- const TString folderId = ev->Get()->FolderId;
- const TString scope = "yandexcloud://" + folderId;
- TString user = std::move(ev->Get()->User);
- TString token = std::move(ev->Get()->Token);
- const TString bindingId = request.binding_id();
- const int byteSize = request.ByteSize();
-
- auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
- LWPROBE(DeleteBindingRequest, scope, user, bindingId, delta, byteSize, isSuccess, isTimeout);
- };
-
- NYql::TIssues issues = ValidatePermissions(ev, {"yq.bindings.delete@as"});
- if (issues) {
- CPS_LOG_E("DeleteBindingRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneProxy::TEvDeleteBindingResponse(issues), 0, ev->Cookie);
- requestCounters->Error->Inc();
+ YandexQuery::DeleteBindingRequest request = std::move(ev->Get()->Request);
+ CPP_LOG_T("DeleteBindingRequest: " << request.DebugString());
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_DELETE_BINDING];
+
+ const TString folderId = ev->Get()->FolderId;
+ const TString scope = "yandexcloud://" + folderId;
+ TString user = std::move(ev->Get()->User);
+ TString token = std::move(ev->Get()->Token);
+ const TString bindingId = request.binding_id();
+ const int byteSize = request.ByteSize();
+
+ auto probe = [=](const TDuration& delta, bool isSuccess, bool isTimeout) {
+ LWPROBE(DeleteBindingRequest, scope, user, bindingId, delta, byteSize, isSuccess, isTimeout);
+ };
+
+ NYql::TIssues issues = ValidatePermissions(ev, {"yq.bindings.delete@as"});
+ if (issues) {
+ CPS_LOG_E("DeleteBindingRequest, validation failed: " << scope << " " << user << " " << NKikimr::MaskTicket(token) << " " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneProxy::TEvDeleteBindingResponse(issues), 0, ev->Cookie);
+ requestCounters->Error->Inc();
TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- probe(delta, false, false);
- return;
- }
-
- Register(new TRequestActor<YandexQuery::DeleteBindingRequest,
- TEvControlPlaneStorage::TEvDeleteBindingRequest,
- TEvControlPlaneStorage::TEvDeleteBindingResponse,
- TEvControlPlaneProxy::TEvDeleteBindingResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
- std::move(request), std::move(user), std::move(token),
- ControlPlaneStorageServiceActorId(),
- requestCounters,
- probe,
- ExtractPermissions(ev)));
- }
-
- void Handle(NMon::TEvHttpInfo::TPtr& ev) {
- TStringStream str;
- HTML(str) {
- PRE() {
- str << "Current config:" << Endl;
- str << Config.DebugString() << Endl;
- str << Endl;
- }
- }
- Send(ev->Sender, new NMon::TEvHttpInfoRes(str.Str()));
- }
-};
-
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ probe(delta, false, false);
+ return;
+ }
+
+ Register(new TRequestActor<YandexQuery::DeleteBindingRequest,
+ TEvControlPlaneStorage::TEvDeleteBindingRequest,
+ TEvControlPlaneStorage::TEvDeleteBindingResponse,
+ TEvControlPlaneProxy::TEvDeleteBindingResponse>(Config, ev->Sender, ev->Cookie, scope, folderId,
+ std::move(request), std::move(user), std::move(token),
+ ControlPlaneStorageServiceActorId(),
+ requestCounters,
+ probe,
+ ExtractPermissions(ev)));
+ }
+
+ void Handle(NMon::TEvHttpInfo::TPtr& ev) {
+ TStringStream str;
+ HTML(str) {
+ PRE() {
+ str << "Current config:" << Endl;
+ str << Config.DebugString() << Endl;
+ str << Endl;
+ }
+ }
+ Send(ev->Sender, new NMon::TEvHttpInfoRes(str.Str()));
+ }
+};
+
} // namespace
-TActorId ControlPlaneProxyActorId() {
- constexpr TStringBuf name = "YQCTLPRX";
- return NActors::TActorId(0, name);
-}
-
-IActor* CreateControlPlaneProxyActor(const NConfig::TControlPlaneProxyConfig& config, const NMonitoring::TDynamicCounterPtr& counters) {
- return new TControlPlaneProxyActor(config, counters);
-}
-
-} // namespace NYq
+TActorId ControlPlaneProxyActorId() {
+ constexpr TStringBuf name = "YQCTLPRX";
+ return NActors::TActorId(0, name);
+}
+
+IActor* CreateControlPlaneProxyActor(const NConfig::TControlPlaneProxyConfig& config, const NMonitoring::TDynamicCounterPtr& counters) {
+ return new TControlPlaneProxyActor(config, counters);
+}
+
+} // namespace NYq
diff --git a/ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.h b/ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.h
index 12e495ba1c..ac30905bed 100644
--- a/ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.h
+++ b/ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.h
@@ -1,27 +1,27 @@
-#pragma once
-
+#pragma once
+
#include <ydb/core/yq/libs/actors/logging/log.h>
#include <ydb/core/yq/libs/config/protos/control_plane_proxy.pb.h>
-
-#include <library/cpp/actors/core/actor.h>
-#include <library/cpp/monlib/dynamic_counters/counters.h>
-
-
-#define CPP_LOG_D(s) \
- LOG_YQ_CONTROL_PLANE_PROXY_DEBUG(s)
-#define CPP_LOG_I(s) \
- LOG_YQ_CONTROL_PLANE_PROXY_INFO(s)
-#define CPP_LOG_W(s) \
- LOG_YQ_CONTROL_PLANE_PROXY_WARN(s)
-#define CPP_LOG_E(s) \
- LOG_YQ_CONTROL_PLANE_PROXY_ERROR(s)
-#define CPP_LOG_T(s) \
- LOG_YQ_CONTROL_PLANE_PROXY_TRACE(s)
-
-namespace NYq {
-
-NActors::TActorId ControlPlaneProxyActorId();
-
-NActors::IActor* CreateControlPlaneProxyActor(const NConfig::TControlPlaneProxyConfig& config, const NMonitoring::TDynamicCounterPtr& counters);
-
+
+#include <library/cpp/actors/core/actor.h>
+#include <library/cpp/monlib/dynamic_counters/counters.h>
+
+
+#define CPP_LOG_D(s) \
+ LOG_YQ_CONTROL_PLANE_PROXY_DEBUG(s)
+#define CPP_LOG_I(s) \
+ LOG_YQ_CONTROL_PLANE_PROXY_INFO(s)
+#define CPP_LOG_W(s) \
+ LOG_YQ_CONTROL_PLANE_PROXY_WARN(s)
+#define CPP_LOG_E(s) \
+ LOG_YQ_CONTROL_PLANE_PROXY_ERROR(s)
+#define CPP_LOG_T(s) \
+ LOG_YQ_CONTROL_PLANE_PROXY_TRACE(s)
+
+namespace NYq {
+
+NActors::TActorId ControlPlaneProxyActorId();
+
+NActors::IActor* CreateControlPlaneProxyActor(const NConfig::TControlPlaneProxyConfig& config, const NMonitoring::TDynamicCounterPtr& counters);
+
} // namespace NYq
diff --git a/ydb/core/yq/libs/control_plane_proxy/events/events.cpp b/ydb/core/yq/libs/control_plane_proxy/events/events.cpp
index 6c3d2603e7..a4930159cf 100644
--- a/ydb/core/yq/libs/control_plane_proxy/events/events.cpp
+++ b/ydb/core/yq/libs/control_plane_proxy/events/events.cpp
@@ -1 +1 @@
-#include "events.h"
+#include "events.h"
diff --git a/ydb/core/yq/libs/control_plane_proxy/events/events.h b/ydb/core/yq/libs/control_plane_proxy/events/events.h
index aeb922e784..aee2221776 100644
--- a/ydb/core/yq/libs/control_plane_proxy/events/events.h
+++ b/ydb/core/yq/libs/control_plane_proxy/events/events.h
@@ -1,178 +1,178 @@
-#pragma once
-
+#pragma once
+
#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
-
+
#include <ydb/public/api/protos/yq.pb.h>
-
-#include <library/cpp/actors/core/event_pb.h>
-#include <library/cpp/actors/core/events.h>
-#include <library/cpp/actors/interconnect/events_local.h>
-
+
+#include <library/cpp/actors/core/event_pb.h>
+#include <library/cpp/actors/core/events.h>
+#include <library/cpp/actors/interconnect/events_local.h>
+
#include <ydb/library/yql/public/issue/yql_issue.h>
-
-namespace NYq {
-
-struct TEvControlPlaneProxy {
- // Event ids.
- enum EEv : ui32 {
+
+namespace NYq {
+
+struct TEvControlPlaneProxy {
+ // Event ids.
+ enum EEv : ui32 {
EvCreateQueryRequest = YqEventSubspaceBegin(NYq::TYqEventSubspace::ControlPlaneProxy),
- EvCreateQueryResponse,
- EvListQueriesRequest,
- EvListQueriesResponse,
- EvDescribeQueryRequest,
- EvDescribeQueryResponse,
+ EvCreateQueryResponse,
+ EvListQueriesRequest,
+ EvListQueriesResponse,
+ EvDescribeQueryRequest,
+ EvDescribeQueryResponse,
EvGetQueryStatusRequest,
EvGetQueryStatusResponse,
- EvModifyQueryRequest,
- EvModifyQueryResponse,
- EvDeleteQueryRequest,
- EvDeleteQueryResponse,
- EvControlQueryRequest,
- EvControlQueryResponse,
- EvGetResultDataRequest,
- EvGetResultDataResponse,
- EvListJobsRequest,
- EvListJobsResponse,
+ EvModifyQueryRequest,
+ EvModifyQueryResponse,
+ EvDeleteQueryRequest,
+ EvDeleteQueryResponse,
+ EvControlQueryRequest,
+ EvControlQueryResponse,
+ EvGetResultDataRequest,
+ EvGetResultDataResponse,
+ EvListJobsRequest,
+ EvListJobsResponse,
EvDescribeJobRequest,
EvDescribeJobResponse,
- EvCreateConnectionRequest,
- EvCreateConnectionResponse,
- EvListConnectionsRequest,
- EvListConnectionsResponse,
- EvDescribeConnectionRequest,
- EvDescribeConnectionResponse,
- EvModifyConnectionRequest,
- EvModifyConnectionResponse,
- EvDeleteConnectionRequest,
- EvDeleteConnectionResponse,
- EvTestConnectionRequest,
- EvTestConnectionResponse,
- EvCreateBindingRequest,
- EvCreateBindingResponse,
- EvListBindingsRequest,
- EvListBindingsResponse,
- EvDescribeBindingRequest,
- EvDescribeBindingResponse,
- EvModifyBindingRequest,
- EvModifyBindingResponse,
- EvDeleteBindingRequest,
- EvDeleteBindingResponse,
- EvEnd,
- };
-
+ EvCreateConnectionRequest,
+ EvCreateConnectionResponse,
+ EvListConnectionsRequest,
+ EvListConnectionsResponse,
+ EvDescribeConnectionRequest,
+ EvDescribeConnectionResponse,
+ EvModifyConnectionRequest,
+ EvModifyConnectionResponse,
+ EvDeleteConnectionRequest,
+ EvDeleteConnectionResponse,
+ EvTestConnectionRequest,
+ EvTestConnectionResponse,
+ EvCreateBindingRequest,
+ EvCreateBindingResponse,
+ EvListBindingsRequest,
+ EvListBindingsResponse,
+ EvDescribeBindingRequest,
+ EvDescribeBindingResponse,
+ EvModifyBindingRequest,
+ EvModifyBindingResponse,
+ EvDeleteBindingRequest,
+ EvDeleteBindingResponse,
+ EvEnd,
+ };
+
static_assert(EvEnd <= YqEventSubspaceEnd(NYq::TYqEventSubspace::ControlPlaneProxy), "All events must be in their subspace");
-
- struct TEvCreateQueryRequest : NActors::TEventLocal<TEvCreateQueryRequest, EvCreateQueryRequest> {
- explicit TEvCreateQueryRequest(const TString& folderId,
- const YandexQuery::CreateQueryRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::CreateQueryRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvCreateQueryResponse : NActors::TEventLocal<TEvCreateQueryResponse, EvCreateQueryResponse> {
- explicit TEvCreateQueryResponse(const YandexQuery::CreateQueryResult& result,
- const TAuditDetails<YandexQuery::Query>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvCreateQueryResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::CreateQueryResult Result;
- TAuditDetails<YandexQuery::Query> AuditDetails;
- NYql::TIssues Issues;
- };
-
- struct TEvListQueriesRequest : NActors::TEventLocal<TEvListQueriesRequest, EvListQueriesRequest> {
- explicit TEvListQueriesRequest(const TString& folderId,
- const YandexQuery::ListQueriesRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::ListQueriesRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvListQueriesResponse : NActors::TEventLocal<TEvListQueriesResponse, EvListQueriesResponse> {
- explicit TEvListQueriesResponse(const YandexQuery::ListQueriesResult& result)
- : Result(result)
- {
- }
-
- explicit TEvListQueriesResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ListQueriesResult Result;
- NYql::TIssues Issues;
- };
-
- struct TEvDescribeQueryRequest : NActors::TEventLocal<TEvDescribeQueryRequest, EvDescribeQueryRequest> {
- explicit TEvDescribeQueryRequest(const TString& folderId,
- const YandexQuery::DescribeQueryRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::DescribeQueryRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvDescribeQueryResponse : NActors::TEventLocal<TEvDescribeQueryResponse, EvDescribeQueryResponse> {
- explicit TEvDescribeQueryResponse(const YandexQuery::DescribeQueryResult& result)
- : Result(result)
- {
- }
-
- explicit TEvDescribeQueryResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::DescribeQueryResult Result;
- NYql::TIssues Issues;
- };
-
+
+ struct TEvCreateQueryRequest : NActors::TEventLocal<TEvCreateQueryRequest, EvCreateQueryRequest> {
+ explicit TEvCreateQueryRequest(const TString& folderId,
+ const YandexQuery::CreateQueryRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::CreateQueryRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvCreateQueryResponse : NActors::TEventLocal<TEvCreateQueryResponse, EvCreateQueryResponse> {
+ explicit TEvCreateQueryResponse(const YandexQuery::CreateQueryResult& result,
+ const TAuditDetails<YandexQuery::Query>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvCreateQueryResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::CreateQueryResult Result;
+ TAuditDetails<YandexQuery::Query> AuditDetails;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvListQueriesRequest : NActors::TEventLocal<TEvListQueriesRequest, EvListQueriesRequest> {
+ explicit TEvListQueriesRequest(const TString& folderId,
+ const YandexQuery::ListQueriesRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::ListQueriesRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvListQueriesResponse : NActors::TEventLocal<TEvListQueriesResponse, EvListQueriesResponse> {
+ explicit TEvListQueriesResponse(const YandexQuery::ListQueriesResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvListQueriesResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ListQueriesResult Result;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvDescribeQueryRequest : NActors::TEventLocal<TEvDescribeQueryRequest, EvDescribeQueryRequest> {
+ explicit TEvDescribeQueryRequest(const TString& folderId,
+ const YandexQuery::DescribeQueryRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::DescribeQueryRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvDescribeQueryResponse : NActors::TEventLocal<TEvDescribeQueryResponse, EvDescribeQueryResponse> {
+ explicit TEvDescribeQueryResponse(const YandexQuery::DescribeQueryResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvDescribeQueryResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::DescribeQueryResult Result;
+ NYql::TIssues Issues;
+ };
+
struct TEvGetQueryStatusRequest : NActors::TEventLocal<TEvGetQueryStatusRequest, EvGetQueryStatusRequest> {
explicit TEvGetQueryStatusRequest(const TString& folderId,
const YandexQuery::GetQueryStatusRequest& request,
@@ -209,195 +209,195 @@ struct TEvControlPlaneProxy {
NYql::TIssues Issues;
};
- struct TEvModifyQueryRequest : NActors::TEventLocal<TEvModifyQueryRequest, EvModifyQueryRequest> {
- explicit TEvModifyQueryRequest(const TString& folderId,
- const YandexQuery::ModifyQueryRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::ModifyQueryRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvModifyQueryResponse : NActors::TEventLocal<TEvModifyQueryResponse, EvModifyQueryResponse> {
- explicit TEvModifyQueryResponse(const YandexQuery::ModifyQueryResult& result,
- const TAuditDetails<YandexQuery::Query>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvModifyQueryResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ModifyQueryResult Result;
- TAuditDetails<YandexQuery::Query> AuditDetails;
- NYql::TIssues Issues;
- };
-
- struct TEvDeleteQueryRequest : NActors::TEventLocal<TEvDeleteQueryRequest, EvDeleteQueryRequest> {
- explicit TEvDeleteQueryRequest(const TString& folderId,
- const YandexQuery::DeleteQueryRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::DeleteQueryRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvDeleteQueryResponse : NActors::TEventLocal<TEvDeleteQueryResponse, EvDeleteQueryResponse> {
- explicit TEvDeleteQueryResponse(const YandexQuery::DeleteQueryResult& result,
- const TAuditDetails<YandexQuery::Query>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvDeleteQueryResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::DeleteQueryResult Result;
- TAuditDetails<YandexQuery::Query> AuditDetails;
- NYql::TIssues Issues;
- };
-
- struct TEvControlQueryRequest : NActors::TEventLocal<TEvControlQueryRequest, EvControlQueryRequest> {
- explicit TEvControlQueryRequest(const TString& folderId,
- const YandexQuery::ControlQueryRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::ControlQueryRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvControlQueryResponse : NActors::TEventLocal<TEvControlQueryResponse, EvControlQueryResponse> {
- explicit TEvControlQueryResponse(const YandexQuery::ControlQueryResult& result,
- const TAuditDetails<YandexQuery::Query>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvControlQueryResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ControlQueryResult Result;
- TAuditDetails<YandexQuery::Query> AuditDetails;
- NYql::TIssues Issues;
- };
-
- struct TEvGetResultDataRequest : NActors::TEventLocal<TEvGetResultDataRequest, EvGetResultDataRequest> {
- explicit TEvGetResultDataRequest(const TString& folderId,
- const YandexQuery::GetResultDataRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::GetResultDataRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvGetResultDataResponse : NActors::TEventLocal<TEvGetResultDataResponse, EvGetResultDataResponse> {
- explicit TEvGetResultDataResponse(const YandexQuery::GetResultDataResult& result)
- : Result(result)
- {
- }
-
- explicit TEvGetResultDataResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::GetResultDataResult Result;
- NYql::TIssues Issues;
- };
-
- struct TEvListJobsRequest : NActors::TEventLocal<TEvListJobsRequest, EvListJobsRequest> {
- explicit TEvListJobsRequest(const TString& folderId,
- const YandexQuery::ListJobsRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::ListJobsRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvListJobsResponse : NActors::TEventLocal<TEvListJobsResponse, EvListJobsResponse> {
- explicit TEvListJobsResponse(const YandexQuery::ListJobsResult& result)
- : Result(result)
- {
- }
-
- explicit TEvListJobsResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ListJobsResult Result;
- NYql::TIssues Issues;
- };
-
+ struct TEvModifyQueryRequest : NActors::TEventLocal<TEvModifyQueryRequest, EvModifyQueryRequest> {
+ explicit TEvModifyQueryRequest(const TString& folderId,
+ const YandexQuery::ModifyQueryRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::ModifyQueryRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvModifyQueryResponse : NActors::TEventLocal<TEvModifyQueryResponse, EvModifyQueryResponse> {
+ explicit TEvModifyQueryResponse(const YandexQuery::ModifyQueryResult& result,
+ const TAuditDetails<YandexQuery::Query>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvModifyQueryResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ModifyQueryResult Result;
+ TAuditDetails<YandexQuery::Query> AuditDetails;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvDeleteQueryRequest : NActors::TEventLocal<TEvDeleteQueryRequest, EvDeleteQueryRequest> {
+ explicit TEvDeleteQueryRequest(const TString& folderId,
+ const YandexQuery::DeleteQueryRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::DeleteQueryRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvDeleteQueryResponse : NActors::TEventLocal<TEvDeleteQueryResponse, EvDeleteQueryResponse> {
+ explicit TEvDeleteQueryResponse(const YandexQuery::DeleteQueryResult& result,
+ const TAuditDetails<YandexQuery::Query>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvDeleteQueryResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::DeleteQueryResult Result;
+ TAuditDetails<YandexQuery::Query> AuditDetails;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvControlQueryRequest : NActors::TEventLocal<TEvControlQueryRequest, EvControlQueryRequest> {
+ explicit TEvControlQueryRequest(const TString& folderId,
+ const YandexQuery::ControlQueryRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::ControlQueryRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvControlQueryResponse : NActors::TEventLocal<TEvControlQueryResponse, EvControlQueryResponse> {
+ explicit TEvControlQueryResponse(const YandexQuery::ControlQueryResult& result,
+ const TAuditDetails<YandexQuery::Query>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvControlQueryResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ControlQueryResult Result;
+ TAuditDetails<YandexQuery::Query> AuditDetails;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvGetResultDataRequest : NActors::TEventLocal<TEvGetResultDataRequest, EvGetResultDataRequest> {
+ explicit TEvGetResultDataRequest(const TString& folderId,
+ const YandexQuery::GetResultDataRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::GetResultDataRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvGetResultDataResponse : NActors::TEventLocal<TEvGetResultDataResponse, EvGetResultDataResponse> {
+ explicit TEvGetResultDataResponse(const YandexQuery::GetResultDataResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvGetResultDataResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::GetResultDataResult Result;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvListJobsRequest : NActors::TEventLocal<TEvListJobsRequest, EvListJobsRequest> {
+ explicit TEvListJobsRequest(const TString& folderId,
+ const YandexQuery::ListJobsRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::ListJobsRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvListJobsResponse : NActors::TEventLocal<TEvListJobsResponse, EvListJobsResponse> {
+ explicit TEvListJobsResponse(const YandexQuery::ListJobsResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvListJobsResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ListJobsResult Result;
+ NYql::TIssues Issues;
+ };
+
struct TEvDescribeJobRequest : NActors::TEventLocal<TEvDescribeJobRequest, EvDescribeJobRequest> {
explicit TEvDescribeJobRequest(const TString& folderId,
const YandexQuery::DescribeJobRequest& request,
@@ -434,419 +434,419 @@ struct TEvControlPlaneProxy {
NYql::TIssues Issues;
};
- struct TEvCreateConnectionRequest : NActors::TEventLocal<TEvCreateConnectionRequest, EvCreateConnectionRequest> {
- explicit TEvCreateConnectionRequest(const TString& folderId,
- const YandexQuery::CreateConnectionRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::CreateConnectionRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvCreateConnectionResponse : NActors::TEventLocal<TEvCreateConnectionResponse, EvCreateConnectionResponse> {
- explicit TEvCreateConnectionResponse(const YandexQuery::CreateConnectionResult& result,
- const TAuditDetails<YandexQuery::Connection>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvCreateConnectionResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::CreateConnectionResult Result;
- TAuditDetails<YandexQuery::Connection> AuditDetails;
- NYql::TIssues Issues;
- };
-
- struct TEvListConnectionsRequest : NActors::TEventLocal<TEvListConnectionsRequest, EvListConnectionsRequest> {
- explicit TEvListConnectionsRequest(const TString& folderId,
- const YandexQuery::ListConnectionsRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::ListConnectionsRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvListConnectionsResponse : NActors::TEventLocal<TEvListConnectionsResponse, EvListConnectionsResponse> {
- explicit TEvListConnectionsResponse(const YandexQuery::ListConnectionsResult& result)
- : Result(result)
- {
- }
-
- explicit TEvListConnectionsResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ListConnectionsResult Result;
- NYql::TIssues Issues;
- };
-
- struct TEvDescribeConnectionRequest : NActors::TEventLocal<TEvDescribeConnectionRequest, EvDescribeConnectionRequest> {
- explicit TEvDescribeConnectionRequest(const TString& folderId,
- const YandexQuery::DescribeConnectionRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::DescribeConnectionRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvDescribeConnectionResponse : NActors::TEventLocal<TEvDescribeConnectionResponse, EvDescribeConnectionResponse> {
- explicit TEvDescribeConnectionResponse(const YandexQuery::DescribeConnectionResult& result)
- : Result(result)
- {
- }
-
- explicit TEvDescribeConnectionResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::DescribeConnectionResult Result;
- NYql::TIssues Issues;
- };
-
- struct TEvModifyConnectionRequest : NActors::TEventLocal<TEvModifyConnectionRequest, EvModifyConnectionRequest> {
- explicit TEvModifyConnectionRequest(const TString& folderId,
- const YandexQuery::ModifyConnectionRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::ModifyConnectionRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvModifyConnectionResponse : NActors::TEventLocal<TEvModifyConnectionResponse, EvModifyConnectionResponse> {
- explicit TEvModifyConnectionResponse(const YandexQuery::ModifyConnectionResult& result,
- const TAuditDetails<YandexQuery::Connection>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvModifyConnectionResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ModifyConnectionResult Result;
- TAuditDetails<YandexQuery::Connection> AuditDetails;
- NYql::TIssues Issues;
- };
-
- struct TEvDeleteConnectionRequest : NActors::TEventLocal<TEvDeleteConnectionRequest, EvDeleteConnectionRequest> {
- explicit TEvDeleteConnectionRequest(const TString& folderId,
- const YandexQuery::DeleteConnectionRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::DeleteConnectionRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvDeleteConnectionResponse : NActors::TEventLocal<TEvDeleteConnectionResponse, EvDeleteConnectionResponse> {
- explicit TEvDeleteConnectionResponse(const YandexQuery::DeleteConnectionResult& result,
- const TAuditDetails<YandexQuery::Connection>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvDeleteConnectionResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::DeleteConnectionResult Result;
- TAuditDetails<YandexQuery::Connection> AuditDetails;
- NYql::TIssues Issues;
- };
-
- struct TEvTestConnectionRequest : NActors::TEventLocal<TEvTestConnectionRequest, EvTestConnectionRequest> {
- explicit TEvTestConnectionRequest(const TString& folderId,
- const YandexQuery::TestConnectionRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::TestConnectionRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvTestConnectionResponse : NActors::TEventLocal<TEvTestConnectionResponse, EvTestConnectionResponse> {
- explicit TEvTestConnectionResponse(const YandexQuery::TestConnectionResult& result)
- : Result(result)
- {
- }
-
- explicit TEvTestConnectionResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::TestConnectionResult Result;
- NYql::TIssues Issues;
- };
-
- struct TEvCreateBindingRequest : NActors::TEventLocal<TEvCreateBindingRequest, EvCreateBindingRequest> {
- explicit TEvCreateBindingRequest(const TString& folderId,
- const YandexQuery::CreateBindingRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::CreateBindingRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvCreateBindingResponse : NActors::TEventLocal<TEvCreateBindingResponse, EvCreateBindingResponse> {
- explicit TEvCreateBindingResponse(const YandexQuery::CreateBindingResult& result,
- const TAuditDetails<YandexQuery::Binding>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvCreateBindingResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::CreateBindingResult Result;
- TAuditDetails<YandexQuery::Binding> AuditDetails;
- NYql::TIssues Issues;
- };
-
- struct TEvListBindingsRequest : NActors::TEventLocal<TEvListBindingsRequest, EvListBindingsRequest> {
- explicit TEvListBindingsRequest(const TString& folderId,
- const YandexQuery::ListBindingsRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::ListBindingsRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvListBindingsResponse : NActors::TEventLocal<TEvListBindingsResponse, EvListBindingsResponse> {
- explicit TEvListBindingsResponse(const YandexQuery::ListBindingsResult& result)
- : Result(result)
- {
- }
-
- explicit TEvListBindingsResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ListBindingsResult Result;
- NYql::TIssues Issues;
- };
-
- struct TEvDescribeBindingRequest : NActors::TEventLocal<TEvDescribeBindingRequest, EvDescribeBindingRequest> {
- explicit TEvDescribeBindingRequest(const TString& folderId,
- const YandexQuery::DescribeBindingRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::DescribeBindingRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvDescribeBindingResponse : NActors::TEventLocal<TEvDescribeBindingResponse, EvDescribeBindingResponse> {
- explicit TEvDescribeBindingResponse(const YandexQuery::DescribeBindingResult& result)
- : Result(result)
- {
- }
-
- explicit TEvDescribeBindingResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::DescribeBindingResult Result;
- NYql::TIssues Issues;
- };
-
- struct TEvModifyBindingRequest : NActors::TEventLocal<TEvModifyBindingRequest, EvModifyBindingRequest> {
- explicit TEvModifyBindingRequest(const TString& folderId,
- const YandexQuery::ModifyBindingRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::ModifyBindingRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvModifyBindingResponse : NActors::TEventLocal<TEvModifyBindingResponse, EvModifyBindingResponse> {
- explicit TEvModifyBindingResponse(const YandexQuery::ModifyBindingResult& result,
- const TAuditDetails<YandexQuery::Binding>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvModifyBindingResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ModifyBindingResult Result;
- TAuditDetails<YandexQuery::Binding> AuditDetails;
- NYql::TIssues Issues;
- };
-
- struct TEvDeleteBindingRequest : NActors::TEventLocal<TEvDeleteBindingRequest, EvDeleteBindingRequest> {
- explicit TEvDeleteBindingRequest(const TString& folderId,
- const YandexQuery::DeleteBindingRequest& request,
- const TString& user,
- const TString& token,
- const TVector<TString>& permissions)
- : FolderId(folderId)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString FolderId;
- YandexQuery::DeleteBindingRequest Request;
- TString User;
- TString Token;
- TVector<TString> Permissions;
- };
-
- struct TEvDeleteBindingResponse : NActors::TEventLocal<TEvDeleteBindingResponse, EvDeleteBindingResponse> {
- explicit TEvDeleteBindingResponse(const YandexQuery::DeleteBindingResult& result,
- const TAuditDetails<YandexQuery::Binding>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvDeleteBindingResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::DeleteBindingResult Result;
- TAuditDetails<YandexQuery::Binding> AuditDetails;
- NYql::TIssues Issues;
- };
-};
-
-}
+ struct TEvCreateConnectionRequest : NActors::TEventLocal<TEvCreateConnectionRequest, EvCreateConnectionRequest> {
+ explicit TEvCreateConnectionRequest(const TString& folderId,
+ const YandexQuery::CreateConnectionRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::CreateConnectionRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvCreateConnectionResponse : NActors::TEventLocal<TEvCreateConnectionResponse, EvCreateConnectionResponse> {
+ explicit TEvCreateConnectionResponse(const YandexQuery::CreateConnectionResult& result,
+ const TAuditDetails<YandexQuery::Connection>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvCreateConnectionResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::CreateConnectionResult Result;
+ TAuditDetails<YandexQuery::Connection> AuditDetails;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvListConnectionsRequest : NActors::TEventLocal<TEvListConnectionsRequest, EvListConnectionsRequest> {
+ explicit TEvListConnectionsRequest(const TString& folderId,
+ const YandexQuery::ListConnectionsRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::ListConnectionsRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvListConnectionsResponse : NActors::TEventLocal<TEvListConnectionsResponse, EvListConnectionsResponse> {
+ explicit TEvListConnectionsResponse(const YandexQuery::ListConnectionsResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvListConnectionsResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ListConnectionsResult Result;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvDescribeConnectionRequest : NActors::TEventLocal<TEvDescribeConnectionRequest, EvDescribeConnectionRequest> {
+ explicit TEvDescribeConnectionRequest(const TString& folderId,
+ const YandexQuery::DescribeConnectionRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::DescribeConnectionRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvDescribeConnectionResponse : NActors::TEventLocal<TEvDescribeConnectionResponse, EvDescribeConnectionResponse> {
+ explicit TEvDescribeConnectionResponse(const YandexQuery::DescribeConnectionResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvDescribeConnectionResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::DescribeConnectionResult Result;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvModifyConnectionRequest : NActors::TEventLocal<TEvModifyConnectionRequest, EvModifyConnectionRequest> {
+ explicit TEvModifyConnectionRequest(const TString& folderId,
+ const YandexQuery::ModifyConnectionRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::ModifyConnectionRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvModifyConnectionResponse : NActors::TEventLocal<TEvModifyConnectionResponse, EvModifyConnectionResponse> {
+ explicit TEvModifyConnectionResponse(const YandexQuery::ModifyConnectionResult& result,
+ const TAuditDetails<YandexQuery::Connection>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvModifyConnectionResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ModifyConnectionResult Result;
+ TAuditDetails<YandexQuery::Connection> AuditDetails;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvDeleteConnectionRequest : NActors::TEventLocal<TEvDeleteConnectionRequest, EvDeleteConnectionRequest> {
+ explicit TEvDeleteConnectionRequest(const TString& folderId,
+ const YandexQuery::DeleteConnectionRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::DeleteConnectionRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvDeleteConnectionResponse : NActors::TEventLocal<TEvDeleteConnectionResponse, EvDeleteConnectionResponse> {
+ explicit TEvDeleteConnectionResponse(const YandexQuery::DeleteConnectionResult& result,
+ const TAuditDetails<YandexQuery::Connection>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvDeleteConnectionResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::DeleteConnectionResult Result;
+ TAuditDetails<YandexQuery::Connection> AuditDetails;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvTestConnectionRequest : NActors::TEventLocal<TEvTestConnectionRequest, EvTestConnectionRequest> {
+ explicit TEvTestConnectionRequest(const TString& folderId,
+ const YandexQuery::TestConnectionRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::TestConnectionRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvTestConnectionResponse : NActors::TEventLocal<TEvTestConnectionResponse, EvTestConnectionResponse> {
+ explicit TEvTestConnectionResponse(const YandexQuery::TestConnectionResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvTestConnectionResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::TestConnectionResult Result;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvCreateBindingRequest : NActors::TEventLocal<TEvCreateBindingRequest, EvCreateBindingRequest> {
+ explicit TEvCreateBindingRequest(const TString& folderId,
+ const YandexQuery::CreateBindingRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::CreateBindingRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvCreateBindingResponse : NActors::TEventLocal<TEvCreateBindingResponse, EvCreateBindingResponse> {
+ explicit TEvCreateBindingResponse(const YandexQuery::CreateBindingResult& result,
+ const TAuditDetails<YandexQuery::Binding>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvCreateBindingResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::CreateBindingResult Result;
+ TAuditDetails<YandexQuery::Binding> AuditDetails;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvListBindingsRequest : NActors::TEventLocal<TEvListBindingsRequest, EvListBindingsRequest> {
+ explicit TEvListBindingsRequest(const TString& folderId,
+ const YandexQuery::ListBindingsRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::ListBindingsRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvListBindingsResponse : NActors::TEventLocal<TEvListBindingsResponse, EvListBindingsResponse> {
+ explicit TEvListBindingsResponse(const YandexQuery::ListBindingsResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvListBindingsResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ListBindingsResult Result;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvDescribeBindingRequest : NActors::TEventLocal<TEvDescribeBindingRequest, EvDescribeBindingRequest> {
+ explicit TEvDescribeBindingRequest(const TString& folderId,
+ const YandexQuery::DescribeBindingRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::DescribeBindingRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvDescribeBindingResponse : NActors::TEventLocal<TEvDescribeBindingResponse, EvDescribeBindingResponse> {
+ explicit TEvDescribeBindingResponse(const YandexQuery::DescribeBindingResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvDescribeBindingResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::DescribeBindingResult Result;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvModifyBindingRequest : NActors::TEventLocal<TEvModifyBindingRequest, EvModifyBindingRequest> {
+ explicit TEvModifyBindingRequest(const TString& folderId,
+ const YandexQuery::ModifyBindingRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::ModifyBindingRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvModifyBindingResponse : NActors::TEventLocal<TEvModifyBindingResponse, EvModifyBindingResponse> {
+ explicit TEvModifyBindingResponse(const YandexQuery::ModifyBindingResult& result,
+ const TAuditDetails<YandexQuery::Binding>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvModifyBindingResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ModifyBindingResult Result;
+ TAuditDetails<YandexQuery::Binding> AuditDetails;
+ NYql::TIssues Issues;
+ };
+
+ struct TEvDeleteBindingRequest : NActors::TEventLocal<TEvDeleteBindingRequest, EvDeleteBindingRequest> {
+ explicit TEvDeleteBindingRequest(const TString& folderId,
+ const YandexQuery::DeleteBindingRequest& request,
+ const TString& user,
+ const TString& token,
+ const TVector<TString>& permissions)
+ : FolderId(folderId)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString FolderId;
+ YandexQuery::DeleteBindingRequest Request;
+ TString User;
+ TString Token;
+ TVector<TString> Permissions;
+ };
+
+ struct TEvDeleteBindingResponse : NActors::TEventLocal<TEvDeleteBindingResponse, EvDeleteBindingResponse> {
+ explicit TEvDeleteBindingResponse(const YandexQuery::DeleteBindingResult& result,
+ const TAuditDetails<YandexQuery::Binding>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvDeleteBindingResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::DeleteBindingResult Result;
+ TAuditDetails<YandexQuery::Binding> AuditDetails;
+ NYql::TIssues Issues;
+ };
+};
+
+}
diff --git a/ydb/core/yq/libs/control_plane_proxy/events/ya.make b/ydb/core/yq/libs/control_plane_proxy/events/ya.make
index 55797e73e8..d061c578cf 100644
--- a/ydb/core/yq/libs/control_plane_proxy/events/ya.make
+++ b/ydb/core/yq/libs/control_plane_proxy/events/ya.make
@@ -1,15 +1,15 @@
OWNER(g:yq)
-
-LIBRARY()
-
-SRCS(
- events.cpp
-)
-
-PEERDIR(
- library/cpp/actors/core
- library/cpp/actors/interconnect
+
+LIBRARY()
+
+SRCS(
+ events.cpp
+)
+
+PEERDIR(
+ library/cpp/actors/core
+ library/cpp/actors/interconnect
ydb/core/yq/libs/control_plane_storage/events
-)
-
-END()
+)
+
+END()
diff --git a/ydb/core/yq/libs/control_plane_proxy/probes.cpp b/ydb/core/yq/libs/control_plane_proxy/probes.cpp
index ea704cf1bd..576bfea9f4 100644
--- a/ydb/core/yq/libs/control_plane_proxy/probes.cpp
+++ b/ydb/core/yq/libs/control_plane_proxy/probes.cpp
@@ -1,3 +1,3 @@
-#include "probes.h"
-
-LWTRACE_DEFINE_PROVIDER(YQ_CONTROL_PLANE_PROXY_PROVIDER) \ No newline at end of file
+#include "probes.h"
+
+LWTRACE_DEFINE_PROVIDER(YQ_CONTROL_PLANE_PROXY_PROVIDER) \ No newline at end of file
diff --git a/ydb/core/yq/libs/control_plane_proxy/probes.h b/ydb/core/yq/libs/control_plane_proxy/probes.h
index 1d790f6f93..2a67805a7a 100644
--- a/ydb/core/yq/libs/control_plane_proxy/probes.h
+++ b/ydb/core/yq/libs/control_plane_proxy/probes.h
@@ -1,93 +1,93 @@
-#pragma once
-
-#include <library/cpp/lwtrace/all.h>
-
-#define YQ_CONTROL_PLANE_PROXY_PROVIDER(PROBE, EVENT, GROUPS, TYPES, NAMES) \
- PROBE(CreateQueryRequest, \
- GROUPS(), \
- TYPES(TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
- PROBE(ListQueriesRequest, \
- GROUPS(), \
- TYPES(TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
- PROBE(DescribeQueryRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "queryId", "latencyMs", "size", "success", "timeout")) \
+#pragma once
+
+#include <library/cpp/lwtrace/all.h>
+
+#define YQ_CONTROL_PLANE_PROXY_PROVIDER(PROBE, EVENT, GROUPS, TYPES, NAMES) \
+ PROBE(CreateQueryRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
+ PROBE(ListQueriesRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
+ PROBE(DescribeQueryRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "queryId", "latencyMs", "size", "success", "timeout")) \
PROBE(GetQueryStatusRequest, \
GROUPS(), \
TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
NAMES("scope", "user", "queryId", "latencyMs", "size", "success", "timeout")) \
- PROBE(ModifyQueryRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "queryId", "latencyMs", "size", "success", "timeout")) \
- PROBE(DeleteQueryRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "queryId", "latencyMs", "size", "success", "timeout")) \
- PROBE(ControlQueryRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "queryId", "latencyMs", "size", "success", "timeout")) \
- PROBE(GetResultDataRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, i32, i64, i64, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "queryId", "resultSetIndex", "offset", "limit", "latencyMs", "size", "success", "timeout")) \
- PROBE(ListJobsRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "queryId", "latencyMs", "size", "success", "timeout")) \
+ PROBE(ModifyQueryRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "queryId", "latencyMs", "size", "success", "timeout")) \
+ PROBE(DeleteQueryRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "queryId", "latencyMs", "size", "success", "timeout")) \
+ PROBE(ControlQueryRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "queryId", "latencyMs", "size", "success", "timeout")) \
+ PROBE(GetResultDataRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, i32, i64, i64, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "queryId", "resultSetIndex", "offset", "limit", "latencyMs", "size", "success", "timeout")) \
+ PROBE(ListJobsRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "queryId", "latencyMs", "size", "success", "timeout")) \
PROBE(DescribeJobRequest, \
GROUPS(), \
TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
NAMES("scope", "user", "jobId", "latencyMs", "size", "success", "timeout")) \
- PROBE(CreateConnectionRequest, \
- GROUPS(), \
- TYPES(TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
- PROBE(ListConnectionsRequest, \
- GROUPS(), \
- TYPES(TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
- PROBE(DescribeConnectionRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "connectionId", "latencyMs", "size", "success", "timeout")) \
- PROBE(ModifyConnectionRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "connectionId", "latencyMs", "size", "success", "timeout")) \
- PROBE(DeleteConnectionRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "connectionId", "latencyMs", "size", "success", "timeout")) \
- PROBE(TestConnectionRequest, \
- GROUPS(), \
- TYPES(TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
- PROBE(CreateBindingRequest, \
- GROUPS(), \
- TYPES(TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
- PROBE(ListBindingsRequest, \
- GROUPS(), \
- TYPES(TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
- PROBE(DescribeBindingRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "bindingId", "latencyMs", "size", "success", "timeout")) \
- PROBE(ModifyBindingRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "bindingId", "latencyMs", "size", "success", "timeout")) \
- PROBE(DeleteBindingRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "bindingId", "latencyMs", "size", "success", "timeout")) \
-
-// YQ_CONTROL_PLANE_PROXY_PROVIDER
-
-LWTRACE_DECLARE_PROVIDER(YQ_CONTROL_PLANE_PROXY_PROVIDER)
+ PROBE(CreateConnectionRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
+ PROBE(ListConnectionsRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
+ PROBE(DescribeConnectionRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "connectionId", "latencyMs", "size", "success", "timeout")) \
+ PROBE(ModifyConnectionRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "connectionId", "latencyMs", "size", "success", "timeout")) \
+ PROBE(DeleteConnectionRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "connectionId", "latencyMs", "size", "success", "timeout")) \
+ PROBE(TestConnectionRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
+ PROBE(CreateBindingRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
+ PROBE(ListBindingsRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
+ PROBE(DescribeBindingRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "bindingId", "latencyMs", "size", "success", "timeout")) \
+ PROBE(ModifyBindingRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "bindingId", "latencyMs", "size", "success", "timeout")) \
+ PROBE(DeleteBindingRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "bindingId", "latencyMs", "size", "success", "timeout")) \
+
+// YQ_CONTROL_PLANE_PROXY_PROVIDER
+
+LWTRACE_DECLARE_PROVIDER(YQ_CONTROL_PLANE_PROXY_PROVIDER)
diff --git a/ydb/core/yq/libs/control_plane_proxy/ut/control_plane_proxy_ut.cpp b/ydb/core/yq/libs/control_plane_proxy/ut/control_plane_proxy_ut.cpp
index 3d0c5bb70b..c57f1e2069 100644
--- a/ydb/core/yq/libs/control_plane_proxy/ut/control_plane_proxy_ut.cpp
+++ b/ydb/core/yq/libs/control_plane_proxy/ut/control_plane_proxy_ut.cpp
@@ -2,136 +2,136 @@
#include <ydb/core/yq/libs/control_plane_proxy/control_plane_proxy.h>
#include <ydb/core/yq/libs/control_plane_storage/control_plane_storage.h>
#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
-#include <ydb/core/yq/libs/test_connection/events/events.h>
-#include <ydb/core/yq/libs/test_connection/test_connection.h>
+#include <ydb/core/yq/libs/test_connection/events/events.h>
+#include <ydb/core/yq/libs/test_connection/test_connection.h>
#include <ydb/core/yq/libs/ydb/util.h>
#include <ydb/core/yq/libs/ydb/ydb.h>
-
+
#include <ydb/core/yq/libs/control_plane_proxy/events/events.h>
-
-#include <library/cpp/actors/core/executor_pool_basic.h>
-#include <library/cpp/actors/core/scheduler_basic.h>
-#include <library/cpp/testing/unittest/registar.h>
-
+
+#include <library/cpp/actors/core/executor_pool_basic.h>
+#include <library/cpp/actors/core/scheduler_basic.h>
+#include <library/cpp/testing/unittest/registar.h>
+
#include <ydb/core/testlib/basics/runtime.h>
#include <ydb/core/testlib/tablet_helpers.h>
#include <ydb/core/base/path.h>
-
+
#include <ydb/library/folder_service/folder_service.h>
#include <ydb/library/folder_service/mock/mock_folder_service.h>
-
-#include <util/system/env.h>
-
-namespace NYq {
-
-using namespace NActors;
-using namespace NKikimr;
-
-namespace {
-
-//////////////////////////////////////////////////////
-
-using TRuntimePtr = std::shared_ptr<TTestActorRuntime>;
-
-class TGrabActor: public TActor<TGrabActor> {
- std::deque<NThreading::TPromise<TAutoPtr<IEventHandle>>> Futures;
- std::deque<TAutoPtr<IEventHandle>> Inputs;
- TMutex Mutex;
-
-public:
- TRuntimePtr Runtime;
-
- TGrabActor(TRuntimePtr runtime)
- : TActor(&TGrabActor::StateFunc)
- , Runtime(runtime)
- { }
-
- STFUNC(StateFunc)
- {
- Y_UNUSED(ctx);
- TGuard<TMutex> lock(Mutex);
- if (!Futures.empty()) {
- auto front = Futures.front();
- Futures.pop_front();
- front.SetValue(ev);
- return;
- }
- Inputs.push_back(ev);
- }
-
- NThreading::TFuture<TAutoPtr<IEventHandle>> WaitRequest()
- {
- TGuard<TMutex> lock(Mutex);
- if (!Inputs.empty()) {
- auto front = Inputs.front();
- Inputs.pop_front();
- return NThreading::MakeFuture(front);
- }
- Futures.push_back(NThreading::NewPromise<TAutoPtr<IEventHandle>>());
- return Futures.back();
- }
-
- TAutoPtr<IEventHandle> GetRequest()
- {
- auto future = WaitRequest();
- while (!future.HasValue()) {
- Runtime->DispatchEvents({}, TDuration::MilliSeconds(1));
- }
- return future.GetValue();
- }
-};
-
-struct TTestBootstrap {
- const TDuration RequestTimeout = TDuration::Seconds(10);
- NConfig::TControlPlaneProxyConfig Config;
-
- TRuntimePtr Runtime;
- TGrabActor* MetaStorageGrab;
- TGrabActor* TestConnectionGrab;
-
- TTestBootstrap(const NConfig::TControlPlaneProxyConfig& config = {})
- : Config(config)
- , Runtime(PrepareTestActorRuntime())
- {
- }
-
- ~TTestBootstrap()
- {
- MetaStorageGrab->Runtime.reset();
- TestConnectionGrab->Runtime.reset();
- }
-
- void SendCreateQueryRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::CreateQueryRequest proto;
- proto.mutable_content()->set_name("my_query_name");
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvCreateQueryRequest>("", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendListQueriesRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::ListQueriesRequest proto;
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvListQueriesRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendDescribeQueryRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::DescribeQueryRequest proto;
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvDescribeQueryRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
+
+#include <util/system/env.h>
+
+namespace NYq {
+
+using namespace NActors;
+using namespace NKikimr;
+
+namespace {
+
+//////////////////////////////////////////////////////
+
+using TRuntimePtr = std::shared_ptr<TTestActorRuntime>;
+
+class TGrabActor: public TActor<TGrabActor> {
+ std::deque<NThreading::TPromise<TAutoPtr<IEventHandle>>> Futures;
+ std::deque<TAutoPtr<IEventHandle>> Inputs;
+ TMutex Mutex;
+
+public:
+ TRuntimePtr Runtime;
+
+ TGrabActor(TRuntimePtr runtime)
+ : TActor(&TGrabActor::StateFunc)
+ , Runtime(runtime)
+ { }
+
+ STFUNC(StateFunc)
+ {
+ Y_UNUSED(ctx);
+ TGuard<TMutex> lock(Mutex);
+ if (!Futures.empty()) {
+ auto front = Futures.front();
+ Futures.pop_front();
+ front.SetValue(ev);
+ return;
+ }
+ Inputs.push_back(ev);
+ }
+
+ NThreading::TFuture<TAutoPtr<IEventHandle>> WaitRequest()
+ {
+ TGuard<TMutex> lock(Mutex);
+ if (!Inputs.empty()) {
+ auto front = Inputs.front();
+ Inputs.pop_front();
+ return NThreading::MakeFuture(front);
+ }
+ Futures.push_back(NThreading::NewPromise<TAutoPtr<IEventHandle>>());
+ return Futures.back();
+ }
+
+ TAutoPtr<IEventHandle> GetRequest()
+ {
+ auto future = WaitRequest();
+ while (!future.HasValue()) {
+ Runtime->DispatchEvents({}, TDuration::MilliSeconds(1));
+ }
+ return future.GetValue();
+ }
+};
+
+struct TTestBootstrap {
+ const TDuration RequestTimeout = TDuration::Seconds(10);
+ NConfig::TControlPlaneProxyConfig Config;
+
+ TRuntimePtr Runtime;
+ TGrabActor* MetaStorageGrab;
+ TGrabActor* TestConnectionGrab;
+
+ TTestBootstrap(const NConfig::TControlPlaneProxyConfig& config = {})
+ : Config(config)
+ , Runtime(PrepareTestActorRuntime())
+ {
+ }
+
+ ~TTestBootstrap()
+ {
+ MetaStorageGrab->Runtime.reset();
+ TestConnectionGrab->Runtime.reset();
+ }
+
+ void SendCreateQueryRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::CreateQueryRequest proto;
+ proto.mutable_content()->set_name("my_query_name");
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvCreateQueryRequest>("", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendListQueriesRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::ListQueriesRequest proto;
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvListQueriesRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendDescribeQueryRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::DescribeQueryRequest proto;
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvDescribeQueryRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
void SendGetQueryStatusRequest(const TVector<TString>& permissions = {})
{
TActorId sender = Runtime->AllocateEdgeActor();
@@ -142,57 +142,57 @@ struct TTestBootstrap {
Runtime->DispatchEvents({}, TDuration::Zero());
}
- void SendModifyQueryRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::ModifyQueryRequest proto;
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvModifyQueryRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendDeleteQueryRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::DeleteQueryRequest proto;
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvDeleteQueryRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendControlQueryRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::ControlQueryRequest proto;
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvControlQueryRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendGetResultDataRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::GetResultDataRequest proto;
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvGetResultDataRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendListJobsRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::ListJobsRequest proto;
- proto.set_query_id("my_query_id");
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvListJobsRequest>("", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
+ void SendModifyQueryRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::ModifyQueryRequest proto;
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvModifyQueryRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendDeleteQueryRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::DeleteQueryRequest proto;
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvDeleteQueryRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendControlQueryRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::ControlQueryRequest proto;
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvControlQueryRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendGetResultDataRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::GetResultDataRequest proto;
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvGetResultDataRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendListJobsRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::ListJobsRequest proto;
+ proto.set_query_id("my_query_id");
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvListJobsRequest>("", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
void SendDescribeJobRequest(const TVector<TString>& permissions = {})
{
TActorId sender = Runtime->AllocateEdgeActor();
@@ -203,218 +203,218 @@ struct TTestBootstrap {
Runtime->DispatchEvents({}, TDuration::Zero());
}
- void SendCreateConnectionRequest(const TVector<TString>& permissions = {}, const TString& serviceAccountId = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::CreateConnectionRequest proto;
- if (serviceAccountId) {
- proto.mutable_content()
- ->mutable_setting()
- ->mutable_ydb_database()
- ->mutable_auth()
- ->mutable_service_account()
- ->set_id(serviceAccountId);
- }
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvCreateConnectionRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendListConnectionsRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::ListConnectionsRequest proto;
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvListConnectionsRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendDescribeConnectionRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::DescribeConnectionRequest proto;
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvDescribeConnectionRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendModifyConnectionRequest(const TVector<TString>& permissions = {}, const TString& serviceAccountId = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::ModifyConnectionRequest proto;
- if (serviceAccountId) {
- proto.mutable_content()
- ->mutable_setting()
- ->mutable_ydb_database()
- ->mutable_auth()
- ->mutable_service_account()
- ->set_id(serviceAccountId);
- }
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvModifyConnectionRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendDeleteConnectionRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::DeleteConnectionRequest proto;
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvDeleteConnectionRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendTestConnectionRequest(const TVector<TString>& permissions = {}, const TString& serviceAccountId = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::TestConnectionRequest proto;
- if (serviceAccountId) {
- proto.mutable_setting()
- ->mutable_ydb_database()
- ->mutable_auth()
- ->mutable_service_account()
- ->set_id(serviceAccountId);
- }
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvTestConnectionRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendCreateBindingRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::CreateBindingRequest proto;
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvCreateBindingRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendListBindingsRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::ListBindingsRequest proto;
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvListBindingsRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendDescribeBindingRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::DescribeBindingRequest proto;
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvDescribeBindingRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendModifyBindingRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::ModifyBindingRequest proto;
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvModifyBindingRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- void SendDeleteBindingRequest(const TVector<TString>& permissions = {})
- {
- TActorId sender = Runtime->AllocateEdgeActor();
- YandexQuery::DeleteBindingRequest proto;
-
- auto request = std::make_unique<TEvControlPlaneProxy::TEvDeleteBindingRequest>("my_folder", proto, "test_user@staff", "", permissions);
- Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
- Runtime->DispatchEvents({}, TDuration::Zero());
- }
-
- template<typename T>
- std::pair<TAutoPtr<IEventHandle>, T*> Grab()
- {
- TAutoPtr<IEventHandle> handle;
- T* event = Runtime->GrabEdgeEvent<T>(handle);
- return {handle, event};
- }
-
-
-private:
- TRuntimePtr PrepareTestActorRuntime()
- {
- TRuntimePtr runtime(new TTestBasicRuntime());
- runtime->SetLogPriority(NKikimrServices::STREAMS_CONTROL_PLANE_SERVICE, NLog::PRI_DEBUG);
-
- auto controlPlaneProxy = CreateControlPlaneProxyActor(Config, MakeIntrusive<NMonitoring::TDynamicCounters>());
- runtime->AddLocalService(
- ControlPlaneProxyActorId(),
- TActorSetupCmd(controlPlaneProxy, TMailboxType::Simple, 0));
-
+ void SendCreateConnectionRequest(const TVector<TString>& permissions = {}, const TString& serviceAccountId = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::CreateConnectionRequest proto;
+ if (serviceAccountId) {
+ proto.mutable_content()
+ ->mutable_setting()
+ ->mutable_ydb_database()
+ ->mutable_auth()
+ ->mutable_service_account()
+ ->set_id(serviceAccountId);
+ }
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvCreateConnectionRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendListConnectionsRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::ListConnectionsRequest proto;
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvListConnectionsRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendDescribeConnectionRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::DescribeConnectionRequest proto;
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvDescribeConnectionRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendModifyConnectionRequest(const TVector<TString>& permissions = {}, const TString& serviceAccountId = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::ModifyConnectionRequest proto;
+ if (serviceAccountId) {
+ proto.mutable_content()
+ ->mutable_setting()
+ ->mutable_ydb_database()
+ ->mutable_auth()
+ ->mutable_service_account()
+ ->set_id(serviceAccountId);
+ }
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvModifyConnectionRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendDeleteConnectionRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::DeleteConnectionRequest proto;
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvDeleteConnectionRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendTestConnectionRequest(const TVector<TString>& permissions = {}, const TString& serviceAccountId = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::TestConnectionRequest proto;
+ if (serviceAccountId) {
+ proto.mutable_setting()
+ ->mutable_ydb_database()
+ ->mutable_auth()
+ ->mutable_service_account()
+ ->set_id(serviceAccountId);
+ }
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvTestConnectionRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendCreateBindingRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::CreateBindingRequest proto;
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvCreateBindingRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendListBindingsRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::ListBindingsRequest proto;
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvListBindingsRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendDescribeBindingRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::DescribeBindingRequest proto;
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvDescribeBindingRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendModifyBindingRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::ModifyBindingRequest proto;
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvModifyBindingRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ void SendDeleteBindingRequest(const TVector<TString>& permissions = {})
+ {
+ TActorId sender = Runtime->AllocateEdgeActor();
+ YandexQuery::DeleteBindingRequest proto;
+
+ auto request = std::make_unique<TEvControlPlaneProxy::TEvDeleteBindingRequest>("my_folder", proto, "test_user@staff", "", permissions);
+ Runtime->Send(new IEventHandle(ControlPlaneProxyActorId(), sender, request.release()));
+ Runtime->DispatchEvents({}, TDuration::Zero());
+ }
+
+ template<typename T>
+ std::pair<TAutoPtr<IEventHandle>, T*> Grab()
+ {
+ TAutoPtr<IEventHandle> handle;
+ T* event = Runtime->GrabEdgeEvent<T>(handle);
+ return {handle, event};
+ }
+
+
+private:
+ TRuntimePtr PrepareTestActorRuntime()
+ {
+ TRuntimePtr runtime(new TTestBasicRuntime());
+ runtime->SetLogPriority(NKikimrServices::STREAMS_CONTROL_PLANE_SERVICE, NLog::PRI_DEBUG);
+
+ auto controlPlaneProxy = CreateControlPlaneProxyActor(Config, MakeIntrusive<NMonitoring::TDynamicCounters>());
+ runtime->AddLocalService(
+ ControlPlaneProxyActorId(),
+ TActorSetupCmd(controlPlaneProxy, TMailboxType::Simple, 0));
+
auto folderService = NKikimr::NFolderService::CreateMockFolderServiceActor(NKikimrProto::NFolderService::TFolderServiceConfig{});
- runtime->AddLocalService(
+ runtime->AddLocalService(
NKikimr::NFolderService::FolderServiceActorId(),
- TActorSetupCmd(folderService, TMailboxType::Simple, 0),
- 0
- );
-
- MetaStorageGrab = new TGrabActor(runtime);
- runtime->AddLocalService(
- ControlPlaneStorageServiceActorId(),
- TActorSetupCmd(MetaStorageGrab, TMailboxType::Simple, 0),
- 0
- );
-
- TestConnectionGrab = new TGrabActor(runtime);
- runtime->AddLocalService(
- TestConnectionActorId(),
- TActorSetupCmd(TestConnectionGrab, TMailboxType::Simple, 0),
- 0
- );
-
- SetupTabletServices(*runtime);
-
- return runtime;
- }
-};
-
-} // namespace
-
-//////////////////////////////////////////////////////
-
-Y_UNIT_TEST_SUITE(TControlPlaneProxyTest) {
- Y_UNIT_TEST(ShouldSendCreateQuery)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendCreateQueryRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvCreateQueryRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Request.content().name(), "my_query_name");
- }
-
- Y_UNIT_TEST(ShouldSendListQueries)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendListQueriesRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvListQueriesRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
- Y_UNIT_TEST(ShouldSendDescribeQuery)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendDescribeQueryRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDescribeQueryRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
+ TActorSetupCmd(folderService, TMailboxType::Simple, 0),
+ 0
+ );
+
+ MetaStorageGrab = new TGrabActor(runtime);
+ runtime->AddLocalService(
+ ControlPlaneStorageServiceActorId(),
+ TActorSetupCmd(MetaStorageGrab, TMailboxType::Simple, 0),
+ 0
+ );
+
+ TestConnectionGrab = new TGrabActor(runtime);
+ runtime->AddLocalService(
+ TestConnectionActorId(),
+ TActorSetupCmd(TestConnectionGrab, TMailboxType::Simple, 0),
+ 0
+ );
+
+ SetupTabletServices(*runtime);
+
+ return runtime;
+ }
+};
+
+} // namespace
+
+//////////////////////////////////////////////////////
+
+Y_UNIT_TEST_SUITE(TControlPlaneProxyTest) {
+ Y_UNIT_TEST(ShouldSendCreateQuery)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendCreateQueryRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvCreateQueryRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Request.content().name(), "my_query_name");
+ }
+
+ Y_UNIT_TEST(ShouldSendListQueries)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendListQueriesRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvListQueriesRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
+ Y_UNIT_TEST(ShouldSendDescribeQuery)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendDescribeQueryRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDescribeQueryRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
Y_UNIT_TEST(ShouldSendGetQueryStatus)
{
TTestBootstrap bootstrap;
@@ -424,51 +424,51 @@ Y_UNIT_TEST_SUITE(TControlPlaneProxyTest) {
UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
}
- Y_UNIT_TEST(ShouldSendModifyQuery)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendModifyQueryRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvModifyQueryRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
- Y_UNIT_TEST(ShouldSendDeleteQuery)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendDeleteQueryRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDeleteQueryRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
- Y_UNIT_TEST(ShouldSendControlQuery)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendControlQueryRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvControlQueryRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
- Y_UNIT_TEST(ShouldSendGetResultData)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendGetResultDataRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvGetResultDataRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
- Y_UNIT_TEST(ShouldSendListJobs)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendListJobsRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvListJobsRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Request.query_id(), "my_query_id");
- }
-
+ Y_UNIT_TEST(ShouldSendModifyQuery)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendModifyQueryRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvModifyQueryRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
+ Y_UNIT_TEST(ShouldSendDeleteQuery)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendDeleteQueryRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDeleteQueryRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
+ Y_UNIT_TEST(ShouldSendControlQuery)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendControlQueryRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvControlQueryRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
+ Y_UNIT_TEST(ShouldSendGetResultData)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendGetResultDataRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvGetResultDataRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
+ Y_UNIT_TEST(ShouldSendListJobs)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendListJobsRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvListJobsRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Request.query_id(), "my_query_id");
+ }
+
Y_UNIT_TEST(ShouldSendDescribeJob)
{
TTestBootstrap bootstrap;
@@ -478,137 +478,137 @@ Y_UNIT_TEST_SUITE(TControlPlaneProxyTest) {
UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
}
- Y_UNIT_TEST(ShouldSendCreateConnection)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendCreateConnectionRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvCreateConnectionRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
- Y_UNIT_TEST(ShouldSendListConnections)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendListConnectionsRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvListConnectionsRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
- Y_UNIT_TEST(ShouldSendDescribeConnection)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendDescribeConnectionRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDescribeConnectionRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
- Y_UNIT_TEST(ShouldSendModifyConnection)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendModifyConnectionRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvModifyConnectionRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
- Y_UNIT_TEST(ShouldSendDeleteConnection)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendDeleteConnectionRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDeleteConnectionRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
- Y_UNIT_TEST(ShouldSendTestConnection)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendTestConnectionRequest();
- auto request = bootstrap.TestConnectionGrab->GetRequest();
- auto event = request->Get<TEvTestConnection::TEvTestConnectionRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
- Y_UNIT_TEST(ShouldSendCreateBinding)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendCreateBindingRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvCreateBindingRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
- Y_UNIT_TEST(ShouldSendListBindings)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendListBindingsRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvListBindingsRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
- Y_UNIT_TEST(ShouldSendDescribeBinding)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendDescribeBindingRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDescribeBindingRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
- Y_UNIT_TEST(ShouldSendModifyBinding)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendModifyBindingRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvModifyBindingRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-
- Y_UNIT_TEST(ShouldSendDeleteBinding)
- {
- TTestBootstrap bootstrap;
- bootstrap.SendDeleteBindingRequest();
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDeleteBindingRequest>();
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- }
-};
-
-Y_UNIT_TEST_SUITE(TControlPlaneProxyCheckPermissionsFailed) {
- Y_UNIT_TEST(ShouldSendCreateQuery)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendCreateQueryRequest();
+ Y_UNIT_TEST(ShouldSendCreateConnection)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendCreateConnectionRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvCreateConnectionRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
+ Y_UNIT_TEST(ShouldSendListConnections)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendListConnectionsRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvListConnectionsRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
+ Y_UNIT_TEST(ShouldSendDescribeConnection)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendDescribeConnectionRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDescribeConnectionRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
+ Y_UNIT_TEST(ShouldSendModifyConnection)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendModifyConnectionRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvModifyConnectionRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
+ Y_UNIT_TEST(ShouldSendDeleteConnection)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendDeleteConnectionRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDeleteConnectionRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
+ Y_UNIT_TEST(ShouldSendTestConnection)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendTestConnectionRequest();
+ auto request = bootstrap.TestConnectionGrab->GetRequest();
+ auto event = request->Get<TEvTestConnection::TEvTestConnectionRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
+ Y_UNIT_TEST(ShouldSendCreateBinding)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendCreateBindingRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvCreateBindingRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
+ Y_UNIT_TEST(ShouldSendListBindings)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendListBindingsRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvListBindingsRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
+ Y_UNIT_TEST(ShouldSendDescribeBinding)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendDescribeBindingRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDescribeBindingRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
+ Y_UNIT_TEST(ShouldSendModifyBinding)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendModifyBindingRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvModifyBindingRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+
+ Y_UNIT_TEST(ShouldSendDeleteBinding)
+ {
+ TTestBootstrap bootstrap;
+ bootstrap.SendDeleteBindingRequest();
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDeleteBindingRequest>();
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ }
+};
+
+Y_UNIT_TEST_SUITE(TControlPlaneProxyCheckPermissionsFailed) {
+ Y_UNIT_TEST(ShouldSendCreateQuery)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendCreateQueryRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvCreateQueryResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendListQueries)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendListQueriesRequest();
+ }
+
+ Y_UNIT_TEST(ShouldSendListQueries)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendListQueriesRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvListQueriesResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendDescribeQuery)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDescribeQueryRequest();
+ }
+
+ Y_UNIT_TEST(ShouldSendDescribeQuery)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDescribeQueryRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvDescribeQueryResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
+ }
+
Y_UNIT_TEST(ShouldSendGetQueryStatus)
{
NConfig::TControlPlaneProxyConfig config;
@@ -619,59 +619,59 @@ Y_UNIT_TEST_SUITE(TControlPlaneProxyCheckPermissionsFailed) {
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
}
- Y_UNIT_TEST(ShouldSendModifyQuery)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendModifyQueryRequest();
+ Y_UNIT_TEST(ShouldSendModifyQuery)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendModifyQueryRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvModifyQueryResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendDeleteQuery)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDeleteQueryRequest();
+ }
+
+ Y_UNIT_TEST(ShouldSendDeleteQuery)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDeleteQueryRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvDeleteQueryResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendControlQuery)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendControlQueryRequest();
+ }
+
+ Y_UNIT_TEST(ShouldSendControlQuery)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendControlQueryRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvControlQueryResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendGetResultData)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendGetResultDataRequest();
+ }
+
+ Y_UNIT_TEST(ShouldSendGetResultData)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendGetResultDataRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvGetResultDataResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendListJobs)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendListJobsRequest();
+ }
+
+ Y_UNIT_TEST(ShouldSendListJobs)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendListJobsRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvListJobsResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
+ }
+
Y_UNIT_TEST(ShouldSendDescribeJob)
{
- NConfig::TControlPlaneProxyConfig config;
+ NConfig::TControlPlaneProxyConfig config;
config.SetEnablePermissions(true);
TTestBootstrap bootstrap(config);
bootstrap.SendDescribeJobRequest();
@@ -679,208 +679,208 @@ Y_UNIT_TEST_SUITE(TControlPlaneProxyCheckPermissionsFailed) {
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
}
- Y_UNIT_TEST(ShouldSendCreateConnection)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendCreateConnectionRequest();
- const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvCreateConnectionResponse>();
- UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendCreateConnectionWithServiceAccount)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendCreateConnectionRequest({"yq.connections.create@as"}, "my_sa_id");
+ Y_UNIT_TEST(ShouldSendCreateConnection)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendCreateConnectionRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvCreateConnectionResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendListConnections)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendListConnectionsRequest();
+ }
+
+ Y_UNIT_TEST(ShouldSendCreateConnectionWithServiceAccount)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendCreateConnectionRequest({"yq.connections.create@as"}, "my_sa_id");
+ const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvCreateConnectionResponse>();
+ UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
+ }
+
+ Y_UNIT_TEST(ShouldSendListConnections)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendListConnectionsRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvListConnectionsResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendDescribeConnection)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDescribeConnectionRequest();
+ }
+
+ Y_UNIT_TEST(ShouldSendDescribeConnection)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDescribeConnectionRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvDescribeConnectionResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendModifyConnection)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendModifyConnectionRequest();
- const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvModifyConnectionResponse>();
- UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendModifyConnectionWithServiceAccount)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendModifyConnectionRequest({"yq.connections.update@as"}, "my_sa_id");
+ }
+
+ Y_UNIT_TEST(ShouldSendModifyConnection)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendModifyConnectionRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvModifyConnectionResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendDeleteConnection)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDeleteConnectionRequest();
+ }
+
+ Y_UNIT_TEST(ShouldSendModifyConnectionWithServiceAccount)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendModifyConnectionRequest({"yq.connections.update@as"}, "my_sa_id");
+ const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvModifyConnectionResponse>();
+ UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
+ }
+
+ Y_UNIT_TEST(ShouldSendDeleteConnection)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDeleteConnectionRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvDeleteConnectionResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendTestConnection)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendTestConnectionRequest();
- const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvTestConnectionResponse>();
- UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendTestConnectionWithServiceAccount)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendTestConnectionRequest({"yq.connections.create@as"}, "my_sa_id");
- const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvTestConnectionResponse>();
- UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendCreateBinding)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendCreateBindingRequest();
+ }
+
+ Y_UNIT_TEST(ShouldSendTestConnection)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendTestConnectionRequest();
+ const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvTestConnectionResponse>();
+ UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
+ }
+
+ Y_UNIT_TEST(ShouldSendTestConnectionWithServiceAccount)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendTestConnectionRequest({"yq.connections.create@as"}, "my_sa_id");
+ const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvTestConnectionResponse>();
+ UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
+ }
+
+ Y_UNIT_TEST(ShouldSendCreateBinding)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendCreateBindingRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvCreateBindingResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendListBindings)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendListBindingsRequest();
+ }
+
+ Y_UNIT_TEST(ShouldSendListBindings)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendListBindingsRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvListBindingsResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendDescribeBinding)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDescribeBindingRequest();
+ }
+
+ Y_UNIT_TEST(ShouldSendDescribeBinding)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDescribeBindingRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvDescribeBindingResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendModifyBinding)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendModifyBindingRequest();
+ }
+
+ Y_UNIT_TEST(ShouldSendModifyBinding)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendModifyBindingRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvModifyBindingResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-
- Y_UNIT_TEST(ShouldSendDeleteBinding)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDeleteBindingRequest();
+ }
+
+ Y_UNIT_TEST(ShouldSendDeleteBinding)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDeleteBindingRequest();
const auto [_, response] = bootstrap.Grab<TEvControlPlaneProxy::TEvDeleteBindingResponse>();
UNIT_ASSERT_STRING_CONTAINS(response->Issues.ToString(), "Error: No permission");
- }
-};
-
-Y_UNIT_TEST_SUITE(TControlPlaneProxyCheckPermissionsSuccess) {
- Y_UNIT_TEST(ShouldSendCreateQuery)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendCreateQueryRequest({"yq.queries.create@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvCreateQueryRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Request.content().name(), "my_query_name");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendListQueries)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendListQueriesRequest({"yq.queries.get@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvListQueriesRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendDescribeQuery)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDescribeQueryRequest({"yq.queries.get@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDescribeQueryRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
+ }
+};
+
+Y_UNIT_TEST_SUITE(TControlPlaneProxyCheckPermissionsSuccess) {
+ Y_UNIT_TEST(ShouldSendCreateQuery)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendCreateQueryRequest({"yq.queries.create@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvCreateQueryRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Request.content().name(), "my_query_name");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendListQueries)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendListQueriesRequest({"yq.queries.get@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvListQueriesRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendDescribeQuery)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDescribeQueryRequest({"yq.queries.get@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDescribeQueryRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
Y_UNIT_TEST(ShouldSendGetQueryStatus)
{
NConfig::TControlPlaneProxyConfig config;
@@ -901,965 +901,965 @@ Y_UNIT_TEST_SUITE(TControlPlaneProxyCheckPermissionsSuccess) {
UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
}
- Y_UNIT_TEST(ShouldSendModifyQuery)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendModifyQueryRequest({"yq.queries.update@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvModifyQueryRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendDeleteQuery)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDeleteQueryRequest({"yq.queries.delete@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDeleteQueryRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendControlQuery)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendControlQueryRequest({"yq.queries.control@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvControlQueryRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendGetResultData)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendGetResultDataRequest({"yq.queries.getData@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvGetResultDataRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendListJobs)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendListJobsRequest({"yq.jobs.get@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvListJobsRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Request.query_id(), "my_query_id");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
+ Y_UNIT_TEST(ShouldSendModifyQuery)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendModifyQueryRequest({"yq.queries.update@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvModifyQueryRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendDeleteQuery)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDeleteQueryRequest({"yq.queries.delete@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDeleteQueryRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendControlQuery)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendControlQueryRequest({"yq.queries.control@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvControlQueryRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendGetResultData)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendGetResultDataRequest({"yq.queries.getData@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvGetResultDataRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendListJobs)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendListJobsRequest({"yq.jobs.get@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvListJobsRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Request.query_id(), "my_query_id");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
Y_UNIT_TEST(ShouldSendDescribeJob)
{
- NConfig::TControlPlaneProxyConfig config;
+ NConfig::TControlPlaneProxyConfig config;
config.SetEnablePermissions(true);
TTestBootstrap bootstrap(config);
bootstrap.SendDescribeJobRequest({"yq.jobs.get@as"});
auto request = bootstrap.MetaStorageGrab->GetRequest();
auto event = request->Get<TEvControlPlaneStorage::TEvDescribeJobRequest>();
- auto permissions = event->Permissions;
+ auto permissions = event->Permissions;
UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendCreateConnection)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendCreateConnectionRequest({"yq.connections.create@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvCreateConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendCreateConnectionWithServiceAccount)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendCreateConnectionRequest({"yq.connections.create@as", "iam.serviceAccounts.use@as"}, "my_sa_id");
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvCreateConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendListConnections)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendListConnectionsRequest({"yq.connections.get@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvListConnectionsRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendDescribeConnection)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDescribeConnectionRequest({"yq.connections.get@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDescribeConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendModifyConnection)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendModifyConnectionRequest({"yq.connections.update@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvModifyConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendModifyConnectionWithServiceAccount)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendModifyConnectionRequest({"yq.connections.update@as", "iam.serviceAccounts.use@as"}, "my_sa_id");
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvModifyConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendDeleteConnection)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDeleteConnectionRequest({"yq.connections.delete@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDeleteConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendTestConnection)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendTestConnectionRequest({"yq.connections.create@as"});
- auto request = bootstrap.TestConnectionGrab->GetRequest();
- auto event = request->Get<TEvTestConnection::TEvTestConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendTestConnectionWithServiceAccount)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendTestConnectionRequest({"yq.connections.create@as", "iam.serviceAccounts.use@as"}, "my_sa_id");
- auto request = bootstrap.TestConnectionGrab->GetRequest();
- auto event = request->Get<TEvTestConnection::TEvTestConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendCreateBinding)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendCreateBindingRequest({"yq.bindings.create@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvCreateBindingRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendListBindings)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendListBindingsRequest({"yq.bindings.get@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvListBindingsRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendDescribeBinding)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDescribeBindingRequest({"yq.bindings.get@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDescribeBindingRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendModifyBinding)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendModifyBindingRequest({"yq.bindings.update@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvModifyBindingRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendDeleteBinding)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDeleteBindingRequest({"yq.bindings.delete@as"});
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDeleteBindingRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-};
-
-Y_UNIT_TEST_SUITE(TControlPlaneProxyCheckPermissionsControlPlaneStorageSuccess) {
- Y_UNIT_TEST(ShouldSendCreateQuery)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendCreateQueryRequest({
- "yq.queries.create@as",
- "yq.queries.invoke@as",
- "yq.connections.use@as",
- "yq.bindings.use@as",
- "yq.resources.managePublic@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvCreateQueryRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Request.content().name(), "my_query_name");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendListQueries)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendListQueriesRequest({
- "yq.queries.get@as",
- "yq.resources.viewPublic@as",
- "yq.resources.viewPrivate@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvListQueriesRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendDescribeQuery)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDescribeQueryRequest({
- "yq.queries.get@as",
- "yq.queries.viewAst@as",
- "yq.resources.viewPublic@as",
- "yq.resources.viewPrivate@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDescribeQueryRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendModifyQuery)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendModifyQueryRequest({
- "yq.queries.update@as",
- "yq.queries.invoke@as",
- "yq.resources.managePublic@as",
- "yq.resources.managePrivate@as",
- "yq.connections.use@as",
- "yq.bindings.use@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvModifyQueryRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendDeleteQuery)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDeleteQueryRequest({
- "yq.queries.delete@as",
- "yq.resources.managePublic@as",
- "yq.resources.managePrivate@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDeleteQueryRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendControlQuery)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendControlQueryRequest({
- "yq.queries.control@as",
- "yq.resources.managePublic@as",
- "yq.resources.managePrivate@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvControlQueryRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendGetResultData)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendGetResultDataRequest({
- "yq.queries.getData@as",
- "yq.resources.viewPublic@as",
- "yq.resources.viewPrivate@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvGetResultDataRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendListJobs)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendListJobsRequest({
- "yq.jobs.get@as",
- "yq.resources.viewPublic@as",
- "yq.resources.viewPrivate@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvListJobsRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Request.query_id(), "my_query_id");
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendDescribeJob)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDescribeJobRequest({
- "yq.jobs.get@as",
- "yq.resources.viewPublic@as",
- "yq.resources.viewPrivate@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDescribeJobRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendCreateConnection)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendCreateConnectionRequest({
- "yq.connections.create@as",
- "yq.resources.managePublic@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvCreateConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendCreateConnectionWithServiceAccount)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendCreateConnectionRequest({
- "yq.connections.create@as",
- "iam.serviceAccounts.use@as",
- "yq.resources.managePublic@as"
- }, "my_sa_id");
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvCreateConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendListConnections)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendListConnectionsRequest({
- "yq.connections.get@as",
- "yq.resources.viewPublic@as",
- "yq.resources.viewPrivate@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvListConnectionsRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendDescribeConnection)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDescribeConnectionRequest({
- "yq.connections.get@as",
- "yq.resources.viewPublic@as",
- "yq.resources.viewPrivate@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDescribeConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendModifyConnection)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendModifyConnectionRequest({
- "yq.connections.update@as",
- "yq.resources.managePublic@as",
- "yq.resources.managePrivate@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvModifyConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendModifyConnectionWithServiceAccount)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendModifyConnectionRequest({
- "yq.connections.update@as",
- "iam.serviceAccounts.use@as",
- "yq.resources.managePublic@as",
- "yq.resources.managePrivate@as"
- }, "my_sa_id");
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvModifyConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendDeleteConnection)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDeleteConnectionRequest({
- "yq.connections.delete@as",
- "yq.resources.managePublic@as",
- "yq.resources.managePrivate@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDeleteConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendTestConnection)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendTestConnectionRequest({
- "yq.connections.create@as",
- "yq.resources.managePublic@as"
- });
-
- auto request = bootstrap.TestConnectionGrab->GetRequest();
- auto event = request->Get<TEvTestConnection::TEvTestConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendTestConnectionWithServiceAccount)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendTestConnectionRequest({
- "yq.connections.create@as",
- "iam.serviceAccounts.use@as",
- "yq.resources.managePublic@as"
- }, "my_sa_id");
-
- auto request = bootstrap.TestConnectionGrab->GetRequest();
- auto event = request->Get<TEvTestConnection::TEvTestConnectionRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendCreateBinding)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendCreateBindingRequest({
- "yq.bindings.create@as",
- "yq.resources.managePublic@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvCreateBindingRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendListBindings)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendListBindingsRequest({
- "yq.bindings.get@as",
- "yq.resources.viewPublic@as",
- "yq.resources.viewPrivate@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvListBindingsRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendDescribeBinding)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDescribeBindingRequest({
- "yq.bindings.get@as",
- "yq.resources.viewPublic@as",
- "yq.resources.viewPrivate@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDescribeBindingRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendModifyBinding)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendModifyBindingRequest({
- "yq.bindings.update@as",
- "yq.resources.managePublic@as",
- "yq.resources.managePrivate@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvModifyBindingRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-
- Y_UNIT_TEST(ShouldSendDeleteBinding)
- {
- NConfig::TControlPlaneProxyConfig config;
- config.SetEnablePermissions(true);
- TTestBootstrap bootstrap(config);
- bootstrap.SendDeleteBindingRequest({
- "yq.bindings.delete@as",
- "yq.resources.managePublic@as",
- "yq.resources.managePrivate@as"
- });
- auto request = bootstrap.MetaStorageGrab->GetRequest();
- auto event = request->Get<TEvControlPlaneStorage::TEvDeleteBindingRequest>();
- auto permissions = event->Permissions;
- UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
- UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
- UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
- UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
- }
-};
-
-} // namespace NYq
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendCreateConnection)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendCreateConnectionRequest({"yq.connections.create@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvCreateConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendCreateConnectionWithServiceAccount)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendCreateConnectionRequest({"yq.connections.create@as", "iam.serviceAccounts.use@as"}, "my_sa_id");
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvCreateConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendListConnections)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendListConnectionsRequest({"yq.connections.get@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvListConnectionsRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendDescribeConnection)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDescribeConnectionRequest({"yq.connections.get@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDescribeConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendModifyConnection)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendModifyConnectionRequest({"yq.connections.update@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvModifyConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendModifyConnectionWithServiceAccount)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendModifyConnectionRequest({"yq.connections.update@as", "iam.serviceAccounts.use@as"}, "my_sa_id");
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvModifyConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendDeleteConnection)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDeleteConnectionRequest({"yq.connections.delete@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDeleteConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendTestConnection)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendTestConnectionRequest({"yq.connections.create@as"});
+ auto request = bootstrap.TestConnectionGrab->GetRequest();
+ auto event = request->Get<TEvTestConnection::TEvTestConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendTestConnectionWithServiceAccount)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendTestConnectionRequest({"yq.connections.create@as", "iam.serviceAccounts.use@as"}, "my_sa_id");
+ auto request = bootstrap.TestConnectionGrab->GetRequest();
+ auto event = request->Get<TEvTestConnection::TEvTestConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendCreateBinding)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendCreateBindingRequest({"yq.bindings.create@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvCreateBindingRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendListBindings)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendListBindingsRequest({"yq.bindings.get@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvListBindingsRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendDescribeBinding)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDescribeBindingRequest({"yq.bindings.get@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDescribeBindingRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendModifyBinding)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendModifyBindingRequest({"yq.bindings.update@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvModifyBindingRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendDeleteBinding)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDeleteBindingRequest({"yq.bindings.delete@as"});
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDeleteBindingRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+};
+
+Y_UNIT_TEST_SUITE(TControlPlaneProxyCheckPermissionsControlPlaneStorageSuccess) {
+ Y_UNIT_TEST(ShouldSendCreateQuery)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendCreateQueryRequest({
+ "yq.queries.create@as",
+ "yq.queries.invoke@as",
+ "yq.connections.use@as",
+ "yq.bindings.use@as",
+ "yq.resources.managePublic@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvCreateQueryRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Request.content().name(), "my_query_name");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendListQueries)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendListQueriesRequest({
+ "yq.queries.get@as",
+ "yq.resources.viewPublic@as",
+ "yq.resources.viewPrivate@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvListQueriesRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendDescribeQuery)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDescribeQueryRequest({
+ "yq.queries.get@as",
+ "yq.queries.viewAst@as",
+ "yq.resources.viewPublic@as",
+ "yq.resources.viewPrivate@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDescribeQueryRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendModifyQuery)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendModifyQueryRequest({
+ "yq.queries.update@as",
+ "yq.queries.invoke@as",
+ "yq.resources.managePublic@as",
+ "yq.resources.managePrivate@as",
+ "yq.connections.use@as",
+ "yq.bindings.use@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvModifyQueryRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendDeleteQuery)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDeleteQueryRequest({
+ "yq.queries.delete@as",
+ "yq.resources.managePublic@as",
+ "yq.resources.managePrivate@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDeleteQueryRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendControlQuery)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendControlQueryRequest({
+ "yq.queries.control@as",
+ "yq.resources.managePublic@as",
+ "yq.resources.managePrivate@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvControlQueryRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendGetResultData)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendGetResultDataRequest({
+ "yq.queries.getData@as",
+ "yq.resources.viewPublic@as",
+ "yq.resources.viewPrivate@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvGetResultDataRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendListJobs)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendListJobsRequest({
+ "yq.jobs.get@as",
+ "yq.resources.viewPublic@as",
+ "yq.resources.viewPrivate@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvListJobsRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Request.query_id(), "my_query_id");
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendDescribeJob)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDescribeJobRequest({
+ "yq.jobs.get@as",
+ "yq.resources.viewPublic@as",
+ "yq.resources.viewPrivate@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDescribeJobRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendCreateConnection)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendCreateConnectionRequest({
+ "yq.connections.create@as",
+ "yq.resources.managePublic@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvCreateConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendCreateConnectionWithServiceAccount)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendCreateConnectionRequest({
+ "yq.connections.create@as",
+ "iam.serviceAccounts.use@as",
+ "yq.resources.managePublic@as"
+ }, "my_sa_id");
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvCreateConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendListConnections)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendListConnectionsRequest({
+ "yq.connections.get@as",
+ "yq.resources.viewPublic@as",
+ "yq.resources.viewPrivate@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvListConnectionsRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendDescribeConnection)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDescribeConnectionRequest({
+ "yq.connections.get@as",
+ "yq.resources.viewPublic@as",
+ "yq.resources.viewPrivate@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDescribeConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendModifyConnection)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendModifyConnectionRequest({
+ "yq.connections.update@as",
+ "yq.resources.managePublic@as",
+ "yq.resources.managePrivate@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvModifyConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendModifyConnectionWithServiceAccount)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendModifyConnectionRequest({
+ "yq.connections.update@as",
+ "iam.serviceAccounts.use@as",
+ "yq.resources.managePublic@as",
+ "yq.resources.managePrivate@as"
+ }, "my_sa_id");
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvModifyConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendDeleteConnection)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDeleteConnectionRequest({
+ "yq.connections.delete@as",
+ "yq.resources.managePublic@as",
+ "yq.resources.managePrivate@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDeleteConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendTestConnection)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendTestConnectionRequest({
+ "yq.connections.create@as",
+ "yq.resources.managePublic@as"
+ });
+
+ auto request = bootstrap.TestConnectionGrab->GetRequest();
+ auto event = request->Get<TEvTestConnection::TEvTestConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendTestConnectionWithServiceAccount)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendTestConnectionRequest({
+ "yq.connections.create@as",
+ "iam.serviceAccounts.use@as",
+ "yq.resources.managePublic@as"
+ }, "my_sa_id");
+
+ auto request = bootstrap.TestConnectionGrab->GetRequest();
+ auto event = request->Get<TEvTestConnection::TEvTestConnectionRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendCreateBinding)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendCreateBindingRequest({
+ "yq.bindings.create@as",
+ "yq.resources.managePublic@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvCreateBindingRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendListBindings)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendListBindingsRequest({
+ "yq.bindings.get@as",
+ "yq.resources.viewPublic@as",
+ "yq.resources.viewPrivate@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvListBindingsRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendDescribeBinding)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDescribeBindingRequest({
+ "yq.bindings.get@as",
+ "yq.resources.viewPublic@as",
+ "yq.resources.viewPrivate@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDescribeBindingRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendModifyBinding)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendModifyBindingRequest({
+ "yq.bindings.update@as",
+ "yq.resources.managePublic@as",
+ "yq.resources.managePrivate@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvModifyBindingRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+
+ Y_UNIT_TEST(ShouldSendDeleteBinding)
+ {
+ NConfig::TControlPlaneProxyConfig config;
+ config.SetEnablePermissions(true);
+ TTestBootstrap bootstrap(config);
+ bootstrap.SendDeleteBindingRequest({
+ "yq.bindings.delete@as",
+ "yq.resources.managePublic@as",
+ "yq.resources.managePrivate@as"
+ });
+ auto request = bootstrap.MetaStorageGrab->GetRequest();
+ auto event = request->Get<TEvControlPlaneStorage::TEvDeleteBindingRequest>();
+ auto permissions = event->Permissions;
+ UNIT_ASSERT_VALUES_EQUAL(event->Scope, "yandexcloud://my_folder");
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PUBLIC));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::VIEW_AST));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PUBLIC));
+ UNIT_ASSERT(permissions.Check(TPermissions::MANAGE_PRIVATE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::CONNECTIONS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::BINDINGS_USE));
+ UNIT_ASSERT(!permissions.Check(TPermissions::QUERY_INVOKE));
+ }
+};
+
+} // namespace NYq
diff --git a/ydb/core/yq/libs/control_plane_proxy/ut/ya.make b/ydb/core/yq/libs/control_plane_proxy/ut/ya.make
index 1550392ebc..474bff7a49 100644
--- a/ydb/core/yq/libs/control_plane_proxy/ut/ya.make
+++ b/ydb/core/yq/libs/control_plane_proxy/ut/ya.make
@@ -1,22 +1,22 @@
UNITTEST_FOR(ydb/core/yq/libs/control_plane_proxy)
-
+
OWNER(g:yq)
-
-PEERDIR(
+
+PEERDIR(
library/cpp/testing/unittest
ydb/core/base
ydb/core/testlib
ydb/core/yq/libs/actors/logging
ydb/core/yq/libs/control_plane_storage
- ydb/core/yq/libs/test_connection
+ ydb/core/yq/libs/test_connection
ydb/library/folder_service
ydb/library/folder_service/mock
-)
-
-YQL_LAST_ABI_VERSION()
-
-SRCS(
- control_plane_proxy_ut.cpp
-)
-
-END()
+)
+
+YQL_LAST_ABI_VERSION()
+
+SRCS(
+ control_plane_proxy_ut.cpp
+)
+
+END()
diff --git a/ydb/core/yq/libs/control_plane_proxy/utils.h b/ydb/core/yq/libs/control_plane_proxy/utils.h
index 96e901b5f8..df0961cff5 100644
--- a/ydb/core/yq/libs/control_plane_proxy/utils.h
+++ b/ydb/core/yq/libs/control_plane_proxy/utils.h
@@ -1,48 +1,48 @@
-#pragma once
-
+#pragma once
+
#include <ydb/public/api/protos/yq.pb.h>
-
-namespace NYq {
-
-inline TString GetServiceAccountId(const YandexQuery::IamAuth& auth) {
- return auth.has_service_account()
- ? auth.service_account().id()
- : TString{};
-}
-
-template<typename T>
-TString ExtractServiceAccountIdImpl(const T& setting) {
- switch (setting.connection_case()) {
- case YandexQuery::ConnectionSetting::kYdbDatabase: {
- return GetServiceAccountId(setting.ydb_database().auth());
- }
- case YandexQuery::ConnectionSetting::kDataStreams: {
- return GetServiceAccountId(setting.data_streams().auth());
- }
- case YandexQuery::ConnectionSetting::kObjectStorage: {
- return GetServiceAccountId(setting.object_storage().auth());
- }
- case YandexQuery::ConnectionSetting::kMonitoring: {
- return GetServiceAccountId(setting.monitoring().auth());
- }
- case YandexQuery::ConnectionSetting::kClickhouseCluster: {
- return GetServiceAccountId(setting.clickhouse_cluster().auth());
- }
- // Do not replace with default. Adding a new connection should cause a compilation error
- case YandexQuery::ConnectionSetting::CONNECTION_NOT_SET:
- break;
- }
- return {};
-}
-
-inline TString ExtractServiceAccountId(const YandexQuery::TestConnectionRequest& c) {
- return ExtractServiceAccountIdImpl(c.setting());
-}
-
+
+namespace NYq {
+
+inline TString GetServiceAccountId(const YandexQuery::IamAuth& auth) {
+ return auth.has_service_account()
+ ? auth.service_account().id()
+ : TString{};
+}
+
+template<typename T>
+TString ExtractServiceAccountIdImpl(const T& setting) {
+ switch (setting.connection_case()) {
+ case YandexQuery::ConnectionSetting::kYdbDatabase: {
+ return GetServiceAccountId(setting.ydb_database().auth());
+ }
+ case YandexQuery::ConnectionSetting::kDataStreams: {
+ return GetServiceAccountId(setting.data_streams().auth());
+ }
+ case YandexQuery::ConnectionSetting::kObjectStorage: {
+ return GetServiceAccountId(setting.object_storage().auth());
+ }
+ case YandexQuery::ConnectionSetting::kMonitoring: {
+ return GetServiceAccountId(setting.monitoring().auth());
+ }
+ case YandexQuery::ConnectionSetting::kClickhouseCluster: {
+ return GetServiceAccountId(setting.clickhouse_cluster().auth());
+ }
+ // Do not replace with default. Adding a new connection should cause a compilation error
+ case YandexQuery::ConnectionSetting::CONNECTION_NOT_SET:
+ break;
+ }
+ return {};
+}
+
+inline TString ExtractServiceAccountId(const YandexQuery::TestConnectionRequest& c) {
+ return ExtractServiceAccountIdImpl(c.setting());
+}
+
inline TString ExtractServiceAccountId(const YandexQuery::CreateConnectionRequest& c) {
- return ExtractServiceAccountIdImpl(c.content().setting());
-}
-
+ return ExtractServiceAccountIdImpl(c.content().setting());
+}
+
inline TString ExtractServiceAccountId(const YandexQuery::ModifyConnectionRequest& c) {
return ExtractServiceAccountIdImpl(c.content().setting());
}
@@ -52,4 +52,4 @@ TString ExtractServiceAccountId(const T&) {
return {};
}
-} // namespace NYq
+} // namespace NYq
diff --git a/ydb/core/yq/libs/control_plane_proxy/ya.make b/ydb/core/yq/libs/control_plane_proxy/ya.make
index 785bc92f28..0e462250d5 100644
--- a/ydb/core/yq/libs/control_plane_proxy/ya.make
+++ b/ydb/core/yq/libs/control_plane_proxy/ya.make
@@ -1,14 +1,14 @@
OWNER(g:yq)
-
-LIBRARY()
-
-SRCS(
- control_plane_proxy.cpp
- probes.cpp
-)
-
-PEERDIR(
- library/cpp/actors/core
+
+LIBRARY()
+
+SRCS(
+ control_plane_proxy.cpp
+ probes.cpp
+)
+
+PEERDIR(
+ library/cpp/actors/core
ydb/core/base
ydb/core/mon
ydb/core/yq/libs/actors/logging
@@ -17,16 +17,16 @@ PEERDIR(
ydb/core/yq/libs/control_plane_storage
ydb/library/folder_service
ydb/library/security
-)
-
-YQL_LAST_ABI_VERSION()
-
-END()
-
-RECURSE(
- events
-)
-
+)
+
+YQL_LAST_ABI_VERSION()
+
+END()
+
+RECURSE(
+ events
+)
+
RECURSE_FOR_TESTS(
ut
)
diff --git a/ydb/core/yq/libs/control_plane_storage/control_plane_storage.h b/ydb/core/yq/libs/control_plane_storage/control_plane_storage.h
index 5180aedeea..43fecf247b 100644
--- a/ydb/core/yq/libs/control_plane_storage/control_plane_storage.h
+++ b/ydb/core/yq/libs/control_plane_storage/control_plane_storage.h
@@ -1,48 +1,48 @@
-#pragma once
-
-#include <library/cpp/actors/core/actor.h>
-#include <library/cpp/monlib/dynamic_counters/counters.h>
-
+#pragma once
+
+#include <library/cpp/actors/core/actor.h>
+#include <library/cpp/monlib/dynamic_counters/counters.h>
+
#include <ydb/core/yq/libs/config/protos/common.pb.h>
#include <ydb/core/yq/libs/config/protos/control_plane_storage.pb.h>
#include <ydb/core/yq/libs/shared_resources/shared_resources.h>
#include <ydb/core/yq/libs/actors/logging/log.h>
-
-#define CPS_LOG_D(s) \
- LOG_YQ_CONTROL_PLANE_STORAGE_DEBUG(s)
-#define CPS_LOG_I(s) \
- LOG_YQ_CONTROL_PLANE_STORAGE_INFO(s)
-#define CPS_LOG_W(s) \
- LOG_YQ_CONTROL_PLANE_STORAGE_WARN(s)
-#define CPS_LOG_E(s) \
- LOG_YQ_CONTROL_PLANE_STORAGE_ERROR(s)
-#define CPS_LOG_T(s) \
- LOG_YQ_CONTROL_PLANE_STORAGE_TRACE(s)
-
-
-#define CPS_LOG_AS_D(a, s) \
- LOG_YQ_CONTROL_PLANE_STORAGE_AS_DEBUG(a, s)
-#define CPS_LOG_AS_I(a, s) \
- LOG_YQ_CONTROL_PLANE_STORAGE_AS_INFO(a, s)
-#define CPS_LOG_AS_W(a, s) \
- LOG_YQ_CONTROL_PLANE_STORAGE_AS_WARN(a, s)
-#define CPS_LOG_AS_E(a, s) \
- LOG_YQ_CONTROL_PLANE_STORAGE_AS_ERROR(a, s)
-#define CPS_LOG_AS_T(a, s) \
- LOG_YQ_CONTROL_PLANE_STORAGE_AS_TRACE(a, s)
-
-
-namespace NYq {
-
-NActors::TActorId ControlPlaneStorageServiceActorId(ui32 nodeId = 0);
-
-NActors::IActor* CreateInMemoryControlPlaneStorageServiceActor(const NConfig::TControlPlaneStorageConfig& config);
-
+
+#define CPS_LOG_D(s) \
+ LOG_YQ_CONTROL_PLANE_STORAGE_DEBUG(s)
+#define CPS_LOG_I(s) \
+ LOG_YQ_CONTROL_PLANE_STORAGE_INFO(s)
+#define CPS_LOG_W(s) \
+ LOG_YQ_CONTROL_PLANE_STORAGE_WARN(s)
+#define CPS_LOG_E(s) \
+ LOG_YQ_CONTROL_PLANE_STORAGE_ERROR(s)
+#define CPS_LOG_T(s) \
+ LOG_YQ_CONTROL_PLANE_STORAGE_TRACE(s)
+
+
+#define CPS_LOG_AS_D(a, s) \
+ LOG_YQ_CONTROL_PLANE_STORAGE_AS_DEBUG(a, s)
+#define CPS_LOG_AS_I(a, s) \
+ LOG_YQ_CONTROL_PLANE_STORAGE_AS_INFO(a, s)
+#define CPS_LOG_AS_W(a, s) \
+ LOG_YQ_CONTROL_PLANE_STORAGE_AS_WARN(a, s)
+#define CPS_LOG_AS_E(a, s) \
+ LOG_YQ_CONTROL_PLANE_STORAGE_AS_ERROR(a, s)
+#define CPS_LOG_AS_T(a, s) \
+ LOG_YQ_CONTROL_PLANE_STORAGE_AS_TRACE(a, s)
+
+
+namespace NYq {
+
+NActors::TActorId ControlPlaneStorageServiceActorId(ui32 nodeId = 0);
+
+NActors::IActor* CreateInMemoryControlPlaneStorageServiceActor(const NConfig::TControlPlaneStorageConfig& config);
+
NActors::IActor* CreateYdbControlPlaneStorageServiceActor(
- const NConfig::TControlPlaneStorageConfig& config,
- const NConfig::TCommonConfig& common,
+ const NConfig::TControlPlaneStorageConfig& config,
+ const NConfig::TCommonConfig& common,
const NMonitoring::TDynamicCounterPtr& counters,
const NYq::TYqSharedResources::TPtr& yqSharedResources,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory);
-
-} // namespace NYq
+
+} // namespace NYq
diff --git a/ydb/core/yq/libs/control_plane_storage/events/events.cpp b/ydb/core/yq/libs/control_plane_storage/events/events.cpp
index 6c3d2603e7..a4930159cf 100644
--- a/ydb/core/yq/libs/control_plane_storage/events/events.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/events/events.cpp
@@ -1 +1 @@
-#include "events.h"
+#include "events.h"
diff --git a/ydb/core/yq/libs/control_plane_storage/events/events.h b/ydb/core/yq/libs/control_plane_storage/events/events.h
index 8c98e790d7..4dabc3544d 100644
--- a/ydb/core/yq/libs/control_plane_storage/events/events.h
+++ b/ydb/core/yq/libs/control_plane_storage/events/events.h
@@ -1,272 +1,272 @@
-#pragma once
-
+#pragma once
+
#include <util/datetime/base.h>
-#include <util/generic/map.h>
-#include <util/generic/maybe.h>
-
-#include <library/cpp/actors/core/event_pb.h>
-#include <library/cpp/actors/core/events.h>
-#include <library/cpp/actors/interconnect/events_local.h>
-
+#include <util/generic/map.h>
+#include <util/generic/maybe.h>
+
+#include <library/cpp/actors/core/event_pb.h>
+#include <library/cpp/actors/core/events.h>
+#include <library/cpp/actors/interconnect/events_local.h>
+
#include <ydb/public/api/protos/draft/yq_private.pb.h>
#include <ydb/public/api/protos/yq.pb.h>
#include <ydb/public/sdk/cpp/client/ydb_params/params.h>
-
+
#include <ydb/library/yql/public/issue/yql_issue.h>
-
+
#include <ydb/core/yq/libs/control_plane_storage/proto/yq_internal.pb.h>
#include <ydb/core/yq/libs/events/event_subspace.h>
-
-namespace NYq {
-
-template<typename T>
-struct TAuditDetails {
- TMaybe<T> Before;
- TMaybe<T> After;
- bool IdempotencyResult = false;
- TString CloudId;
-};
-
+
+namespace NYq {
+
+template<typename T>
+struct TAuditDetails {
+ TMaybe<T> Before;
+ TMaybe<T> After;
+ bool IdempotencyResult = false;
+ TString CloudId;
+};
+
struct TNodeInfo {
ui32 NodeId;
TString InstanceId;
TString HostName;
};
-struct TDebugItem {
- TString Query;
- NYdb::TParams Params;
- TString Plan;
- TString Ast;
- TString Error;
-
- TString ToString() const {
- TString result;
- result += "Query: " + Query + "\n";
- result += "Plan: " + Plan + "\n";
- result += "Ast: " + Ast + "\n";
- for (const auto& param: Params.GetValues()) {
- result += "Params: " + param.first + ", " + param.second.GetType().ToString() + "\n";
- }
- result += "Error: " + Error + "\n";
- return result;
- }
-};
-
-using TDebugInfo = TVector<TDebugItem>;
-using TDebugInfoPtr = std::shared_ptr<TDebugInfo>;
-
-struct TPermissions {
- enum TPermission {
- VIEW_PUBLIC = 0x1,
- VIEW_PRIVATE = 0x2,
- VIEW_AST = 0x4,
- MANAGE_PUBLIC = 0x8,
- MANAGE_PRIVATE = 0x10,
- CONNECTIONS_USE = 0x40,
- BINDINGS_USE = 0x80,
- QUERY_INVOKE = 0x100
- };
-
-private:
- uint32_t Permissions = 0;
-
-public:
- TPermissions()
- {}
-
- explicit TPermissions(uint32_t permissions)
- : Permissions(permissions)
- {}
-
- void Set(TPermission permission) {
- Permissions |= permission;
- }
-
- bool Check(TPermission permission) const {
- return Permissions & permission;
- }
-
- void SetAll() {
- Permissions = 0xFFFFFFFF;
- }
-};
-
-struct TEvControlPlaneStorage {
- // Event ids.
- enum EEv : ui32 {
+struct TDebugItem {
+ TString Query;
+ NYdb::TParams Params;
+ TString Plan;
+ TString Ast;
+ TString Error;
+
+ TString ToString() const {
+ TString result;
+ result += "Query: " + Query + "\n";
+ result += "Plan: " + Plan + "\n";
+ result += "Ast: " + Ast + "\n";
+ for (const auto& param: Params.GetValues()) {
+ result += "Params: " + param.first + ", " + param.second.GetType().ToString() + "\n";
+ }
+ result += "Error: " + Error + "\n";
+ return result;
+ }
+};
+
+using TDebugInfo = TVector<TDebugItem>;
+using TDebugInfoPtr = std::shared_ptr<TDebugInfo>;
+
+struct TPermissions {
+ enum TPermission {
+ VIEW_PUBLIC = 0x1,
+ VIEW_PRIVATE = 0x2,
+ VIEW_AST = 0x4,
+ MANAGE_PUBLIC = 0x8,
+ MANAGE_PRIVATE = 0x10,
+ CONNECTIONS_USE = 0x40,
+ BINDINGS_USE = 0x80,
+ QUERY_INVOKE = 0x100
+ };
+
+private:
+ uint32_t Permissions = 0;
+
+public:
+ TPermissions()
+ {}
+
+ explicit TPermissions(uint32_t permissions)
+ : Permissions(permissions)
+ {}
+
+ void Set(TPermission permission) {
+ Permissions |= permission;
+ }
+
+ bool Check(TPermission permission) const {
+ return Permissions & permission;
+ }
+
+ void SetAll() {
+ Permissions = 0xFFFFFFFF;
+ }
+};
+
+struct TEvControlPlaneStorage {
+ // Event ids.
+ enum EEv : ui32 {
EvCreateQueryRequest = YqEventSubspaceBegin(NYq::TYqEventSubspace::ControlPlaneStorage),
- EvCreateQueryResponse,
- EvListQueriesRequest,
- EvListQueriesResponse,
- EvDescribeQueryRequest,
- EvDescribeQueryResponse,
+ EvCreateQueryResponse,
+ EvListQueriesRequest,
+ EvListQueriesResponse,
+ EvDescribeQueryRequest,
+ EvDescribeQueryResponse,
EvGetQueryStatusRequest,
EvGetQueryStatusResponse,
- EvModifyQueryRequest,
- EvModifyQueryResponse,
- EvDeleteQueryRequest,
- EvDeleteQueryResponse,
- EvControlQueryRequest,
+ EvModifyQueryRequest,
+ EvModifyQueryResponse,
+ EvDeleteQueryRequest,
+ EvDeleteQueryResponse,
+ EvControlQueryRequest,
EvControlQueryResponse,
- EvGetResultDataRequest,
- EvGetResultDataResponse,
- EvListJobsRequest,
- EvListJobsResponse,
+ EvGetResultDataRequest,
+ EvGetResultDataResponse,
+ EvListJobsRequest,
+ EvListJobsResponse,
EvDescribeJobRequest,
EvDescribeJobResponse,
- EvCreateConnectionRequest,
- EvCreateConnectionResponse,
- EvListConnectionsRequest,
- EvListConnectionsResponse,
- EvDescribeConnectionRequest,
- EvDescribeConnectionResponse,
- EvModifyConnectionRequest,
- EvModifyConnectionResponse,
- EvDeleteConnectionRequest,
- EvDeleteConnectionResponse,
- EvCreateBindingRequest,
- EvCreateBindingResponse,
- EvListBindingsRequest,
- EvListBindingsResponse,
- EvDescribeBindingRequest,
- EvDescribeBindingResponse,
- EvModifyBindingRequest,
- EvModifyBindingResponse,
- EvDeleteBindingRequest,
- EvDeleteBindingResponse,
- EvWriteResultDataRequest,
- EvWriteResultDataResponse,
- EvGetTaskRequest,
- EvGetTaskResponse,
- EvPingTaskRequest,
- EvPingTaskResponse,
+ EvCreateConnectionRequest,
+ EvCreateConnectionResponse,
+ EvListConnectionsRequest,
+ EvListConnectionsResponse,
+ EvDescribeConnectionRequest,
+ EvDescribeConnectionResponse,
+ EvModifyConnectionRequest,
+ EvModifyConnectionResponse,
+ EvDeleteConnectionRequest,
+ EvDeleteConnectionResponse,
+ EvCreateBindingRequest,
+ EvCreateBindingResponse,
+ EvListBindingsRequest,
+ EvListBindingsResponse,
+ EvDescribeBindingRequest,
+ EvDescribeBindingResponse,
+ EvModifyBindingRequest,
+ EvModifyBindingResponse,
+ EvDeleteBindingRequest,
+ EvDeleteBindingResponse,
+ EvWriteResultDataRequest,
+ EvWriteResultDataResponse,
+ EvGetTaskRequest,
+ EvGetTaskResponse,
+ EvPingTaskRequest,
+ EvPingTaskResponse,
EvNodesHealthCheckRequest,
EvNodesHealthCheckResponse,
EvGetHealthNodesRequest,
EvGetHealthNodesResponse,
- EvEnd,
- };
-
+ EvEnd,
+ };
+
static_assert(EvEnd <= YqEventSubspaceEnd(NYq::TYqEventSubspace::ControlPlaneStorage), "All events must be in their subspace");
-
- struct TEvCreateQueryRequest : NActors::TEventLocal<TEvCreateQueryRequest, EvCreateQueryRequest> {
- explicit TEvCreateQueryRequest(const TString& scope,
- const YandexQuery::CreateQueryRequest& request,
- const TString& user,
- const TString& token,
- const TString& cloudId,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , CloudId(cloudId)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::CreateQueryRequest Request;
- TString User;
- TString Token;
- TString CloudId;
- TPermissions Permissions;
- };
-
- struct TEvCreateQueryResponse : NActors::TEventLocal<TEvCreateQueryResponse, EvCreateQueryResponse> {
- explicit TEvCreateQueryResponse(const YandexQuery::CreateQueryResult& result,
- const TAuditDetails<YandexQuery::Query>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvCreateQueryResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::CreateQueryResult Result;
- TAuditDetails<YandexQuery::Query> AuditDetails;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvListQueriesRequest : NActors::TEventLocal<TEvListQueriesRequest, EvListQueriesRequest> {
- explicit TEvListQueriesRequest(const TString& scope,
- const YandexQuery::ListQueriesRequest& request,
- const TString& user,
- const TString& token,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::ListQueriesRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvListQueriesResponse : NActors::TEventLocal<TEvListQueriesResponse, EvListQueriesResponse> {
- explicit TEvListQueriesResponse(const YandexQuery::ListQueriesResult& result)
- : Result(result)
- {
- }
-
- explicit TEvListQueriesResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ListQueriesResult Result;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvDescribeQueryRequest : NActors::TEventLocal<TEvDescribeQueryRequest, EvDescribeQueryRequest> {
- explicit TEvDescribeQueryRequest(const TString& scope,
- const YandexQuery::DescribeQueryRequest& request,
- const TString& user,
- const TString& token,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::DescribeQueryRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvDescribeQueryResponse : NActors::TEventLocal<TEvDescribeQueryResponse, EvDescribeQueryResponse> {
- explicit TEvDescribeQueryResponse(const YandexQuery::DescribeQueryResult& result)
- : Result(result)
- {
- }
-
- explicit TEvDescribeQueryResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::DescribeQueryResult Result;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
+
+ struct TEvCreateQueryRequest : NActors::TEventLocal<TEvCreateQueryRequest, EvCreateQueryRequest> {
+ explicit TEvCreateQueryRequest(const TString& scope,
+ const YandexQuery::CreateQueryRequest& request,
+ const TString& user,
+ const TString& token,
+ const TString& cloudId,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , CloudId(cloudId)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::CreateQueryRequest Request;
+ TString User;
+ TString Token;
+ TString CloudId;
+ TPermissions Permissions;
+ };
+
+ struct TEvCreateQueryResponse : NActors::TEventLocal<TEvCreateQueryResponse, EvCreateQueryResponse> {
+ explicit TEvCreateQueryResponse(const YandexQuery::CreateQueryResult& result,
+ const TAuditDetails<YandexQuery::Query>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvCreateQueryResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::CreateQueryResult Result;
+ TAuditDetails<YandexQuery::Query> AuditDetails;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvListQueriesRequest : NActors::TEventLocal<TEvListQueriesRequest, EvListQueriesRequest> {
+ explicit TEvListQueriesRequest(const TString& scope,
+ const YandexQuery::ListQueriesRequest& request,
+ const TString& user,
+ const TString& token,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::ListQueriesRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvListQueriesResponse : NActors::TEventLocal<TEvListQueriesResponse, EvListQueriesResponse> {
+ explicit TEvListQueriesResponse(const YandexQuery::ListQueriesResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvListQueriesResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ListQueriesResult Result;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvDescribeQueryRequest : NActors::TEventLocal<TEvDescribeQueryRequest, EvDescribeQueryRequest> {
+ explicit TEvDescribeQueryRequest(const TString& scope,
+ const YandexQuery::DescribeQueryRequest& request,
+ const TString& user,
+ const TString& token,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::DescribeQueryRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvDescribeQueryResponse : NActors::TEventLocal<TEvDescribeQueryResponse, EvDescribeQueryResponse> {
+ explicit TEvDescribeQueryResponse(const YandexQuery::DescribeQueryResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvDescribeQueryResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::DescribeQueryResult Result;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
struct TEvGetQueryStatusRequest : NActors::TEventLocal<TEvGetQueryStatusRequest, EvGetQueryStatusRequest> {
explicit TEvGetQueryStatusRequest(const TString& scope,
const YandexQuery::GetQueryStatusRequest& request,
@@ -304,211 +304,211 @@ struct TEvControlPlaneStorage {
TDebugInfoPtr DebugInfo;
};
- struct TEvModifyQueryRequest : NActors::TEventLocal<TEvModifyQueryRequest, EvModifyQueryRequest> {
- explicit TEvModifyQueryRequest(const TString& scope,
- const YandexQuery::ModifyQueryRequest& request,
- const TString& user,
- const TString& token,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::ModifyQueryRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvModifyQueryResponse : NActors::TEventLocal<TEvModifyQueryResponse, EvModifyQueryResponse> {
- explicit TEvModifyQueryResponse(const YandexQuery::ModifyQueryResult& result,
- const TAuditDetails<YandexQuery::Query>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvModifyQueryResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ModifyQueryResult Result;
- TAuditDetails<YandexQuery::Query> AuditDetails;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvDeleteQueryRequest : NActors::TEventLocal<TEvDeleteQueryRequest, EvDeleteQueryRequest> {
- explicit TEvDeleteQueryRequest(const TString& scope,
- const YandexQuery::DeleteQueryRequest& request,
- const TString& user,
- const TString& token,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::DeleteQueryRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvDeleteQueryResponse : NActors::TEventLocal<TEvDeleteQueryResponse, EvDeleteQueryResponse> {
- explicit TEvDeleteQueryResponse(const YandexQuery::DeleteQueryResult& result,
- const TAuditDetails<YandexQuery::Query>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvDeleteQueryResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::DeleteQueryResult Result;
- TAuditDetails<YandexQuery::Query> AuditDetails;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvControlQueryRequest : NActors::TEventLocal<TEvControlQueryRequest, EvControlQueryRequest> {
- explicit TEvControlQueryRequest(const TString& scope,
- const YandexQuery::ControlQueryRequest& request,
- const TString& user,
- const TString& token,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::ControlQueryRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvControlQueryResponse : NActors::TEventLocal<TEvControlQueryResponse, EvControlQueryResponse> {
- explicit TEvControlQueryResponse(const YandexQuery::ControlQueryResult& result,
- const TAuditDetails<YandexQuery::Query>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvControlQueryResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ControlQueryResult Result;
- TAuditDetails<YandexQuery::Query> AuditDetails;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvGetResultDataRequest : NActors::TEventLocal<TEvGetResultDataRequest, EvGetResultDataRequest> {
- explicit TEvGetResultDataRequest(const TString& scope,
- const YandexQuery::GetResultDataRequest& request,
- const TString& user,
- const TString& token,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::GetResultDataRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvGetResultDataResponse : NActors::TEventLocal<TEvGetResultDataResponse, EvGetResultDataResponse> {
- explicit TEvGetResultDataResponse(const YandexQuery::GetResultDataResult& result)
- : Result(result)
- {
- }
-
- explicit TEvGetResultDataResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::GetResultDataResult Result;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvListJobsRequest : NActors::TEventLocal<TEvListJobsRequest, EvListJobsRequest> {
- explicit TEvListJobsRequest(const TString& scope,
- const YandexQuery::ListJobsRequest& request,
- const TString& user,
- const TString& token,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::ListJobsRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvListJobsResponse : NActors::TEventLocal<TEvListJobsResponse, EvListJobsResponse> {
- explicit TEvListJobsResponse(const YandexQuery::ListJobsResult& result)
- : Result(result)
- {
- }
-
- explicit TEvListJobsResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ListJobsResult Result;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
+ struct TEvModifyQueryRequest : NActors::TEventLocal<TEvModifyQueryRequest, EvModifyQueryRequest> {
+ explicit TEvModifyQueryRequest(const TString& scope,
+ const YandexQuery::ModifyQueryRequest& request,
+ const TString& user,
+ const TString& token,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::ModifyQueryRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvModifyQueryResponse : NActors::TEventLocal<TEvModifyQueryResponse, EvModifyQueryResponse> {
+ explicit TEvModifyQueryResponse(const YandexQuery::ModifyQueryResult& result,
+ const TAuditDetails<YandexQuery::Query>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvModifyQueryResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ModifyQueryResult Result;
+ TAuditDetails<YandexQuery::Query> AuditDetails;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvDeleteQueryRequest : NActors::TEventLocal<TEvDeleteQueryRequest, EvDeleteQueryRequest> {
+ explicit TEvDeleteQueryRequest(const TString& scope,
+ const YandexQuery::DeleteQueryRequest& request,
+ const TString& user,
+ const TString& token,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::DeleteQueryRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvDeleteQueryResponse : NActors::TEventLocal<TEvDeleteQueryResponse, EvDeleteQueryResponse> {
+ explicit TEvDeleteQueryResponse(const YandexQuery::DeleteQueryResult& result,
+ const TAuditDetails<YandexQuery::Query>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvDeleteQueryResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::DeleteQueryResult Result;
+ TAuditDetails<YandexQuery::Query> AuditDetails;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvControlQueryRequest : NActors::TEventLocal<TEvControlQueryRequest, EvControlQueryRequest> {
+ explicit TEvControlQueryRequest(const TString& scope,
+ const YandexQuery::ControlQueryRequest& request,
+ const TString& user,
+ const TString& token,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::ControlQueryRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvControlQueryResponse : NActors::TEventLocal<TEvControlQueryResponse, EvControlQueryResponse> {
+ explicit TEvControlQueryResponse(const YandexQuery::ControlQueryResult& result,
+ const TAuditDetails<YandexQuery::Query>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvControlQueryResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ControlQueryResult Result;
+ TAuditDetails<YandexQuery::Query> AuditDetails;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvGetResultDataRequest : NActors::TEventLocal<TEvGetResultDataRequest, EvGetResultDataRequest> {
+ explicit TEvGetResultDataRequest(const TString& scope,
+ const YandexQuery::GetResultDataRequest& request,
+ const TString& user,
+ const TString& token,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::GetResultDataRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvGetResultDataResponse : NActors::TEventLocal<TEvGetResultDataResponse, EvGetResultDataResponse> {
+ explicit TEvGetResultDataResponse(const YandexQuery::GetResultDataResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvGetResultDataResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::GetResultDataResult Result;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvListJobsRequest : NActors::TEventLocal<TEvListJobsRequest, EvListJobsRequest> {
+ explicit TEvListJobsRequest(const TString& scope,
+ const YandexQuery::ListJobsRequest& request,
+ const TString& user,
+ const TString& token,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::ListJobsRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvListJobsResponse : NActors::TEventLocal<TEvListJobsResponse, EvListJobsResponse> {
+ explicit TEvListJobsResponse(const YandexQuery::ListJobsResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvListJobsResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ListJobsResult Result;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
struct TEvDescribeJobRequest : NActors::TEventLocal<TEvDescribeJobRequest, EvDescribeJobRequest> {
explicit TEvDescribeJobRequest(const TString& scope,
const YandexQuery::DescribeJobRequest& request,
const TString& user,
- const TString& token,
- TPermissions permissions)
+ const TString& token,
+ TPermissions permissions)
: Scope(scope)
, Request(request)
, User(user)
, Token(token)
- , Permissions(permissions)
+ , Permissions(permissions)
{
}
@@ -516,7 +516,7 @@ struct TEvControlPlaneStorage {
YandexQuery::DescribeJobRequest Request;
TString User;
TString Token;
- TPermissions Permissions;
+ TPermissions Permissions;
};
struct TEvDescribeJobResponse : NActors::TEventLocal<TEvDescribeJobResponse, EvDescribeJobResponse> {
@@ -532,431 +532,431 @@ struct TEvControlPlaneStorage {
YandexQuery::DescribeJobResult Result;
NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvCreateConnectionRequest : NActors::TEventLocal<TEvCreateConnectionRequest, EvCreateConnectionRequest> {
- explicit TEvCreateConnectionRequest(const TString& scope,
- const YandexQuery::CreateConnectionRequest& request,
- const TString& user,
- const TString& token,
- const TString& cloudId,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , CloudId(cloudId)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::CreateConnectionRequest Request;
- TString User;
- TString Token;
- TString CloudId;
- TPermissions Permissions;
- };
-
- struct TEvCreateConnectionResponse : NActors::TEventLocal<TEvCreateConnectionResponse, EvCreateConnectionResponse> {
- explicit TEvCreateConnectionResponse(const YandexQuery::CreateConnectionResult& result,
- const TAuditDetails<YandexQuery::Connection>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvCreateConnectionResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::CreateConnectionResult Result;
- TAuditDetails<YandexQuery::Connection> AuditDetails;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
+ TDebugInfoPtr DebugInfo;
};
- struct TEvListConnectionsRequest : NActors::TEventLocal<TEvListConnectionsRequest, EvListConnectionsRequest> {
- explicit TEvListConnectionsRequest(const TString& scope,
- const YandexQuery::ListConnectionsRequest& request,
- const TString& user,
- const TString& token,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::ListConnectionsRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvListConnectionsResponse : NActors::TEventLocal<TEvListConnectionsResponse, EvListConnectionsResponse> {
- explicit TEvListConnectionsResponse(const YandexQuery::ListConnectionsResult& result)
- : Result(result)
- {
- }
-
- explicit TEvListConnectionsResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ListConnectionsResult Result;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvDescribeConnectionRequest : NActors::TEventLocal<TEvDescribeConnectionRequest, EvDescribeConnectionRequest> {
- explicit TEvDescribeConnectionRequest(const TString& scope,
- const YandexQuery::DescribeConnectionRequest& request,
- const TString& user,
- const TString& token,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::DescribeConnectionRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvDescribeConnectionResponse : NActors::TEventLocal<TEvDescribeConnectionResponse, EvDescribeConnectionResponse> {
- explicit TEvDescribeConnectionResponse(const YandexQuery::DescribeConnectionResult& result)
- : Result(result)
- {
- }
-
- explicit TEvDescribeConnectionResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::DescribeConnectionResult Result;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvModifyConnectionRequest : NActors::TEventLocal<TEvModifyConnectionRequest, EvModifyConnectionRequest> {
- explicit TEvModifyConnectionRequest(const TString& scope,
- const YandexQuery::ModifyConnectionRequest& request,
- const TString& user,
- const TString& token,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::ModifyConnectionRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvModifyConnectionResponse : NActors::TEventLocal<TEvModifyConnectionResponse, EvModifyConnectionResponse> {
- explicit TEvModifyConnectionResponse(const YandexQuery::ModifyConnectionResult& result,
- const TAuditDetails<YandexQuery::Connection>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvModifyConnectionResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ModifyConnectionResult Result;
- TAuditDetails<YandexQuery::Connection> AuditDetails;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvDeleteConnectionRequest : NActors::TEventLocal<TEvDeleteConnectionRequest, EvDeleteConnectionRequest> {
- explicit TEvDeleteConnectionRequest(const TString& scope,
- const YandexQuery::DeleteConnectionRequest& request,
- const TString& user,
- const TString& token,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::DeleteConnectionRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvDeleteConnectionResponse : NActors::TEventLocal<TEvDeleteConnectionResponse, EvDeleteConnectionResponse> {
- explicit TEvDeleteConnectionResponse(const YandexQuery::DeleteConnectionResult& result,
- const TAuditDetails<YandexQuery::Connection>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvDeleteConnectionResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::DeleteConnectionResult Result;
- TAuditDetails<YandexQuery::Connection> AuditDetails;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvCreateBindingRequest : NActors::TEventLocal<TEvCreateBindingRequest, EvCreateBindingRequest> {
- explicit TEvCreateBindingRequest(const TString& scope,
- const YandexQuery::CreateBindingRequest& request,
- const TString& user,
- const TString& token,
- const TString& cloudId,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , CloudId(cloudId)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::CreateBindingRequest Request;
- TString User;
- TString Token;
- TString CloudId;
- TPermissions Permissions;
- };
-
- struct TEvCreateBindingResponse : NActors::TEventLocal<TEvCreateBindingResponse, EvCreateBindingResponse> {
- explicit TEvCreateBindingResponse(const YandexQuery::CreateBindingResult& result,
- const TAuditDetails<YandexQuery::Binding>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvCreateBindingResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::CreateBindingResult Result;
- TAuditDetails<YandexQuery::Binding> AuditDetails;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvListBindingsRequest : NActors::TEventLocal<TEvListBindingsRequest, EvListBindingsRequest> {
- explicit TEvListBindingsRequest(const TString& scope,
- const YandexQuery::ListBindingsRequest& request,
- const TString& user,
- const TString& token,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::ListBindingsRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvListBindingsResponse : NActors::TEventLocal<TEvListBindingsResponse, EvListBindingsResponse> {
- explicit TEvListBindingsResponse(const YandexQuery::ListBindingsResult& result)
- : Result(result)
- {
- }
-
- explicit TEvListBindingsResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ListBindingsResult Result;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvDescribeBindingRequest : NActors::TEventLocal<TEvDescribeBindingRequest, EvDescribeBindingRequest> {
- explicit TEvDescribeBindingRequest(const TString& scope,
- const YandexQuery::DescribeBindingRequest& request,
- const TString& user,
- const TString& token,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::DescribeBindingRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvDescribeBindingResponse : NActors::TEventLocal<TEvDescribeBindingResponse, EvDescribeBindingResponse> {
- explicit TEvDescribeBindingResponse(const YandexQuery::DescribeBindingResult& result)
- : Result(result)
- {
- }
-
- explicit TEvDescribeBindingResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::DescribeBindingResult Result;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvModifyBindingRequest : NActors::TEventLocal<TEvModifyBindingRequest, EvModifyBindingRequest> {
- explicit TEvModifyBindingRequest(const TString& scope,
- const YandexQuery::ModifyBindingRequest& request,
- const TString& user,
- const TString& token,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::ModifyBindingRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvModifyBindingResponse : NActors::TEventLocal<TEvModifyBindingResponse, EvModifyBindingResponse> {
- explicit TEvModifyBindingResponse(const YandexQuery::ModifyBindingResult& result,
- const TAuditDetails<YandexQuery::Binding>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvModifyBindingResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::ModifyBindingResult Result;
- TAuditDetails<YandexQuery::Binding> AuditDetails;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvDeleteBindingRequest : NActors::TEventLocal<TEvDeleteBindingRequest, EvDeleteBindingRequest> {
- explicit TEvDeleteBindingRequest(const TString& scope,
- const YandexQuery::DeleteBindingRequest& request,
- const TString& user,
- const TString& token,
- TPermissions permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::DeleteBindingRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvDeleteBindingResponse : NActors::TEventLocal<TEvDeleteBindingResponse, EvDeleteBindingResponse> {
- explicit TEvDeleteBindingResponse(const YandexQuery::DeleteBindingResult& result,
- const TAuditDetails<YandexQuery::Binding>& auditDetails)
- : Result(result)
- , AuditDetails(auditDetails)
- {
- }
-
- explicit TEvDeleteBindingResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::DeleteBindingResult Result;
- TAuditDetails<YandexQuery::Binding> AuditDetails;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
-
- // internal messages
- struct TEvWriteResultDataRequest : NActors::TEventLocal<TEvWriteResultDataRequest, EvWriteResultDataRequest> {
+ struct TEvCreateConnectionRequest : NActors::TEventLocal<TEvCreateConnectionRequest, EvCreateConnectionRequest> {
+ explicit TEvCreateConnectionRequest(const TString& scope,
+ const YandexQuery::CreateConnectionRequest& request,
+ const TString& user,
+ const TString& token,
+ const TString& cloudId,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , CloudId(cloudId)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::CreateConnectionRequest Request;
+ TString User;
+ TString Token;
+ TString CloudId;
+ TPermissions Permissions;
+ };
+
+ struct TEvCreateConnectionResponse : NActors::TEventLocal<TEvCreateConnectionResponse, EvCreateConnectionResponse> {
+ explicit TEvCreateConnectionResponse(const YandexQuery::CreateConnectionResult& result,
+ const TAuditDetails<YandexQuery::Connection>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvCreateConnectionResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::CreateConnectionResult Result;
+ TAuditDetails<YandexQuery::Connection> AuditDetails;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvListConnectionsRequest : NActors::TEventLocal<TEvListConnectionsRequest, EvListConnectionsRequest> {
+ explicit TEvListConnectionsRequest(const TString& scope,
+ const YandexQuery::ListConnectionsRequest& request,
+ const TString& user,
+ const TString& token,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::ListConnectionsRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvListConnectionsResponse : NActors::TEventLocal<TEvListConnectionsResponse, EvListConnectionsResponse> {
+ explicit TEvListConnectionsResponse(const YandexQuery::ListConnectionsResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvListConnectionsResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ListConnectionsResult Result;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvDescribeConnectionRequest : NActors::TEventLocal<TEvDescribeConnectionRequest, EvDescribeConnectionRequest> {
+ explicit TEvDescribeConnectionRequest(const TString& scope,
+ const YandexQuery::DescribeConnectionRequest& request,
+ const TString& user,
+ const TString& token,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::DescribeConnectionRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvDescribeConnectionResponse : NActors::TEventLocal<TEvDescribeConnectionResponse, EvDescribeConnectionResponse> {
+ explicit TEvDescribeConnectionResponse(const YandexQuery::DescribeConnectionResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvDescribeConnectionResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::DescribeConnectionResult Result;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvModifyConnectionRequest : NActors::TEventLocal<TEvModifyConnectionRequest, EvModifyConnectionRequest> {
+ explicit TEvModifyConnectionRequest(const TString& scope,
+ const YandexQuery::ModifyConnectionRequest& request,
+ const TString& user,
+ const TString& token,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::ModifyConnectionRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvModifyConnectionResponse : NActors::TEventLocal<TEvModifyConnectionResponse, EvModifyConnectionResponse> {
+ explicit TEvModifyConnectionResponse(const YandexQuery::ModifyConnectionResult& result,
+ const TAuditDetails<YandexQuery::Connection>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvModifyConnectionResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ModifyConnectionResult Result;
+ TAuditDetails<YandexQuery::Connection> AuditDetails;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvDeleteConnectionRequest : NActors::TEventLocal<TEvDeleteConnectionRequest, EvDeleteConnectionRequest> {
+ explicit TEvDeleteConnectionRequest(const TString& scope,
+ const YandexQuery::DeleteConnectionRequest& request,
+ const TString& user,
+ const TString& token,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::DeleteConnectionRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvDeleteConnectionResponse : NActors::TEventLocal<TEvDeleteConnectionResponse, EvDeleteConnectionResponse> {
+ explicit TEvDeleteConnectionResponse(const YandexQuery::DeleteConnectionResult& result,
+ const TAuditDetails<YandexQuery::Connection>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvDeleteConnectionResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::DeleteConnectionResult Result;
+ TAuditDetails<YandexQuery::Connection> AuditDetails;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvCreateBindingRequest : NActors::TEventLocal<TEvCreateBindingRequest, EvCreateBindingRequest> {
+ explicit TEvCreateBindingRequest(const TString& scope,
+ const YandexQuery::CreateBindingRequest& request,
+ const TString& user,
+ const TString& token,
+ const TString& cloudId,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , CloudId(cloudId)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::CreateBindingRequest Request;
+ TString User;
+ TString Token;
+ TString CloudId;
+ TPermissions Permissions;
+ };
+
+ struct TEvCreateBindingResponse : NActors::TEventLocal<TEvCreateBindingResponse, EvCreateBindingResponse> {
+ explicit TEvCreateBindingResponse(const YandexQuery::CreateBindingResult& result,
+ const TAuditDetails<YandexQuery::Binding>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvCreateBindingResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::CreateBindingResult Result;
+ TAuditDetails<YandexQuery::Binding> AuditDetails;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvListBindingsRequest : NActors::TEventLocal<TEvListBindingsRequest, EvListBindingsRequest> {
+ explicit TEvListBindingsRequest(const TString& scope,
+ const YandexQuery::ListBindingsRequest& request,
+ const TString& user,
+ const TString& token,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::ListBindingsRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvListBindingsResponse : NActors::TEventLocal<TEvListBindingsResponse, EvListBindingsResponse> {
+ explicit TEvListBindingsResponse(const YandexQuery::ListBindingsResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvListBindingsResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ListBindingsResult Result;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvDescribeBindingRequest : NActors::TEventLocal<TEvDescribeBindingRequest, EvDescribeBindingRequest> {
+ explicit TEvDescribeBindingRequest(const TString& scope,
+ const YandexQuery::DescribeBindingRequest& request,
+ const TString& user,
+ const TString& token,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::DescribeBindingRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvDescribeBindingResponse : NActors::TEventLocal<TEvDescribeBindingResponse, EvDescribeBindingResponse> {
+ explicit TEvDescribeBindingResponse(const YandexQuery::DescribeBindingResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvDescribeBindingResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::DescribeBindingResult Result;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvModifyBindingRequest : NActors::TEventLocal<TEvModifyBindingRequest, EvModifyBindingRequest> {
+ explicit TEvModifyBindingRequest(const TString& scope,
+ const YandexQuery::ModifyBindingRequest& request,
+ const TString& user,
+ const TString& token,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::ModifyBindingRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvModifyBindingResponse : NActors::TEventLocal<TEvModifyBindingResponse, EvModifyBindingResponse> {
+ explicit TEvModifyBindingResponse(const YandexQuery::ModifyBindingResult& result,
+ const TAuditDetails<YandexQuery::Binding>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvModifyBindingResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::ModifyBindingResult Result;
+ TAuditDetails<YandexQuery::Binding> AuditDetails;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvDeleteBindingRequest : NActors::TEventLocal<TEvDeleteBindingRequest, EvDeleteBindingRequest> {
+ explicit TEvDeleteBindingRequest(const TString& scope,
+ const YandexQuery::DeleteBindingRequest& request,
+ const TString& user,
+ const TString& token,
+ TPermissions permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::DeleteBindingRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvDeleteBindingResponse : NActors::TEventLocal<TEvDeleteBindingResponse, EvDeleteBindingResponse> {
+ explicit TEvDeleteBindingResponse(const YandexQuery::DeleteBindingResult& result,
+ const TAuditDetails<YandexQuery::Binding>& auditDetails)
+ : Result(result)
+ , AuditDetails(auditDetails)
+ {
+ }
+
+ explicit TEvDeleteBindingResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::DeleteBindingResult Result;
+ TAuditDetails<YandexQuery::Binding> AuditDetails;
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
+
+ // internal messages
+ struct TEvWriteResultDataRequest : NActors::TEventLocal<TEvWriteResultDataRequest, EvWriteResultDataRequest> {
explicit TEvWriteResultDataRequest(const TString& resultId,
- const int32_t resultSetId,
- const int64_t startRowId,
- const TInstant& deadline,
- const Ydb::ResultSet& resultSet)
+ const int32_t resultSetId,
+ const int64_t startRowId,
+ const TInstant& deadline,
+ const Ydb::ResultSet& resultSet)
: ResultId(resultId)
- , ResultSetId(resultSetId)
- , StartRowId(startRowId)
- , Deadline(deadline)
- , ResultSet(resultSet)
- {
- }
-
+ , ResultSetId(resultSetId)
+ , StartRowId(startRowId)
+ , Deadline(deadline)
+ , ResultSet(resultSet)
+ {
+ }
+
TString ResultId;
- int32_t ResultSetId = 0;
- int64_t StartRowId = 0;
- TInstant Deadline;
- Ydb::ResultSet ResultSet;
- };
-
- struct TEvWriteResultDataResponse : NActors::TEventLocal<TEvWriteResultDataResponse, EvWriteResultDataResponse> {
- explicit TEvWriteResultDataResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
+ int32_t ResultSetId = 0;
+ int64_t StartRowId = 0;
+ TInstant Deadline;
+ Ydb::ResultSet ResultSet;
+ };
+
+ struct TEvWriteResultDataResponse : NActors::TEventLocal<TEvWriteResultDataResponse, EvWriteResultDataResponse> {
+ explicit TEvWriteResultDataResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
explicit TEvWriteResultDataResponse(
const NYql::TIssues& issues,
const ui64 requestId)
@@ -965,24 +965,24 @@ struct TEvControlPlaneStorage {
{
}
- NYql::TIssues Issues;
+ NYql::TIssues Issues;
const ui64 RequestId = 0;
- TDebugInfoPtr DebugInfo;
- };
-
- struct TEvGetTaskRequest : NActors::TEventLocal<TEvGetTaskRequest, EvGetTaskRequest> {
+ TDebugInfoPtr DebugInfo;
+ };
+
+ struct TEvGetTaskRequest : NActors::TEventLocal<TEvGetTaskRequest, EvGetTaskRequest> {
explicit TEvGetTaskRequest(
const TString& owner,
const TString& hostName)
- : Owner(owner)
- , HostName(hostName)
- {
- }
-
- TString Owner;
- TString HostName;
- };
-
+ : Owner(owner)
+ , HostName(hostName)
+ {
+ }
+
+ TString Owner;
+ TString HostName;
+ };
+
struct TTask {
TString Scope;
TString QueryId;
@@ -992,24 +992,24 @@ struct TEvControlPlaneStorage {
TInstant Deadline;
};
- struct TEvGetTaskResponse : NActors::TEventLocal<TEvGetTaskResponse, EvGetTaskResponse> {
+ struct TEvGetTaskResponse : NActors::TEventLocal<TEvGetTaskResponse, EvGetTaskResponse> {
explicit TEvGetTaskResponse(const TVector<TTask>& tasks, const TString& owner)
: Tasks(tasks)
, Owner(owner)
- {
- }
-
- explicit TEvGetTaskResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- NYql::TIssues Issues;
+ {
+ }
+
+ explicit TEvGetTaskResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ NYql::TIssues Issues;
TVector<TTask> Tasks;
TString Owner;
- TDebugInfoPtr DebugInfo;
- };
-
+ TDebugInfoPtr DebugInfo;
+ };
+
// Description of consumer that was created by YQ
struct TTopicConsumer {
TString DatabaseId;
@@ -1022,53 +1022,53 @@ struct TEvControlPlaneStorage {
bool AddBearerToToken = false;
};
- struct TEvPingTaskRequest : NActors::TEventLocal<TEvPingTaskRequest, EvPingTaskRequest> {
+ struct TEvPingTaskRequest : NActors::TEventLocal<TEvPingTaskRequest, EvPingTaskRequest> {
explicit TEvPingTaskRequest(const TString& scope, const TString& queryId, const TString& owner, const TInstant& deadline, const TString& resultId = "")
- : Scope(scope)
- , QueryId(queryId)
+ : Scope(scope)
+ , QueryId(queryId)
, Owner(owner)
, Deadline(deadline)
, ResultId(resultId)
- {
- }
-
+ {
+ }
+
const TString Scope;
const TString QueryId;
const TString Owner;
const TInstant Deadline;
TString ResultId;
- TMaybe<YandexQuery::QueryMeta::ComputeStatus> Status;
- TMaybe<NYql::TIssues> Issues;
- TMaybe<NYql::TIssues> TransientIssues;
- TMaybe<TString> Statistics;
+ TMaybe<YandexQuery::QueryMeta::ComputeStatus> Status;
+ TMaybe<NYql::TIssues> Issues;
+ TMaybe<NYql::TIssues> TransientIssues;
+ TMaybe<TString> Statistics;
TMaybe<TVector<YandexQuery::ResultSetMeta>> ResultSetMetas;
- TMaybe<TString> Ast;
- TMaybe<TString> Plan;
- TMaybe<TInstant> StartedAt;
- TMaybe<TInstant> FinishedAt;
+ TMaybe<TString> Ast;
+ TMaybe<TString> Plan;
+ TMaybe<TInstant> StartedAt;
+ TMaybe<TInstant> FinishedAt;
bool ResignQuery = false;
TVector<TTopicConsumer> CreatedTopicConsumers;
TVector<TString> DqGraphs;
i32 DqGraphIndex = 0;
YandexQuery::StateLoadMode StateLoadMode = YandexQuery::STATE_LOAD_MODE_UNSPECIFIED;
TMaybe<YandexQuery::StreamingDisposition> StreamingDisposition;
- };
-
- struct TEvPingTaskResponse : NActors::TEventLocal<TEvPingTaskResponse, EvPingTaskResponse> {
- explicit TEvPingTaskResponse(const YandexQuery::QueryAction& action)
- : Action(action)
- {
- }
-
- explicit TEvPingTaskResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
+ };
+
+ struct TEvPingTaskResponse : NActors::TEventLocal<TEvPingTaskResponse, EvPingTaskResponse> {
+ explicit TEvPingTaskResponse(const YandexQuery::QueryAction& action)
+ : Action(action)
+ {
+ }
+
+ explicit TEvPingTaskResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
YandexQuery::QueryAction Action = YandexQuery::QUERY_ACTION_UNSPECIFIED;
- NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
- };
+ NYql::TIssues Issues;
+ TDebugInfoPtr DebugInfo;
+ };
struct TEvNodesHealthCheckRequest : NActors::TEventLocal<TEvNodesHealthCheckRequest, EvNodesHealthCheckRequest> {
explicit TEvNodesHealthCheckRequest(
@@ -1092,9 +1092,9 @@ struct TEvControlPlaneStorage {
Yq::Private::NodesHealthCheckResult Record;
NYql::TIssues Issues;
- TDebugInfoPtr DebugInfo;
+ TDebugInfoPtr DebugInfo;
};
-};
-
-}
+};
+
+}
diff --git a/ydb/core/yq/libs/control_plane_storage/events/ya.make b/ydb/core/yq/libs/control_plane_storage/events/ya.make
index 6bfef24891..df6e2734ac 100644
--- a/ydb/core/yq/libs/control_plane_storage/events/ya.make
+++ b/ydb/core/yq/libs/control_plane_storage/events/ya.make
@@ -1,16 +1,16 @@
OWNER(g:yq)
-
-LIBRARY()
-
-SRCS(
- events.cpp
-)
-
-PEERDIR(
- library/cpp/actors/core
- library/cpp/actors/interconnect
+
+LIBRARY()
+
+SRCS(
+ events.cpp
+)
+
+PEERDIR(
+ library/cpp/actors/core
+ library/cpp/actors/interconnect
ydb/core/yq/libs/control_plane_storage/proto
ydb/core/yq/libs/events
-)
-
-END()
+)
+
+END()
diff --git a/ydb/core/yq/libs/control_plane_storage/exceptions.cpp b/ydb/core/yq/libs/control_plane_storage/exceptions.cpp
index ab971f11d3..b013e4127a 100644
--- a/ydb/core/yq/libs/control_plane_storage/exceptions.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/exceptions.cpp
@@ -1,37 +1,37 @@
-#include "exceptions.h"
-
-#include <util/string/builder.h>
-
-namespace NYq {
-
-TControlPlaneStorageException::TControlPlaneStorageException(TIssuesIds::EIssueCode code)
- : SourceLocation("", 0)
- , Code(code)
-{}
-
-TControlPlaneStorageException::TControlPlaneStorageException(const TSourceLocation& sl, const TControlPlaneStorageException& t)
- : yexception(t)
- , SourceLocation(sl)
- , Code(t.Code)
-{}
-
-const char* TControlPlaneStorageException::GetRawMessage() const {
- return yexception::what();
-}
-
-const char* TControlPlaneStorageException::what() const noexcept {
- try {
- if (!Message) {
- Message = TStringBuilder{} << SourceLocation << TStringBuf(": ") << yexception::what();
- }
- return Message.c_str();
- } catch(...) {
- return "Unexpected exception in TControlPlaneStorageException::what()";
- }
-}
-
-TControlPlaneStorageException operator+(const TSourceLocation& sl, TControlPlaneStorageException&& t) {
- return TControlPlaneStorageException(sl, t);
-}
-
-} // namespace NYq \ No newline at end of file
+#include "exceptions.h"
+
+#include <util/string/builder.h>
+
+namespace NYq {
+
+TControlPlaneStorageException::TControlPlaneStorageException(TIssuesIds::EIssueCode code)
+ : SourceLocation("", 0)
+ , Code(code)
+{}
+
+TControlPlaneStorageException::TControlPlaneStorageException(const TSourceLocation& sl, const TControlPlaneStorageException& t)
+ : yexception(t)
+ , SourceLocation(sl)
+ , Code(t.Code)
+{}
+
+const char* TControlPlaneStorageException::GetRawMessage() const {
+ return yexception::what();
+}
+
+const char* TControlPlaneStorageException::what() const noexcept {
+ try {
+ if (!Message) {
+ Message = TStringBuilder{} << SourceLocation << TStringBuf(": ") << yexception::what();
+ }
+ return Message.c_str();
+ } catch(...) {
+ return "Unexpected exception in TControlPlaneStorageException::what()";
+ }
+}
+
+TControlPlaneStorageException operator+(const TSourceLocation& sl, TControlPlaneStorageException&& t) {
+ return TControlPlaneStorageException(sl, t);
+}
+
+} // namespace NYq \ No newline at end of file
diff --git a/ydb/core/yq/libs/control_plane_storage/exceptions.h b/ydb/core/yq/libs/control_plane_storage/exceptions.h
index 996fc379f4..6fd960878c 100644
--- a/ydb/core/yq/libs/control_plane_storage/exceptions.h
+++ b/ydb/core/yq/libs/control_plane_storage/exceptions.h
@@ -1,26 +1,26 @@
-#pragma once
-
-#include <util/generic/yexception.h>
-#include <util/system/compiler.h>
-
+#pragma once
+
+#include <util/generic/yexception.h>
+#include <util/system/compiler.h>
+
#include <ydb/core/yq/libs/config/protos/issue_id.pb.h>
-
-namespace NYq {
-
-struct TControlPlaneStorageException: public yexception {
- TSourceLocation SourceLocation;
- mutable TString Message;
- TIssuesIds::EIssueCode Code;
-
- TControlPlaneStorageException(TIssuesIds::EIssueCode code);
-
- TControlPlaneStorageException(const TSourceLocation& sl, const TControlPlaneStorageException& t);
-
- const char* what() const noexcept override;
-
- const char* GetRawMessage() const;
-};
-
-TControlPlaneStorageException operator+(const TSourceLocation& sl, TControlPlaneStorageException&& t);
-
-} // namespace NYq
+
+namespace NYq {
+
+struct TControlPlaneStorageException: public yexception {
+ TSourceLocation SourceLocation;
+ mutable TString Message;
+ TIssuesIds::EIssueCode Code;
+
+ TControlPlaneStorageException(TIssuesIds::EIssueCode code);
+
+ TControlPlaneStorageException(const TSourceLocation& sl, const TControlPlaneStorageException& t);
+
+ const char* what() const noexcept override;
+
+ const char* GetRawMessage() const;
+};
+
+TControlPlaneStorageException operator+(const TSourceLocation& sl, TControlPlaneStorageException&& t);
+
+} // namespace NYq
diff --git a/ydb/core/yq/libs/control_plane_storage/extractors.h b/ydb/core/yq/libs/control_plane_storage/extractors.h
index 6d75f372a3..3f0632ab64 100644
--- a/ydb/core/yq/libs/control_plane_storage/extractors.h
+++ b/ydb/core/yq/libs/control_plane_storage/extractors.h
@@ -1,45 +1,45 @@
-#pragma once
-
-#include "validators.h"
-
+#pragma once
+
+#include "validators.h"
+
#include <ydb/core/yq/libs/db_schema/db_schema.h>
-
-namespace NYq {
-
-template<typename T, typename A>
-TValidationQuery CreateEntityExtractor(const TString& scope,
- const TString& id,
- const TString& entityColumnName,
- const TString& idColumnName,
- const TString& tableName,
- std::shared_ptr<std::pair<T, A>> response,
- const TString& tablePathPrefix) {
- TSqlQueryBuilder queryBuilder(tablePathPrefix);
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("id", id);
- queryBuilder.AddText(
- "SELECT `" + entityColumnName + "` FROM `" + tableName + "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" + idColumnName + "` = $id;\n"
- );
-
- auto validator = [response, entityColumnName](NYdb::NTable::TDataQueryResult result) {
- const auto& resultSets = result.GetResultSets();
- if (resultSets.size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "internal error, result set size is not equal to 1 but equal " << resultSets.size();
- }
-
- NYdb::TResultSetParser parser(resultSets.back());
- if (!parser.TryNextRow()) {
- return false; // continue
- }
-
- if (!response->second.Before.ConstructInPlace().ParseFromString(*parser.ColumnParser(entityColumnName).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message. Please contact internal support";
- }
- return false;
- };
- const auto query = queryBuilder.Build();
- return {query.Sql, query.Params, validator};
-}
-
-}
+
+namespace NYq {
+
+template<typename T, typename A>
+TValidationQuery CreateEntityExtractor(const TString& scope,
+ const TString& id,
+ const TString& entityColumnName,
+ const TString& idColumnName,
+ const TString& tableName,
+ std::shared_ptr<std::pair<T, A>> response,
+ const TString& tablePathPrefix) {
+ TSqlQueryBuilder queryBuilder(tablePathPrefix);
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("id", id);
+ queryBuilder.AddText(
+ "SELECT `" + entityColumnName + "` FROM `" + tableName + "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" + idColumnName + "` = $id;\n"
+ );
+
+ auto validator = [response, entityColumnName](NYdb::NTable::TDataQueryResult result) {
+ const auto& resultSets = result.GetResultSets();
+ if (resultSets.size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "internal error, result set size is not equal to 1 but equal " << resultSets.size();
+ }
+
+ NYdb::TResultSetParser parser(resultSets.back());
+ if (!parser.TryNextRow()) {
+ return false; // continue
+ }
+
+ if (!response->second.Before.ConstructInPlace().ParseFromString(*parser.ColumnParser(entityColumnName).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message. Please contact internal support";
+ }
+ return false;
+ };
+ const auto query = queryBuilder.Build();
+ return {query.Sql, query.Params, validator};
+}
+
+}
diff --git a/ydb/core/yq/libs/control_plane_storage/in_memory_control_plane_storage.cpp b/ydb/core/yq/libs/control_plane_storage/in_memory_control_plane_storage.cpp
index 783b924238..1daa6b19ec 100644
--- a/ydb/core/yq/libs/control_plane_storage/in_memory_control_plane_storage.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/in_memory_control_plane_storage.cpp
@@ -1,286 +1,286 @@
-#include "control_plane_storage.h"
-#include "util.h"
-
-#include <util/generic/guid.h>
-#include <util/generic/set.h>
-
+#include "control_plane_storage.h"
+#include "util.h"
+
+#include <util/generic/guid.h>
+#include <util/generic/set.h>
+
#include <library/cpp/protobuf/interop/cast.h>
#include <ydb/core/yq/libs/config/yq_issue.h>
#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
-
-namespace NYq {
-
-class TInMemoryControlPlaneStorageActor : public NActors::TActor<TInMemoryControlPlaneStorageActor> {
- struct TKey {
- TString Scope;
- TString Id;
-
- bool operator<(const TKey& other) const
- {
- return tie(Scope, Id) < tie(other.Scope, other.Id);
- }
- };
-
- struct TConfig {
- NConfig::TControlPlaneStorageConfig Proto;
- TDuration IdempotencyKeyTtl;
- TDuration AutomaticQueriesTtl;
+
+namespace NYq {
+
+class TInMemoryControlPlaneStorageActor : public NActors::TActor<TInMemoryControlPlaneStorageActor> {
+ struct TKey {
+ TString Scope;
+ TString Id;
+
+ bool operator<(const TKey& other) const
+ {
+ return tie(Scope, Id) < tie(other.Scope, other.Id);
+ }
+ };
+
+ struct TConfig {
+ NConfig::TControlPlaneStorageConfig Proto;
+ TDuration IdempotencyKeyTtl;
+ TDuration AutomaticQueriesTtl;
TDuration ResultSetsTtl;
- TDuration AnalyticsRetryCounterUpdateTime;
- TDuration StreamingRetryCounterUpdateTime;
- TDuration TaskLeaseTtl;
-
- TConfig(const NConfig::TControlPlaneStorageConfig& config)
- : Proto(FillDefaultParameters(config))
- , IdempotencyKeyTtl(GetDuration(Proto.GetIdempotencyKeysTtl(), TDuration::Minutes(10)))
- , AutomaticQueriesTtl(GetDuration(Proto.GetAutomaticQueriesTtl(), TDuration::Days(1)))
+ TDuration AnalyticsRetryCounterUpdateTime;
+ TDuration StreamingRetryCounterUpdateTime;
+ TDuration TaskLeaseTtl;
+
+ TConfig(const NConfig::TControlPlaneStorageConfig& config)
+ : Proto(FillDefaultParameters(config))
+ , IdempotencyKeyTtl(GetDuration(Proto.GetIdempotencyKeysTtl(), TDuration::Minutes(10)))
+ , AutomaticQueriesTtl(GetDuration(Proto.GetAutomaticQueriesTtl(), TDuration::Days(1)))
, ResultSetsTtl(GetDuration(Proto.GetResultSetsTtl(), TDuration::Days(1)))
- , AnalyticsRetryCounterUpdateTime(GetDuration(Proto.GetAnalyticsRetryCounterUpdateTime(), TDuration::Days(1)))
- , StreamingRetryCounterUpdateTime(GetDuration(Proto.GetAnalyticsRetryCounterUpdateTime(), TDuration::Days(1)))
- , TaskLeaseTtl(GetDuration(Proto.GetTaskLeaseTtl(), TDuration::Seconds(30)))
- {
- }
- };
-
- TConfig Config;
- TMap<TKey, YandexQuery::Query> Queries;
- TMap<TKey, YandexQuery::Connection> Connections;
- TMap<TString, TInstant> IdempotencyKeys; // idempotency_key -> created_at
-
- static constexpr int64_t InitialRevision = 1;
-
-public:
- TInMemoryControlPlaneStorageActor(const NConfig::TControlPlaneStorageConfig& config)
- : TActor(&TThis::StateFunc)
- , Config(config)
- {
- }
-
+ , AnalyticsRetryCounterUpdateTime(GetDuration(Proto.GetAnalyticsRetryCounterUpdateTime(), TDuration::Days(1)))
+ , StreamingRetryCounterUpdateTime(GetDuration(Proto.GetAnalyticsRetryCounterUpdateTime(), TDuration::Days(1)))
+ , TaskLeaseTtl(GetDuration(Proto.GetTaskLeaseTtl(), TDuration::Seconds(30)))
+ {
+ }
+ };
+
+ TConfig Config;
+ TMap<TKey, YandexQuery::Query> Queries;
+ TMap<TKey, YandexQuery::Connection> Connections;
+ TMap<TString, TInstant> IdempotencyKeys; // idempotency_key -> created_at
+
+ static constexpr int64_t InitialRevision = 1;
+
+public:
+ TInMemoryControlPlaneStorageActor(const NConfig::TControlPlaneStorageConfig& config)
+ : TActor(&TThis::StateFunc)
+ , Config(config)
+ {
+ }
+
static constexpr char ActorName[] = "YQ_CONTROL_PLANE_STORAGE";
-
-private:
- STRICT_STFUNC(StateFunc,
- hFunc(TEvControlPlaneStorage::TEvCreateQueryRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvListQueriesRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvDescribeQueryRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvModifyQueryRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvDeleteQueryRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvControlQueryRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvGetResultDataRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvListJobsRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvCreateConnectionRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvListConnectionsRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvDescribeConnectionRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvModifyConnectionRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvDeleteConnectionRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvCreateBindingRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvListBindingsRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvDescribeBindingRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvModifyBindingRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvDeleteBindingRequest, Handle);
+
+private:
+ STRICT_STFUNC(StateFunc,
+ hFunc(TEvControlPlaneStorage::TEvCreateQueryRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvListQueriesRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvDescribeQueryRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvModifyQueryRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvDeleteQueryRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvControlQueryRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvGetResultDataRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvListJobsRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvCreateConnectionRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvListConnectionsRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvDescribeConnectionRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvModifyConnectionRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvDeleteConnectionRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvCreateBindingRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvListBindingsRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvDescribeBindingRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvModifyBindingRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvDeleteBindingRequest, Handle);
hFunc(TEvControlPlaneStorage::TEvDescribeJobRequest, Handle);
hFunc(TEvControlPlaneStorage::TEvWriteResultDataRequest, Handle);
hFunc(TEvControlPlaneStorage::TEvGetTaskRequest, Handle);
hFunc(TEvControlPlaneStorage::TEvPingTaskRequest, Handle);
hFunc(TEvControlPlaneStorage::TEvNodesHealthCheckRequest, Handle);
hFunc(NActors::NMon::TEvHttpInfo, Handle);
- )
-
- void Handle(TEvControlPlaneStorage::TEvCreateQueryRequest::TPtr& ev)
- {
+ )
+
+ void Handle(TEvControlPlaneStorage::TEvCreateQueryRequest::TPtr& ev)
+ {
CPS_LOG_I("CreateQueryRequest");
- const YandexQuery::CreateQueryRequest& request = ev->Get()->Request;
- CPS_LOG_D("CreateQueryRequest: " << request.DebugString());
- CleanupIndempotencyKeys();
- auto now = TInstant::Now();
- const TString idempotencyKey = request.idempotency_key();
- if (idempotencyKey && IdempotencyKeys.contains(idempotencyKey)) {
- CPS_LOG_D("CreateQueryRequest, idempotency key already exist: " << request.DebugString());
- NYql::TIssue issue = MakeErrorIssue(TIssuesIds::BAD_REQUEST, "idempotency key already exist");
- Send(ev->Sender, new TEvControlPlaneStorage::TEvCreateQueryResponse(NYql::TIssues{issue}), 0, ev->Cookie);
- return;
- }
-
- NYql::TIssues issues = ValidateCreateQueryRequest(ev);
- if (issues) {
- CPS_LOG_D("CreateQueryRequest, validation failed: " << request.DebugString() << " error: " << issues.ToString());
- Send(ev->Sender, new TEvControlPlaneStorage::TEvCreateQueryResponse(issues), 0, ev->Cookie);
+ const YandexQuery::CreateQueryRequest& request = ev->Get()->Request;
+ CPS_LOG_D("CreateQueryRequest: " << request.DebugString());
+ CleanupIndempotencyKeys();
+ auto now = TInstant::Now();
+ const TString idempotencyKey = request.idempotency_key();
+ if (idempotencyKey && IdempotencyKeys.contains(idempotencyKey)) {
+ CPS_LOG_D("CreateQueryRequest, idempotency key already exist: " << request.DebugString());
+ NYql::TIssue issue = MakeErrorIssue(TIssuesIds::BAD_REQUEST, "idempotency key already exist");
+ Send(ev->Sender, new TEvControlPlaneStorage::TEvCreateQueryResponse(NYql::TIssues{issue}), 0, ev->Cookie);
+ return;
+ }
+
+ NYql::TIssues issues = ValidateCreateQueryRequest(ev);
+ if (issues) {
+ CPS_LOG_D("CreateQueryRequest, validation failed: " << request.DebugString() << " error: " << issues.ToString());
+ Send(ev->Sender, new TEvControlPlaneStorage::TEvCreateQueryResponse(issues), 0, ev->Cookie);
return;
- }
-
- const TString user = ev->Get()->User;
- const TString scope = ev->Get()->Scope;
- const TString queryId = CreateGuidAsString();
- YandexQuery::Query query;
- YandexQuery::QueryContent& content = *query.mutable_content();
- content = request.content();
- YandexQuery::QueryMeta& meta = *query.mutable_meta();
- YandexQuery::CommonMeta& common = *meta.mutable_common();
- common.set_id(queryId);
- common.set_created_by(user);
+ }
+
+ const TString user = ev->Get()->User;
+ const TString scope = ev->Get()->Scope;
+ const TString queryId = CreateGuidAsString();
+ YandexQuery::Query query;
+ YandexQuery::QueryContent& content = *query.mutable_content();
+ content = request.content();
+ YandexQuery::QueryMeta& meta = *query.mutable_meta();
+ YandexQuery::CommonMeta& common = *meta.mutable_common();
+ common.set_id(queryId);
+ common.set_created_by(user);
auto timestamp = NProtoInterop::CastToProto(now);
- *common.mutable_created_at() = timestamp;
- common.set_revision(InitialRevision);
-
- Queries[{scope, queryId}] = query;
-
- if (!idempotencyKey) {
- IdempotencyKeys[idempotencyKey] = now;
- }
-
- CPS_LOG_D("CreateQueryRequest, success: " << request.DebugString() << " query_id: " << queryId);
- YandexQuery::CreateQueryResult result;
- result.set_query_id(queryId);
- Send(ev->Sender, new TEvControlPlaneStorage::TEvCreateQueryResponse(result, TAuditDetails<YandexQuery::Query>{}), 0, ev->Cookie);
- }
-
- void Handle(TEvControlPlaneStorage::TEvListQueriesRequest::TPtr& ev)
- {
+ *common.mutable_created_at() = timestamp;
+ common.set_revision(InitialRevision);
+
+ Queries[{scope, queryId}] = query;
+
+ if (!idempotencyKey) {
+ IdempotencyKeys[idempotencyKey] = now;
+ }
+
+ CPS_LOG_D("CreateQueryRequest, success: " << request.DebugString() << " query_id: " << queryId);
+ YandexQuery::CreateQueryResult result;
+ result.set_query_id(queryId);
+ Send(ev->Sender, new TEvControlPlaneStorage::TEvCreateQueryResponse(result, TAuditDetails<YandexQuery::Query>{}), 0, ev->Cookie);
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvListQueriesRequest::TPtr& ev)
+ {
SendEmptyResponse<
TEvControlPlaneStorage::TEvListQueriesRequest::TPtr,
YandexQuery::ListQueriesResult,
TEvControlPlaneStorage::TEvListQueriesResponse>(ev, "ListQueriesRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvDescribeQueryRequest::TPtr& ev)
- {
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvDescribeQueryRequest::TPtr& ev)
+ {
SendEmptyResponse<
TEvControlPlaneStorage::TEvDescribeQueryRequest::TPtr,
YandexQuery::DescribeQueryResult,
TEvControlPlaneStorage::TEvDescribeQueryResponse>(ev, "DescribeQueryRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvModifyQueryRequest::TPtr& ev)
- {
- SendEmptyAuditResponse<
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvModifyQueryRequest::TPtr& ev)
+ {
+ SendEmptyAuditResponse<
TEvControlPlaneStorage::TEvModifyQueryRequest::TPtr,
YandexQuery::ModifyQueryResult,
- TEvControlPlaneStorage::TEvModifyQueryResponse,
- TAuditDetails<YandexQuery::Query>>(ev, "ModifyQueryRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvDeleteQueryRequest::TPtr& ev)
- {
- SendEmptyAuditResponse<
+ TEvControlPlaneStorage::TEvModifyQueryResponse,
+ TAuditDetails<YandexQuery::Query>>(ev, "ModifyQueryRequest");
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvDeleteQueryRequest::TPtr& ev)
+ {
+ SendEmptyAuditResponse<
TEvControlPlaneStorage::TEvDeleteQueryRequest::TPtr,
YandexQuery::DeleteQueryResult,
- TEvControlPlaneStorage::TEvDeleteQueryResponse,
- TAuditDetails<YandexQuery::Query>>(ev, "DeleteQueryRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvControlQueryRequest::TPtr& ev)
- {
- SendEmptyAuditResponse<
+ TEvControlPlaneStorage::TEvDeleteQueryResponse,
+ TAuditDetails<YandexQuery::Query>>(ev, "DeleteQueryRequest");
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvControlQueryRequest::TPtr& ev)
+ {
+ SendEmptyAuditResponse<
TEvControlPlaneStorage::TEvControlQueryRequest::TPtr,
YandexQuery::ControlQueryResult,
- TEvControlPlaneStorage::TEvControlQueryResponse,
- TAuditDetails<YandexQuery::Query>>(ev, "ControlQueryRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvGetResultDataRequest::TPtr& ev)
- {
+ TEvControlPlaneStorage::TEvControlQueryResponse,
+ TAuditDetails<YandexQuery::Query>>(ev, "ControlQueryRequest");
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvGetResultDataRequest::TPtr& ev)
+ {
SendEmptyResponse<
TEvControlPlaneStorage::TEvGetResultDataRequest::TPtr,
YandexQuery::GetResultDataResult,
TEvControlPlaneStorage::TEvGetResultDataResponse>(ev, "GetResultDataRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvListJobsRequest::TPtr& ev)
- {
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvListJobsRequest::TPtr& ev)
+ {
SendEmptyResponse<
TEvControlPlaneStorage::TEvListJobsRequest::TPtr,
YandexQuery::ListJobsResult,
TEvControlPlaneStorage::TEvListJobsResponse>(ev, "ListJobsRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvCreateConnectionRequest::TPtr& ev)
- {
- SendEmptyAuditResponse<
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvCreateConnectionRequest::TPtr& ev)
+ {
+ SendEmptyAuditResponse<
TEvControlPlaneStorage::TEvCreateConnectionRequest::TPtr,
YandexQuery::CreateConnectionResult,
- TEvControlPlaneStorage::TEvCreateConnectionResponse,
- TAuditDetails<YandexQuery::Connection>>(ev, "CreateConnectionRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvListConnectionsRequest::TPtr& ev)
- {
+ TEvControlPlaneStorage::TEvCreateConnectionResponse,
+ TAuditDetails<YandexQuery::Connection>>(ev, "CreateConnectionRequest");
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvListConnectionsRequest::TPtr& ev)
+ {
SendEmptyResponse<
TEvControlPlaneStorage::TEvListConnectionsRequest::TPtr,
YandexQuery::ListConnectionsResult,
TEvControlPlaneStorage::TEvListConnectionsResponse>(ev, "ListConnectionsRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvDescribeConnectionRequest::TPtr& ev)
- {
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvDescribeConnectionRequest::TPtr& ev)
+ {
SendEmptyResponse<
TEvControlPlaneStorage::TEvDescribeConnectionRequest::TPtr,
YandexQuery::DescribeConnectionResult,
TEvControlPlaneStorage::TEvDescribeConnectionResponse>(ev, "DescribeConnectionRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvModifyConnectionRequest::TPtr& ev)
- {
- SendEmptyAuditResponse<
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvModifyConnectionRequest::TPtr& ev)
+ {
+ SendEmptyAuditResponse<
TEvControlPlaneStorage::TEvModifyConnectionRequest::TPtr,
YandexQuery::ModifyConnectionResult,
- TEvControlPlaneStorage::TEvModifyConnectionResponse,
- TAuditDetails<YandexQuery::Connection>>(ev, "ModifyConnectionRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvDeleteConnectionRequest::TPtr& ev)
- {
- SendEmptyAuditResponse<
+ TEvControlPlaneStorage::TEvModifyConnectionResponse,
+ TAuditDetails<YandexQuery::Connection>>(ev, "ModifyConnectionRequest");
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvDeleteConnectionRequest::TPtr& ev)
+ {
+ SendEmptyAuditResponse<
TEvControlPlaneStorage::TEvDeleteConnectionRequest::TPtr,
YandexQuery::DeleteConnectionResult,
- TEvControlPlaneStorage::TEvDeleteConnectionResponse,
- TAuditDetails<YandexQuery::Connection>>(ev, "DeleteConnectionRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvCreateBindingRequest::TPtr& ev)
- {
- SendEmptyAuditResponse<
+ TEvControlPlaneStorage::TEvDeleteConnectionResponse,
+ TAuditDetails<YandexQuery::Connection>>(ev, "DeleteConnectionRequest");
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvCreateBindingRequest::TPtr& ev)
+ {
+ SendEmptyAuditResponse<
TEvControlPlaneStorage::TEvCreateBindingRequest::TPtr,
YandexQuery::CreateBindingResult,
- TEvControlPlaneStorage::TEvCreateBindingResponse,
- TAuditDetails<YandexQuery::Binding>>(ev, "CreateBindingRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvListBindingsRequest::TPtr& ev)
- {
+ TEvControlPlaneStorage::TEvCreateBindingResponse,
+ TAuditDetails<YandexQuery::Binding>>(ev, "CreateBindingRequest");
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvListBindingsRequest::TPtr& ev)
+ {
SendEmptyResponse<
TEvControlPlaneStorage::TEvListBindingsRequest::TPtr,
YandexQuery::ListBindingsResult,
TEvControlPlaneStorage::TEvListBindingsResponse>(ev, "ListBindingsRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvDescribeBindingRequest::TPtr& ev)
- {
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvDescribeBindingRequest::TPtr& ev)
+ {
SendEmptyResponse<
TEvControlPlaneStorage::TEvDescribeBindingRequest::TPtr,
YandexQuery::DescribeBindingResult,
TEvControlPlaneStorage::TEvDescribeBindingResponse>(ev, "DescribeBindingRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvModifyBindingRequest::TPtr& ev)
- {
- SendEmptyAuditResponse<
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvModifyBindingRequest::TPtr& ev)
+ {
+ SendEmptyAuditResponse<
TEvControlPlaneStorage::TEvModifyBindingRequest::TPtr,
YandexQuery::ModifyBindingResult,
- TEvControlPlaneStorage::TEvModifyBindingResponse,
- TAuditDetails<YandexQuery::Binding>>(ev, "ModifyBindingRequest");
- }
-
- void Handle(TEvControlPlaneStorage::TEvDeleteBindingRequest::TPtr& ev)
- {
- SendEmptyAuditResponse<
+ TEvControlPlaneStorage::TEvModifyBindingResponse,
+ TAuditDetails<YandexQuery::Binding>>(ev, "ModifyBindingRequest");
+ }
+
+ void Handle(TEvControlPlaneStorage::TEvDeleteBindingRequest::TPtr& ev)
+ {
+ SendEmptyAuditResponse<
TEvControlPlaneStorage::TEvDeleteBindingRequest::TPtr,
YandexQuery::DeleteBindingResult,
- TEvControlPlaneStorage::TEvDeleteBindingResponse,
- TAuditDetails<YandexQuery::Binding>>(ev, "DeleteBindingRequest");
- }
-
+ TEvControlPlaneStorage::TEvDeleteBindingResponse,
+ TAuditDetails<YandexQuery::Binding>>(ev, "DeleteBindingRequest");
+ }
+
void Handle(TEvControlPlaneStorage::TEvDescribeJobRequest::TPtr& ev)
{
SendEmptyResponse<
@@ -336,70 +336,70 @@ private:
NActors::TActivationContext::ActorSystem()->Send(new IEventHandle(ev->Sender, SelfId(), event.release(), 0, ev->Cookie));
}
- template<typename TRequest, typename TResult, typename TEvResult, typename TAuditDetails>
- void SendEmptyAuditResponse(TRequest& ev, std::string logText) {
- CPS_LOG_I(logText);
-
- TResult result = {};
- TAuditDetails auditDetails = {};
- auto event = std::make_unique<TEvResult>(result, auditDetails);
- NActors::TActivationContext::ActorSystem()->Send(new IEventHandle(ev->Sender, SelfId(), event.release(), 0, ev->Cookie));
- }
-
- NYql::TIssues ValidateCreateQueryRequest(TEvControlPlaneStorage::TEvCreateQueryRequest::TPtr& ev)
- {
- NYql::TIssues issues;
- const YandexQuery::CreateQueryRequest& request = ev->Get()->Request;
- const TString user = ev->Get()->User;
- const TString scope = ev->Get()->Scope;
- const YandexQuery::QueryContent& query = request.content();
-
- TString error;
- if (!request.validate(error)) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, error));
- }
-
- if (query.type() == YandexQuery::QueryContent::QUERY_TYPE_UNSPECIFIED) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "type field is not specified"));
- }
-
- if (query.acl().visibility() == YandexQuery::Acl::VISIBILITY_UNSPECIFIED) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "acl.visibility field is not specified"));
- }
-
- if (request.ByteSize() > static_cast<int>(Config.Proto.GetMaxRequestSize())) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "Request size exceeded " + ToString(request.ByteSize()) + " out of " + ToString(Config.Proto.GetMaxRequestSize()) + " bytes"));
- }
-
+ template<typename TRequest, typename TResult, typename TEvResult, typename TAuditDetails>
+ void SendEmptyAuditResponse(TRequest& ev, std::string logText) {
+ CPS_LOG_I(logText);
+
+ TResult result = {};
+ TAuditDetails auditDetails = {};
+ auto event = std::make_unique<TEvResult>(result, auditDetails);
+ NActors::TActivationContext::ActorSystem()->Send(new IEventHandle(ev->Sender, SelfId(), event.release(), 0, ev->Cookie));
+ }
+
+ NYql::TIssues ValidateCreateQueryRequest(TEvControlPlaneStorage::TEvCreateQueryRequest::TPtr& ev)
+ {
+ NYql::TIssues issues;
+ const YandexQuery::CreateQueryRequest& request = ev->Get()->Request;
+ const TString user = ev->Get()->User;
+ const TString scope = ev->Get()->Scope;
+ const YandexQuery::QueryContent& query = request.content();
+
+ TString error;
+ if (!request.validate(error)) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, error));
+ }
+
+ if (query.type() == YandexQuery::QueryContent::QUERY_TYPE_UNSPECIFIED) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "type field is not specified"));
+ }
+
+ if (query.acl().visibility() == YandexQuery::Acl::VISIBILITY_UNSPECIFIED) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "acl.visibility field is not specified"));
+ }
+
+ if (request.ByteSize() > static_cast<int>(Config.Proto.GetMaxRequestSize())) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "Request size exceeded " + ToString(request.ByteSize()) + " out of " + ToString(Config.Proto.GetMaxRequestSize()) + " bytes"));
+ }
+
const uint64_t countQueries = count_if(Queries.begin(), Queries.end(), [scope](const auto& item) {
- const auto& [key, value] = item;
- return key.Scope == scope;
- });
-
- if (countQueries > Config.Proto.GetMaxCountQueries()) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "The count of the queries exceeds the limit of " + ToString(countQueries) + " out of " + ToString(Config.Proto.GetMaxCountQueries())));
- }
-
- return issues;
- }
-
- void CleanupIndempotencyKeys()
- {
- auto now = TInstant::Now();
- erase_if(IdempotencyKeys, [this, now](const auto& item) {
- auto const& [idempotencyKey, timestamp] = item;
- return timestamp + Config.IdempotencyKeyTtl < now;
- });
- }
-};
-
-NActors::TActorId ControlPlaneStorageServiceActorId(ui32 nodeId) {
- constexpr TStringBuf name = "CTRLSTORAGE";
- return NActors::TActorId(nodeId, name);
-}
-
-NActors::IActor* CreateInMemoryControlPlaneStorageServiceActor(const NConfig::TControlPlaneStorageConfig& config) {
- return new TInMemoryControlPlaneStorageActor(config);
-}
-
-} // NYq
+ const auto& [key, value] = item;
+ return key.Scope == scope;
+ });
+
+ if (countQueries > Config.Proto.GetMaxCountQueries()) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "The count of the queries exceeds the limit of " + ToString(countQueries) + " out of " + ToString(Config.Proto.GetMaxCountQueries())));
+ }
+
+ return issues;
+ }
+
+ void CleanupIndempotencyKeys()
+ {
+ auto now = TInstant::Now();
+ erase_if(IdempotencyKeys, [this, now](const auto& item) {
+ auto const& [idempotencyKey, timestamp] = item;
+ return timestamp + Config.IdempotencyKeyTtl < now;
+ });
+ }
+};
+
+NActors::TActorId ControlPlaneStorageServiceActorId(ui32 nodeId) {
+ constexpr TStringBuf name = "CTRLSTORAGE";
+ return NActors::TActorId(nodeId, name);
+}
+
+NActors::IActor* CreateInMemoryControlPlaneStorageServiceActor(const NConfig::TControlPlaneStorageConfig& config) {
+ return new TInMemoryControlPlaneStorageActor(config);
+}
+
+} // NYq
diff --git a/ydb/core/yq/libs/control_plane_storage/internal/nodes_health_check.cpp b/ydb/core/yq/libs/control_plane_storage/internal/nodes_health_check.cpp
index eb25dac4b1..e849096239 100644
--- a/ydb/core/yq/libs/control_plane_storage/internal/nodes_health_check.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/internal/nodes_health_check.cpp
@@ -1,7 +1,7 @@
#include "utils.h"
#include <ydb/core/yq/libs/db_schema/db_schema.h>
-
+
namespace NYq {
void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvNodesHealthCheckRequest::TPtr& ev)
@@ -48,13 +48,13 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvNodesHealth
}
TSqlQueryBuilder readQueryBuilder(YdbConnection->TablePathPrefix, "NodesHealthCheck(read)");
- readQueryBuilder.AddTimestamp("now", TInstant::Now());
- readQueryBuilder.AddString("tenant", tenant);
- readQueryBuilder.AddText(
+ readQueryBuilder.AddTimestamp("now", TInstant::Now());
+ readQueryBuilder.AddString("tenant", tenant);
+ readQueryBuilder.AddText(
"SELECT `" NODE_ID_COLUMN_NAME "`, `" INSTANCE_ID_COLUMN_NAME "`, `" HOST_NAME_COLUMN_NAME "`, `" ACTIVE_WORKERS_COLUMN_NAME"`, `" MEMORY_LIMIT_COLUMN_NAME"`, "
"`" MEMORY_ALLOCATED_COLUMN_NAME"`, `" INTERCONNECT_PORT_COLUMN_NAME "`, `" NODE_ADDRESS_COLUMN_NAME "` FROM `" NODES_TABLE_NAME "`\n"
"WHERE `" TENANT_COLUMN_NAME"` = $tenant AND `" EXPIRE_AT_COLUMN_NAME "` >= $now;\n"
- );
+ );
auto prepareParams = [=](const TVector<TResultSet>& resultSets) {
for (const auto& resultSet : resultSets) {
@@ -74,31 +74,31 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvNodesHealth
}
}
}
-
+
TSqlQueryBuilder writeQueryBuilder(YdbConnection->TablePathPrefix, "NodesHealthCheck(write)");
- writeQueryBuilder.AddString("tenant", tenant);
- writeQueryBuilder.AddUint32("node_id", nodeId);
- writeQueryBuilder.AddString("instance_id", instanceId);
- writeQueryBuilder.AddString("hostname", hostName);
- writeQueryBuilder.AddTimestamp("deadline", deadline);
- writeQueryBuilder.AddUint64("active_workers", activeWorkers);
- writeQueryBuilder.AddUint64("memory_limit", memoryLimit);
- writeQueryBuilder.AddUint64("memory_allocated", memoryAllocated);
- writeQueryBuilder.AddUint32("ic_port", icPort);
- writeQueryBuilder.AddString("node_address", nodeAddress);
- writeQueryBuilder.AddText(
- "UPSERT INTO `" NODES_TABLE_NAME "`\n"
- "(`" TENANT_COLUMN_NAME "`, `" NODE_ID_COLUMN_NAME "`, `" INSTANCE_ID_COLUMN_NAME "`,\n"
- "`" HOST_NAME_COLUMN_NAME "`, `" EXPIRE_AT_COLUMN_NAME "`, `" ACTIVE_WORKERS_COLUMN_NAME"`, `" MEMORY_LIMIT_COLUMN_NAME"`, `" MEMORY_ALLOCATED_COLUMN_NAME "`, `" INTERCONNECT_PORT_COLUMN_NAME "`, `" NODE_ADDRESS_COLUMN_NAME "`)\n"
- "VALUES ($tenant ,$node_id, $instance_id, $hostname, $deadline, $active_workers, $memory_limit, $memory_allocated, $ic_port, $node_address);\n"
- );
- const auto writeQuery = writeQueryBuilder.Build();
- return std::make_pair(writeQuery.Sql, writeQuery.Params);
+ writeQueryBuilder.AddString("tenant", tenant);
+ writeQueryBuilder.AddUint32("node_id", nodeId);
+ writeQueryBuilder.AddString("instance_id", instanceId);
+ writeQueryBuilder.AddString("hostname", hostName);
+ writeQueryBuilder.AddTimestamp("deadline", deadline);
+ writeQueryBuilder.AddUint64("active_workers", activeWorkers);
+ writeQueryBuilder.AddUint64("memory_limit", memoryLimit);
+ writeQueryBuilder.AddUint64("memory_allocated", memoryAllocated);
+ writeQueryBuilder.AddUint32("ic_port", icPort);
+ writeQueryBuilder.AddString("node_address", nodeAddress);
+ writeQueryBuilder.AddText(
+ "UPSERT INTO `" NODES_TABLE_NAME "`\n"
+ "(`" TENANT_COLUMN_NAME "`, `" NODE_ID_COLUMN_NAME "`, `" INSTANCE_ID_COLUMN_NAME "`,\n"
+ "`" HOST_NAME_COLUMN_NAME "`, `" EXPIRE_AT_COLUMN_NAME "`, `" ACTIVE_WORKERS_COLUMN_NAME"`, `" MEMORY_LIMIT_COLUMN_NAME"`, `" MEMORY_ALLOCATED_COLUMN_NAME "`, `" INTERCONNECT_PORT_COLUMN_NAME "`, `" NODE_ADDRESS_COLUMN_NAME "`)\n"
+ "VALUES ($tenant ,$node_id, $instance_id, $hostname, $deadline, $active_workers, $memory_limit, $memory_allocated, $ic_port, $node_address);\n"
+ );
+ const auto writeQuery = writeQueryBuilder.Build();
+ return std::make_pair(writeQuery.Sql, writeQuery.Params);
};
- const auto readQuery = readQueryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- TAsyncStatus status = ReadModifyWrite(NActors::TActivationContext::ActorSystem(), readQuery.Sql, readQuery.Params, prepareParams, requestCounters, debugInfo);
+ const auto readQuery = readQueryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ TAsyncStatus status = ReadModifyWrite(NActors::TActivationContext::ActorSystem(), readQuery.Sql, readQuery.Params, prepareParams, requestCounters, debugInfo);
auto prepare = [response] { return *response; };
auto success = SendResponse<TEvControlPlaneStorage::TEvNodesHealthCheckResponse, Yq::Private::NodesHealthCheckResult>(
"NodesHealthCheckRequest",
diff --git a/ydb/core/yq/libs/control_plane_storage/internal/response_tasks.h b/ydb/core/yq/libs/control_plane_storage/internal/response_tasks.h
index 1ab660d43d..023b52b1b2 100644
--- a/ydb/core/yq/libs/control_plane_storage/internal/response_tasks.h
+++ b/ydb/core/yq/libs/control_plane_storage/internal/response_tasks.h
@@ -2,7 +2,7 @@
#include <util/system/mutex.h>
#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
-
+
namespace NYq {
class TResponseTasks {
@@ -28,4 +28,4 @@ private:
THashMap<TString, TEvControlPlaneStorage::TTask> Tasks;
};
-} //NYq
+} //NYq
diff --git a/ydb/core/yq/libs/control_plane_storage/internal/task_get.cpp b/ydb/core/yq/libs/control_plane_storage/internal/task_get.cpp
index 42b3c1a1ac..d540b5c9b3 100644
--- a/ydb/core/yq/libs/control_plane_storage/internal/task_get.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/internal/task_get.cpp
@@ -2,11 +2,11 @@
#include <random>
-#include <util/datetime/base.h>
-
+#include <util/datetime/base.h>
+
#include <ydb/core/yq/libs/control_plane_storage/schema.h>
#include <ydb/core/yq/libs/db_schema/db_schema.h>
-
+
namespace NYq {
namespace {
@@ -31,33 +31,33 @@ std::pair<TString, NYdb::TParams> MakeSql(const TTaskInternal& taskInternal) {
const auto& owner = taskInternal.Owner;
TSqlQueryBuilder queryBuilder(taskInternal.TablePathPrefix, "GetTask(write)");
- queryBuilder.AddString("scope", task.Scope);
- queryBuilder.AddString("query_id", task.QueryId);
- queryBuilder.AddString("query", task.Query.SerializeAsString());
- queryBuilder.AddString("internal", task.Internal.SerializeAsString());
- queryBuilder.AddString("host", hostName);
- queryBuilder.AddString("owner", owner);
- queryBuilder.AddTimestamp("now", TInstant::Now());
- queryBuilder.AddUint64("retry_counter", retryCounter);
- queryBuilder.AddUint64("generation", task.Generation);
- queryBuilder.AddTimestamp("retry_counter_update_time", retryCounterUpdatedAt);
-
- // update queries
- queryBuilder.AddText(
+ queryBuilder.AddString("scope", task.Scope);
+ queryBuilder.AddString("query_id", task.QueryId);
+ queryBuilder.AddString("query", task.Query.SerializeAsString());
+ queryBuilder.AddString("internal", task.Internal.SerializeAsString());
+ queryBuilder.AddString("host", hostName);
+ queryBuilder.AddString("owner", owner);
+ queryBuilder.AddTimestamp("now", TInstant::Now());
+ queryBuilder.AddUint64("retry_counter", retryCounter);
+ queryBuilder.AddUint64("generation", task.Generation);
+ queryBuilder.AddTimestamp("retry_counter_update_time", retryCounterUpdatedAt);
+
+ // update queries
+ queryBuilder.AddText(
"UPDATE `" QUERIES_TABLE_NAME "` SET `" GENERATION_COLUMN_NAME "` = $generation, `" QUERY_COLUMN_NAME "` = $query, `" INTERNAL_COLUMN_NAME "` = $internal\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
- );
-
- // update pending small
- queryBuilder.AddText(
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
+ );
+
+ // update pending small
+ queryBuilder.AddText(
"UPDATE `" PENDING_SMALL_TABLE_NAME "` SET `" LAST_SEEN_AT_COLUMN_NAME "` = $now,\n"
"`" RETRY_COUNTER_COLUMN_NAME "` = $retry_counter, `" RETRY_COUNTER_UPDATE_COLUMN_NAME "` = $retry_counter_update_time, `" IS_RESIGN_QUERY_COLUMN_NAME "` = false,\n"
"`" HOST_NAME_COLUMN_NAME "` = $host, `" OWNER_COLUMN_NAME "` = $owner\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
- );
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
+ );
- const auto query = queryBuilder.Build();
- return std::make_pair(query.Sql, query.Params);
+ const auto query = queryBuilder.Build();
+ return std::make_pair(query.Sql, query.Params);
}
} // namespace
@@ -65,7 +65,7 @@ std::pair<TString, NYdb::TParams> MakeSql(const TTaskInternal& taskInternal) {
std::tuple<TString, NYdb::TParams, std::function<std::pair<TString, NYdb::TParams>(const TVector<NYdb::TResultSet>&)>> MakeGetTaskUpdateQuery(
const TTaskInternal& taskInternal,
const std::shared_ptr<TResponseTasks>& responseTasks,
- const TInstant& taskLeaseTimestamp,
+ const TInstant& taskLeaseTimestamp,
bool disableCurrentIam,
const TDuration& automaticQueriesTtl,
const TDuration& resultSetsTtl)
@@ -73,18 +73,18 @@ std::tuple<TString, NYdb::TParams, std::function<std::pair<TString, NYdb::TParam
const auto& task = taskInternal.Task;
TSqlQueryBuilder queryBuilder(taskInternal.TablePathPrefix, "GetTask(read)");
- queryBuilder.AddString("scope", task.Scope);
- queryBuilder.AddString("query_id", task.QueryId);
- queryBuilder.AddTimestamp("from", taskLeaseTimestamp);
+ queryBuilder.AddString("scope", task.Scope);
+ queryBuilder.AddString("query_id", task.QueryId);
+ queryBuilder.AddTimestamp("from", taskLeaseTimestamp);
- queryBuilder.AddText(
+ queryBuilder.AddText(
"SELECT `" GENERATION_COLUMN_NAME "`, `" INTERNAL_COLUMN_NAME "`, `" QUERY_COLUMN_NAME "`\n"
"FROM `" QUERIES_TABLE_NAME "`\n"
"WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
"SELECT `" LAST_SEEN_AT_COLUMN_NAME "`\n"
"FROM `" PENDING_SMALL_TABLE_NAME "`\n"
"WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id AND `" LAST_SEEN_AT_COLUMN_NAME "` < $from;\n"
- );
+ );
auto prepareParams = [=, taskInternal=taskInternal, responseTasks=responseTasks](const TVector<TResultSet>& resultSets) mutable {
auto& task = taskInternal.Task;
@@ -109,9 +109,9 @@ std::tuple<TString, NYdb::TParams, std::function<std::pair<TString, NYdb::TParam
throw TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for query internal. Please contact internal support";
}
- if (disableCurrentIam) {
- task.Internal.clear_token();
- }
+ if (disableCurrentIam) {
+ task.Internal.clear_token();
+ }
}
}
@@ -128,8 +128,8 @@ std::tuple<TString, NYdb::TParams, std::function<std::pair<TString, NYdb::TParam
return MakeSql(taskInternal);
};
- const auto query = queryBuilder.Build();
- return std::make_tuple(query.Sql, query.Params, prepareParams);
+ const auto query = queryBuilder.Build();
+ return std::make_tuple(query.Sql, query.Params, prepareParams);
}
void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetTaskRequest::TPtr& ev)
@@ -141,8 +141,8 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetTaskRequ
TEvControlPlaneStorage::TEvGetTaskRequest& request = *ev->Get();
const TString owner = request.Owner;
const TString hostName = request.HostName;
- const ui64 tasksBatchSize = Config.Proto.GetTasksBatchSize();
- const ui64 numTasksProportion = Config.Proto.GetNumTasksProportion();
+ const ui64 tasksBatchSize = Config.Proto.GetTasksBatchSize();
+ const ui64 numTasksProportion = Config.Proto.GetNumTasksProportion();
CPS_LOG_T("GetTaskRequest: " << owner << " " << hostName);
@@ -155,20 +155,20 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetTaskRequ
return;
}
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
auto response = std::make_shared<std::tuple<TVector<TEvControlPlaneStorage::TTask>, TString>>(); //tasks, owner
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "GetTask(read stale ro)");
- const auto taskLeaseTimestamp = TInstant::Now() - Config.TaskLeaseTtl;
- queryBuilder.AddTimestamp("from", taskLeaseTimestamp);
- queryBuilder.AddUint64("tasks_limit", tasksBatchSize);
- queryBuilder.AddText(
+ const auto taskLeaseTimestamp = TInstant::Now() - Config.TaskLeaseTtl;
+ queryBuilder.AddTimestamp("from", taskLeaseTimestamp);
+ queryBuilder.AddUint64("tasks_limit", tasksBatchSize);
+ queryBuilder.AddText(
"SELECT `" SCOPE_COLUMN_NAME "`, `" QUERY_ID_COLUMN_NAME "`,\n"
"`" RETRY_COUNTER_COLUMN_NAME "`, `" RETRY_COUNTER_UPDATE_COLUMN_NAME "`, `" QUERY_TYPE_COLUMN_NAME "`, `" IS_RESIGN_QUERY_COLUMN_NAME "`\n"
"FROM `" PENDING_SMALL_TABLE_NAME "`\n"
"WHERE `" LAST_SEEN_AT_COLUMN_NAME "` < $from ORDER BY `" QUERY_ID_COLUMN_NAME "` DESC LIMIT $tasks_limit;\n"
- );
+ );
auto responseTasks = std::make_shared<TResponseTasks>();
auto prepareParams = [=, responseTasks=responseTasks](const TVector<TResultSet>& resultSets) mutable {
@@ -197,8 +197,8 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetTaskRequ
YandexQuery::QueryContent::QueryType queryType = static_cast<YandexQuery::QueryContent::QueryType>(parser.ColumnParser(QUERY_TYPE_COLUMN_NAME).GetOptionalInt64().GetOrElse(0));
- const auto retryCounterLimit = queryType == YandexQuery::QueryContent::ANALYTICS ? Config.Proto.GetAnalyticsRetryCounterLimit() : Config.Proto.GetStreamingRetryCounterLimit();
- const auto retryCounterUpdateTime = queryType == YandexQuery::QueryContent::ANALYTICS ? Config.AnalyticsRetryCounterUpdateTime : Config.StreamingRetryCounterUpdateTime;
+ const auto retryCounterLimit = queryType == YandexQuery::QueryContent::ANALYTICS ? Config.Proto.GetAnalyticsRetryCounterLimit() : Config.Proto.GetStreamingRetryCounterLimit();
+ const auto retryCounterUpdateTime = queryType == YandexQuery::QueryContent::ANALYTICS ? Config.AnalyticsRetryCounterUpdateTime : Config.StreamingRetryCounterUpdateTime;
if (isResignQuery) {
continue;
@@ -231,8 +231,8 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetTaskRequ
return pickTaskParams;
};
- const auto query = queryBuilder.Build();
- auto [readStatus, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo, TTxSettings::StaleRO());
+ const auto query = queryBuilder.Build();
+ auto [readStatus, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo, TTxSettings::StaleRO());
auto result = readStatus.Apply(
[=,
resultSets=resultSets,
@@ -251,25 +251,25 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetTaskRequ
if (pickTaskParams.empty())
return readFuture;
- auto debugInfos = std::make_shared<TVector<TDebugInfoPtr>>(pickTaskParams.size());
- if (Config.Proto.GetEnableDebugMode()) {
- for (size_t i = 0; i < pickTaskParams.size(); i++) {
- (*debugInfos)[i] = std::make_shared<TDebugInfo>();
- }
- }
-
+ auto debugInfos = std::make_shared<TVector<TDebugInfoPtr>>(pickTaskParams.size());
+ if (Config.Proto.GetEnableDebugMode()) {
+ for (size_t i = 0; i < pickTaskParams.size(); i++) {
+ (*debugInfos)[i] = std::make_shared<TDebugInfo>();
+ }
+ }
+
TVector<TFuture<void>> futures;
for (size_t i = 0; i < pickTaskParams.size(); ++i) {
- futures.emplace_back(PickTask(pickTaskParams[i], requestCounters, (*debugInfos)[i], responseTasks));
+ futures.emplace_back(PickTask(pickTaskParams[i], requestCounters, (*debugInfos)[i], responseTasks));
}
auto allFuture = NThreading::WaitExceptionOrAll(futures);
return allFuture.Apply([=, responseTasks=responseTasks](const auto& future) mutable {
- if (debugInfo) {
- for (const auto& info: *debugInfos) {
- debugInfo->insert(debugInfo->end(), info->begin(), info->end());
- }
- }
+ if (debugInfo) {
+ for (const auto& info: *debugInfos) {
+ debugInfo->insert(debugInfo->end(), info->begin(), info->end());
+ }
+ }
NYql::TIssues issues;
auto status = MakeFuture(TStatus{EStatus::SUCCESS, std::move(issues)});
try {
diff --git a/ydb/core/yq/libs/control_plane_storage/internal/task_ping.cpp b/ydb/core/yq/libs/control_plane_storage/internal/task_ping.cpp
index 834d40c0f7..2f19b8e7ca 100644
--- a/ydb/core/yq/libs/control_plane_storage/internal/task_ping.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/internal/task_ping.cpp
@@ -1,9 +1,9 @@
#include "utils.h"
-#include <util/datetime/base.h>
-
+#include <util/datetime/base.h>
+
#include <ydb/core/yq/libs/db_schema/db_schema.h>
-
+
namespace NYq {
namespace {
@@ -22,9 +22,9 @@ std::tuple<TString, TParams, const std::function<std::pair<TString, NYdb::TParam
const TString& tablePathPrefix, const TDuration& automaticQueriesTtl) {
TSqlQueryBuilder readQueryBuilder(tablePathPrefix, "HardPingTask(read)");
- readQueryBuilder.AddString("scope", request->Scope);
- readQueryBuilder.AddString("query_id", request->QueryId);
- readQueryBuilder.AddText(
+ readQueryBuilder.AddString("scope", request->Scope);
+ readQueryBuilder.AddString("query_id", request->QueryId);
+ readQueryBuilder.AddText(
"$last_job_id = SELECT `" LAST_JOB_ID_COLUMN_NAME "` FROM `" QUERIES_TABLE_NAME "`\n"
" WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
"SELECT `" QUERY_COLUMN_NAME "`, `" INTERNAL_COLUMN_NAME "` FROM `" QUERIES_TABLE_NAME "`\n"
@@ -33,7 +33,7 @@ std::tuple<TString, TParams, const std::function<std::pair<TString, NYdb::TParam
" WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id AND `" JOB_ID_COLUMN_NAME "` = $last_job_id;\n"
"SELECT `" OWNER_COLUMN_NAME "` FROM `" PENDING_SMALL_TABLE_NAME "`\n"
" WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
- );
+ );
auto prepareParams = [=](const TVector<TResultSet>& resultSets) {
TString jobId;
@@ -204,87 +204,87 @@ std::tuple<TString, TParams, const std::function<std::pair<TString, NYdb::TParam
}
TSqlQueryBuilder writeQueryBuilder(tablePathPrefix, "HardPingTask(write)");
- writeQueryBuilder.AddString("scope", request->Scope);
- writeQueryBuilder.AddString("job_id", jobId);
- writeQueryBuilder.AddString("job", job.SerializeAsString());
- writeQueryBuilder.AddString("query", query.SerializeAsString());
- writeQueryBuilder.AddInt64("status", query.meta().status());
- writeQueryBuilder.AddString("internal", internal.SerializeAsString());
- writeQueryBuilder.AddString("result_id", request->ResultId);
- writeQueryBuilder.AddString("query_id", request->QueryId);
-
- if (IsTerminalStatus(query.meta().status())) {
- // delete pending
- writeQueryBuilder.AddText(
- "DELETE FROM `" PENDING_SMALL_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
- );
- } else {
+ writeQueryBuilder.AddString("scope", request->Scope);
+ writeQueryBuilder.AddString("job_id", jobId);
+ writeQueryBuilder.AddString("job", job.SerializeAsString());
+ writeQueryBuilder.AddString("query", query.SerializeAsString());
+ writeQueryBuilder.AddInt64("status", query.meta().status());
+ writeQueryBuilder.AddString("internal", internal.SerializeAsString());
+ writeQueryBuilder.AddString("result_id", request->ResultId);
+ writeQueryBuilder.AddString("query_id", request->QueryId);
+
+ if (IsTerminalStatus(query.meta().status())) {
+ // delete pending
+ writeQueryBuilder.AddText(
+ "DELETE FROM `" PENDING_SMALL_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
+ );
+ } else {
// update pending small
- writeQueryBuilder.AddTimestamp("now", request->ResignQuery ? TInstant::Zero() : TInstant::Now());
- const TString updateResignQueryFlag = request->ResignQuery ? ", `" IS_RESIGN_QUERY_COLUMN_NAME "` = true" : "";
- writeQueryBuilder.AddText(
- "UPDATE `" PENDING_SMALL_TABLE_NAME "` SET `" LAST_SEEN_AT_COLUMN_NAME "` = $now " + updateResignQueryFlag + "\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
- );
- }
-
- if (IsTerminalStatus(query.meta().status()) && query.content().automatic()) {
- // set jobs ttl
- writeQueryBuilder.AddText(
- "UPDATE `" JOBS_TABLE_NAME "` SET `" EXPIRE_AT_COLUMN_NAME "` = $expire_at\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id AND `" EXPIRE_AT_COLUMN_NAME "` IS NULL;\n"
- );
- } else if (IsTerminalStatus(query.meta().status())) {
- // set jobs ttl null
- writeQueryBuilder.AddText(
- "UPDATE `" JOBS_TABLE_NAME "` SET `" EXPIRE_AT_COLUMN_NAME "` = NULL\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id AND `" EXPIRE_AT_COLUMN_NAME "` IS NOT NULL;\n"
- );
- }
-
- TString updateResultSetsExpire;
- if (query.meta().status() == YandexQuery::QueryMeta::COMPLETED) {
- writeQueryBuilder.AddTimestamp("result_sets_expire_at", request->Deadline);
- updateResultSetsExpire = "`" RESULT_SETS_EXPIRE_AT_COLUMN_NAME "` = $result_sets_expire_at";
- } else {
- updateResultSetsExpire = "`" RESULT_SETS_EXPIRE_AT_COLUMN_NAME "` = NULL";
- }
-
- TString updateQueryTtl;
- if (IsTerminalStatus(query.meta().status()) && query.content().automatic()) {
- writeQueryBuilder.AddTimestamp("expire_at", expireAt);
- updateQueryTtl = "`" EXPIRE_AT_COLUMN_NAME "` = $expire_at";
- } else {
- updateQueryTtl = "`" EXPIRE_AT_COLUMN_NAME "` = NULL";
- }
-
- writeQueryBuilder.AddText(
+ writeQueryBuilder.AddTimestamp("now", request->ResignQuery ? TInstant::Zero() : TInstant::Now());
+ const TString updateResignQueryFlag = request->ResignQuery ? ", `" IS_RESIGN_QUERY_COLUMN_NAME "` = true" : "";
+ writeQueryBuilder.AddText(
+ "UPDATE `" PENDING_SMALL_TABLE_NAME "` SET `" LAST_SEEN_AT_COLUMN_NAME "` = $now " + updateResignQueryFlag + "\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
+ );
+ }
+
+ if (IsTerminalStatus(query.meta().status()) && query.content().automatic()) {
+ // set jobs ttl
+ writeQueryBuilder.AddText(
+ "UPDATE `" JOBS_TABLE_NAME "` SET `" EXPIRE_AT_COLUMN_NAME "` = $expire_at\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id AND `" EXPIRE_AT_COLUMN_NAME "` IS NULL;\n"
+ );
+ } else if (IsTerminalStatus(query.meta().status())) {
+ // set jobs ttl null
+ writeQueryBuilder.AddText(
+ "UPDATE `" JOBS_TABLE_NAME "` SET `" EXPIRE_AT_COLUMN_NAME "` = NULL\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id AND `" EXPIRE_AT_COLUMN_NAME "` IS NOT NULL;\n"
+ );
+ }
+
+ TString updateResultSetsExpire;
+ if (query.meta().status() == YandexQuery::QueryMeta::COMPLETED) {
+ writeQueryBuilder.AddTimestamp("result_sets_expire_at", request->Deadline);
+ updateResultSetsExpire = "`" RESULT_SETS_EXPIRE_AT_COLUMN_NAME "` = $result_sets_expire_at";
+ } else {
+ updateResultSetsExpire = "`" RESULT_SETS_EXPIRE_AT_COLUMN_NAME "` = NULL";
+ }
+
+ TString updateQueryTtl;
+ if (IsTerminalStatus(query.meta().status()) && query.content().automatic()) {
+ writeQueryBuilder.AddTimestamp("expire_at", expireAt);
+ updateQueryTtl = "`" EXPIRE_AT_COLUMN_NAME "` = $expire_at";
+ } else {
+ updateQueryTtl = "`" EXPIRE_AT_COLUMN_NAME "` = NULL";
+ }
+
+ writeQueryBuilder.AddText(
"UPSERT INTO `" JOBS_TABLE_NAME "` (`" SCOPE_COLUMN_NAME "`, `" QUERY_ID_COLUMN_NAME "`, `" JOB_ID_COLUMN_NAME "`, `" JOB_COLUMN_NAME "`) VALUES($scope, $query_id, $job_id, $job);\n"
"UPDATE `" QUERIES_TABLE_NAME "` SET `" QUERY_COLUMN_NAME "` = $query, `" STATUS_COLUMN_NAME "` = $status, `" INTERNAL_COLUMN_NAME "` = $internal, `" RESULT_ID_COLUMN_NAME "` = $result_id, " + updateResultSetsExpire + ", " + updateQueryTtl + ", `" META_REVISION_COLUMN_NAME "` = `" META_REVISION_COLUMN_NAME "` + 1\n"
"WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
- );
+ );
*response = internal.action();
- const auto writeQuery = writeQueryBuilder.Build();
- return std::make_pair(writeQuery.Sql, writeQuery.Params);
+ const auto writeQuery = writeQueryBuilder.Build();
+ return std::make_pair(writeQuery.Sql, writeQuery.Params);
};
- const auto readQuery = readQueryBuilder.Build();
- return std::make_tuple(readQuery.Sql, readQuery.Params, prepareParams);
+ const auto readQuery = readQueryBuilder.Build();
+ return std::make_tuple(readQuery.Sql, readQuery.Params, prepareParams);
}
std::tuple<TString, TParams, const std::function<std::pair<TString, NYdb::TParams>(const TVector<NYdb::TResultSet>&)>> ConstructSoftPingTask(
const TEvControlPlaneStorage::TEvPingTaskRequest* request, std::shared_ptr<YandexQuery::QueryAction> response,
const TString& tablePathPrefix) {
TSqlQueryBuilder readQueryBuilder(tablePathPrefix, "SoftPingTask(read)");
- readQueryBuilder.AddString("scope", request->Scope);
- readQueryBuilder.AddString("query_id", request->QueryId);
- readQueryBuilder.AddText(
+ readQueryBuilder.AddString("scope", request->Scope);
+ readQueryBuilder.AddString("query_id", request->QueryId);
+ readQueryBuilder.AddText(
"SELECT `" INTERNAL_COLUMN_NAME "`\n"
"FROM `" QUERIES_TABLE_NAME "` WHERE `" QUERY_ID_COLUMN_NAME "` = $query_id AND `" SCOPE_COLUMN_NAME "` = $scope;\n"
"SELECT `" OWNER_COLUMN_NAME "`\n"
"FROM `" PENDING_SMALL_TABLE_NAME "` WHERE `" QUERY_ID_COLUMN_NAME "` = $query_id AND `" SCOPE_COLUMN_NAME "` = $scope;\n"
- );
+ );
auto prepareParams = [=](const TVector<TResultSet>& resultSets) {
TString selectedOwner;
@@ -316,22 +316,22 @@ std::tuple<TString, TParams, const std::function<std::pair<TString, NYdb::TParam
}
TSqlQueryBuilder writeQueryBuilder(tablePathPrefix, "SoftPingTask(write)");
- writeQueryBuilder.AddTimestamp("now", request->ResignQuery ? TInstant::Zero() : TInstant::Now());
- writeQueryBuilder.AddString("scope", request->Scope);
- writeQueryBuilder.AddString("query_id", request->QueryId);
- writeQueryBuilder.AddString("owner", request->Owner);
+ writeQueryBuilder.AddTimestamp("now", request->ResignQuery ? TInstant::Zero() : TInstant::Now());
+ writeQueryBuilder.AddString("scope", request->Scope);
+ writeQueryBuilder.AddString("query_id", request->QueryId);
+ writeQueryBuilder.AddString("owner", request->Owner);
const TString updateResignQueryFlag = request->ResignQuery ? ", `" IS_RESIGN_QUERY_COLUMN_NAME "` = true" : "";
- writeQueryBuilder.AddText(
- "UPDATE `" PENDING_SMALL_TABLE_NAME "` SET `" LAST_SEEN_AT_COLUMN_NAME "` = $now " + updateResignQueryFlag + "\n"
+ writeQueryBuilder.AddText(
+ "UPDATE `" PENDING_SMALL_TABLE_NAME "` SET `" LAST_SEEN_AT_COLUMN_NAME "` = $now " + updateResignQueryFlag + "\n"
"WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
);
- const auto writeQuery = writeQueryBuilder.Build();
- return std::make_pair(writeQuery.Sql, writeQuery.Params);
+ const auto writeQuery = writeQueryBuilder.Build();
+ return std::make_pair(writeQuery.Sql, writeQuery.Params);
};
- const auto readQuery = readQueryBuilder.Build();
- return std::make_tuple(readQuery.Sql, readQuery.Params, prepareParams);
+ const auto readQuery = readQueryBuilder.Build();
+ return std::make_tuple(readQuery.Sql, readQuery.Params, prepareParams);
}
void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvPingTaskRequest::TPtr& ev)
@@ -364,13 +364,13 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvPingTaskReq
if (request->Status)
FinalStatusCounters.IncByStatus(*request->Status);
auto pingTaskParams = DoesPingTaskUpdateQueriesTable(request) ?
- ConstructHardPingTask(request, response, YdbConnection->TablePathPrefix, Config.AutomaticQueriesTtl) :
+ ConstructHardPingTask(request, response, YdbConnection->TablePathPrefix, Config.AutomaticQueriesTtl) :
ConstructSoftPingTask(request, response, YdbConnection->TablePathPrefix);
auto readQuery = std::get<0>(pingTaskParams); // Use std::get for win compiler
auto readParams = std::get<1>(pingTaskParams);
auto prepareParams = std::get<2>(pingTaskParams);
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
auto result = ReadModifyWrite(NActors::TActivationContext::ActorSystem(), readQuery, readParams, prepareParams, requestCounters, debugInfo);
auto prepare = [response] { return std::make_tuple(*response); };
auto success = SendResponseTuple<TEvControlPlaneStorage::TEvPingTaskResponse, std::tuple<YandexQuery::QueryAction>>(
diff --git a/ydb/core/yq/libs/control_plane_storage/internal/task_result_write.cpp b/ydb/core/yq/libs/control_plane_storage/internal/task_result_write.cpp
index db945dcca9..5b3d00a5b9 100644
--- a/ydb/core/yq/libs/control_plane_storage/internal/task_result_write.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/internal/task_result_write.cpp
@@ -12,7 +12,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvWriteResult
const TString resultId = request.ResultId;
const int32_t resultSetId = request.ResultSetId;
const int64_t startRowId = request.StartRowId;
- const TInstant deadline = request.Deadline;
+ const TInstant deadline = request.Deadline;
const Ydb::ResultSet& resultSet = request.ResultSet;
const int byteSize = resultSet.ByteSize();
@@ -40,7 +40,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvWriteResult
itemsAsList.AddListItem()
.BeginStruct()
.AddMember("row_id").Int64(rowId)
- .AddMember("result_set").String(row.SerializeAsString())
+ .AddMember("result_set").String(row.SerializeAsString())
.EndStruct();
rowId++;
}
@@ -48,20 +48,20 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvWriteResult
itemsAsList.EndList();
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "TaskResultWrite");
- queryBuilder.AddString("result_id", resultId);
- queryBuilder.AddInt32("result_set_id", resultSetId);
- queryBuilder.AddTimestamp("expire_at", deadline);
- queryBuilder.AddValue("items", itemsAsList.Build());
+ queryBuilder.AddString("result_id", resultId);
+ queryBuilder.AddInt32("result_set_id", resultSetId);
+ queryBuilder.AddTimestamp("expire_at", deadline);
+ queryBuilder.AddValue("items", itemsAsList.Build());
- queryBuilder.AddText(
+ queryBuilder.AddText(
"UPSERT INTO `" RESULT_SETS_TABLE_NAME "`\n"
"SELECT $result_id as result_id, $result_set_id as result_set_id,\n"
- " T.*, $expire_at as expire_at FROM as_table($items) AS T;\n"
- );
+ " T.*, $expire_at as expire_at FROM as_table($items) AS T;\n"
+ );
- const auto query = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- TAsyncStatus result = Write(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo);
+ const auto query = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ TAsyncStatus result = Write(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo);
auto prepare = []() { return std::make_tuple<NYql::TIssues>(NYql::TIssues{}); };
auto success = SendResponseTuple<TEvControlPlaneStorage::TEvWriteResultDataResponse, std::tuple<NYql::TIssues>>(
"WriteResultDataRequest",
diff --git a/ydb/core/yq/libs/control_plane_storage/internal/utils.h b/ydb/core/yq/libs/control_plane_storage/internal/utils.h
index 2fd0f708d1..793c0c5053 100644
--- a/ydb/core/yq/libs/control_plane_storage/internal/utils.h
+++ b/ydb/core/yq/libs/control_plane_storage/internal/utils.h
@@ -1,11 +1,11 @@
#pragma once
-#include <tuple>
-
+#include <tuple>
+
#include <ydb/public/sdk/cpp/client/ydb_value/value.h>
-
+
#include <ydb/library/yql/public/issue/yql_issue_message.h>
-
+
#include <ydb/core/yq/libs/config/protos/issue_id.pb.h>
#include <ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_impl.h>
@@ -29,4 +29,4 @@ NYql::TIssues ValidateNodesHealthCheck(
const TString& instanceId,
const TString& hostName);
-};
+};
diff --git a/ydb/core/yq/libs/control_plane_storage/message_builders.h b/ydb/core/yq/libs/control_plane_storage/message_builders.h
index 75ee6f1f9f..ef7a629c70 100644
--- a/ydb/core/yq/libs/control_plane_storage/message_builders.h
+++ b/ydb/core/yq/libs/control_plane_storage/message_builders.h
@@ -1,131 +1,131 @@
-#pragma once
-
+#pragma once
+
#include <util/datetime/base.h>
-
+
#include <ydb/public/api/protos/yq.pb.h>
-
+
#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
-
-namespace NYq {
-
-// Queries
-
-class TCreateQueryBuilder {
- YandexQuery::CreateQueryRequest Request;
-
-public:
- TCreateQueryBuilder()
- {
- SetMode(YandexQuery::RUN);
- SetType(YandexQuery::QueryContent::ANALYTICS);
- SetName("test_query_name_1");
- SetVisibility(YandexQuery::Acl::SCOPE);
- SetText("SELECT 1;");
- }
-
- TCreateQueryBuilder& SetMode(YandexQuery::ExecuteMode mode)
- {
- Request.set_execute_mode(mode);
- return *this;
- }
-
- TCreateQueryBuilder& SetType(YandexQuery::QueryContent::QueryType type)
- {
- Request.mutable_content()->set_type(type);
- return *this;
- }
-
- TCreateQueryBuilder& SetAutomatic(bool automatic)
- {
- Request.mutable_content()->set_automatic(automatic);
- return *this;
- }
-
- TCreateQueryBuilder& SetVisibility(YandexQuery::Acl::Visibility visibility)
- {
- Request.mutable_content()->mutable_acl()->set_visibility(visibility);
- return *this;
- }
-
- TCreateQueryBuilder& SetText(const TString& content)
- {
- Request.mutable_content()->set_text(content);
- return *this;
- }
-
- TCreateQueryBuilder& SetName(const TString& name)
- {
- Request.mutable_content()->set_name(name);
- return *this;
- }
-
- TCreateQueryBuilder& SetIdempotencyKey(const TString& idempotencyKey)
- {
- Request.set_idempotency_key(idempotencyKey);
- return *this;
- }
-
- TCreateQueryBuilder& SetDisposition(const YandexQuery::StreamingDisposition& disposition)
- {
- *Request.mutable_disposition() = disposition;
- return *this;
- }
-
- TCreateQueryBuilder& ClearAcl()
- {
- Request.mutable_content()->clear_acl();
- return *this;
- }
-
- const YandexQuery::CreateQueryRequest& Build()
- {
- return Request;
- }
-};
-
-class TListQueriesBuilder {
- YandexQuery::ListQueriesRequest Request;
-
-public:
- TListQueriesBuilder()
- {
- SetLimit(10);
- }
-
- TListQueriesBuilder& SetPageToken(const TString& pageToken)
- {
- Request.set_page_token(pageToken);
- return *this;
- }
-
- TListQueriesBuilder& SetLimit(int64_t limit)
- {
- Request.set_limit(limit);
- return *this;
- }
-
- const YandexQuery::ListQueriesRequest& Build()
- {
- return Request;
- }
-};
-
-class TDescribeQueryBuilder {
- YandexQuery::DescribeQueryRequest Request;
-
-public:
- TDescribeQueryBuilder& SetQueryId(const TString& queryId)
- {
- Request.set_query_id(queryId);
- return *this;
- }
-
- const YandexQuery::DescribeQueryRequest& Build()
- {
- return Request;
- }
-};
-
+
+namespace NYq {
+
+// Queries
+
+class TCreateQueryBuilder {
+ YandexQuery::CreateQueryRequest Request;
+
+public:
+ TCreateQueryBuilder()
+ {
+ SetMode(YandexQuery::RUN);
+ SetType(YandexQuery::QueryContent::ANALYTICS);
+ SetName("test_query_name_1");
+ SetVisibility(YandexQuery::Acl::SCOPE);
+ SetText("SELECT 1;");
+ }
+
+ TCreateQueryBuilder& SetMode(YandexQuery::ExecuteMode mode)
+ {
+ Request.set_execute_mode(mode);
+ return *this;
+ }
+
+ TCreateQueryBuilder& SetType(YandexQuery::QueryContent::QueryType type)
+ {
+ Request.mutable_content()->set_type(type);
+ return *this;
+ }
+
+ TCreateQueryBuilder& SetAutomatic(bool automatic)
+ {
+ Request.mutable_content()->set_automatic(automatic);
+ return *this;
+ }
+
+ TCreateQueryBuilder& SetVisibility(YandexQuery::Acl::Visibility visibility)
+ {
+ Request.mutable_content()->mutable_acl()->set_visibility(visibility);
+ return *this;
+ }
+
+ TCreateQueryBuilder& SetText(const TString& content)
+ {
+ Request.mutable_content()->set_text(content);
+ return *this;
+ }
+
+ TCreateQueryBuilder& SetName(const TString& name)
+ {
+ Request.mutable_content()->set_name(name);
+ return *this;
+ }
+
+ TCreateQueryBuilder& SetIdempotencyKey(const TString& idempotencyKey)
+ {
+ Request.set_idempotency_key(idempotencyKey);
+ return *this;
+ }
+
+ TCreateQueryBuilder& SetDisposition(const YandexQuery::StreamingDisposition& disposition)
+ {
+ *Request.mutable_disposition() = disposition;
+ return *this;
+ }
+
+ TCreateQueryBuilder& ClearAcl()
+ {
+ Request.mutable_content()->clear_acl();
+ return *this;
+ }
+
+ const YandexQuery::CreateQueryRequest& Build()
+ {
+ return Request;
+ }
+};
+
+class TListQueriesBuilder {
+ YandexQuery::ListQueriesRequest Request;
+
+public:
+ TListQueriesBuilder()
+ {
+ SetLimit(10);
+ }
+
+ TListQueriesBuilder& SetPageToken(const TString& pageToken)
+ {
+ Request.set_page_token(pageToken);
+ return *this;
+ }
+
+ TListQueriesBuilder& SetLimit(int64_t limit)
+ {
+ Request.set_limit(limit);
+ return *this;
+ }
+
+ const YandexQuery::ListQueriesRequest& Build()
+ {
+ return Request;
+ }
+};
+
+class TDescribeQueryBuilder {
+ YandexQuery::DescribeQueryRequest Request;
+
+public:
+ TDescribeQueryBuilder& SetQueryId(const TString& queryId)
+ {
+ Request.set_query_id(queryId);
+ return *this;
+ }
+
+ const YandexQuery::DescribeQueryRequest& Build()
+ {
+ return Request;
+ }
+};
+
class TGetQueryStatusBuilder {
YandexQuery::GetQueryStatusRequest Request;
@@ -142,240 +142,240 @@ public:
}
};
-class TDeleteQueryBuilder {
- YandexQuery::DeleteQueryRequest Request;
-
-public:
- TDeleteQueryBuilder& SetQueryId(const TString& queryId)
- {
- Request.set_query_id(queryId);
- return *this;
- }
-
- TDeleteQueryBuilder& SetIdempotencyKey(const TString& idempotencyKey)
- {
- Request.set_idempotency_key(idempotencyKey);
- return *this;
- }
-
- TDeleteQueryBuilder& SetPreviousRevision(const int64_t periousRevision)
- {
- Request.set_previous_revision(periousRevision);
- return *this;
- }
-
- const YandexQuery::DeleteQueryRequest& Build()
- {
- return Request;
- }
-};
-
-class TModifyQueryBuilder {
- YandexQuery::ModifyQueryRequest Request;
-
-public:
- TModifyQueryBuilder()
- {
- SetName("test_query_name_2");
- SetMode(YandexQuery::RUN);
- SetType(YandexQuery::QueryContent::ANALYTICS);
- SetVisibility(YandexQuery::Acl::SCOPE);
- SetText("SELECT 1;");
- }
-
- TModifyQueryBuilder& SetQueryId(const TString& queryId)
- {
- Request.set_query_id(queryId);
- return *this;
- }
-
- TModifyQueryBuilder& SetType(YandexQuery::QueryContent::QueryType type)
- {
- Request.mutable_content()->set_type(type);
- return *this;
- }
-
- TModifyQueryBuilder& SetVisibility(YandexQuery::Acl::Visibility visibility)
- {
- Request.mutable_content()->mutable_acl()->set_visibility(visibility);
- return *this;
- }
-
- TModifyQueryBuilder& SetMode(YandexQuery::ExecuteMode mode)
- {
- Request.set_execute_mode(mode);
- return *this;
- }
-
+class TDeleteQueryBuilder {
+ YandexQuery::DeleteQueryRequest Request;
+
+public:
+ TDeleteQueryBuilder& SetQueryId(const TString& queryId)
+ {
+ Request.set_query_id(queryId);
+ return *this;
+ }
+
+ TDeleteQueryBuilder& SetIdempotencyKey(const TString& idempotencyKey)
+ {
+ Request.set_idempotency_key(idempotencyKey);
+ return *this;
+ }
+
+ TDeleteQueryBuilder& SetPreviousRevision(const int64_t periousRevision)
+ {
+ Request.set_previous_revision(periousRevision);
+ return *this;
+ }
+
+ const YandexQuery::DeleteQueryRequest& Build()
+ {
+ return Request;
+ }
+};
+
+class TModifyQueryBuilder {
+ YandexQuery::ModifyQueryRequest Request;
+
+public:
+ TModifyQueryBuilder()
+ {
+ SetName("test_query_name_2");
+ SetMode(YandexQuery::RUN);
+ SetType(YandexQuery::QueryContent::ANALYTICS);
+ SetVisibility(YandexQuery::Acl::SCOPE);
+ SetText("SELECT 1;");
+ }
+
+ TModifyQueryBuilder& SetQueryId(const TString& queryId)
+ {
+ Request.set_query_id(queryId);
+ return *this;
+ }
+
+ TModifyQueryBuilder& SetType(YandexQuery::QueryContent::QueryType type)
+ {
+ Request.mutable_content()->set_type(type);
+ return *this;
+ }
+
+ TModifyQueryBuilder& SetVisibility(YandexQuery::Acl::Visibility visibility)
+ {
+ Request.mutable_content()->mutable_acl()->set_visibility(visibility);
+ return *this;
+ }
+
+ TModifyQueryBuilder& SetMode(YandexQuery::ExecuteMode mode)
+ {
+ Request.set_execute_mode(mode);
+ return *this;
+ }
+
TModifyQueryBuilder& SetAutomatic(bool automatic)
{
Request.mutable_content()->set_automatic(automatic);
return *this;
}
- TModifyQueryBuilder& SetText(const TString& content)
- {
- Request.mutable_content()->set_text(content);
- return *this;
- }
-
- TModifyQueryBuilder& SetDisposition(const YandexQuery::StreamingDisposition& disposition)
- {
- *Request.mutable_disposition() = disposition;
- return *this;
- }
-
- TModifyQueryBuilder& SetState(const YandexQuery::StateLoadMode& state)
- {
+ TModifyQueryBuilder& SetText(const TString& content)
+ {
+ Request.mutable_content()->set_text(content);
+ return *this;
+ }
+
+ TModifyQueryBuilder& SetDisposition(const YandexQuery::StreamingDisposition& disposition)
+ {
+ *Request.mutable_disposition() = disposition;
+ return *this;
+ }
+
+ TModifyQueryBuilder& SetState(const YandexQuery::StateLoadMode& state)
+ {
Request.set_state_load_mode(state);
- return *this;
- }
-
- TModifyQueryBuilder& SetName(const TString& name)
- {
- Request.mutable_content()->set_name(name);
- return *this;
- }
-
- TModifyQueryBuilder& SetIdempotencyKey(const TString& idempotencyKey)
- {
- Request.set_idempotency_key(idempotencyKey);
- return *this;
- }
-
- TModifyQueryBuilder& SetPreviousRevision(const int64_t periousRevision)
- {
- Request.set_previous_revision(periousRevision);
- return *this;
- }
-
+ return *this;
+ }
+
+ TModifyQueryBuilder& SetName(const TString& name)
+ {
+ Request.mutable_content()->set_name(name);
+ return *this;
+ }
+
+ TModifyQueryBuilder& SetIdempotencyKey(const TString& idempotencyKey)
+ {
+ Request.set_idempotency_key(idempotencyKey);
+ return *this;
+ }
+
+ TModifyQueryBuilder& SetPreviousRevision(const int64_t periousRevision)
+ {
+ Request.set_previous_revision(periousRevision);
+ return *this;
+ }
+
TModifyQueryBuilder& SetDescription(const TString& description)
{
Request.mutable_content()->set_description(description);
return *this;
}
- const YandexQuery::ModifyQueryRequest& Build()
- {
- return Request;
- }
-};
-
-class TControlQueryBuilder {
- YandexQuery::ControlQueryRequest Request;
-
-public:
- TControlQueryBuilder()
- {
- SetAction(YandexQuery::ABORT);
- }
-
- TControlQueryBuilder& SetAction(const YandexQuery::QueryAction& action)
- {
- Request.set_action(action);
- return *this;
- }
-
- TControlQueryBuilder& SetQueryId(const TString& queryId)
- {
- Request.set_query_id(queryId);
- return *this;
- }
-
- TControlQueryBuilder& SetIdempotencyKey(const TString& idempotencyKey)
- {
- Request.set_idempotency_key(idempotencyKey);
- return *this;
- }
-
- TControlQueryBuilder& SetPreviousRevision(const int64_t periousRevision)
- {
- Request.set_previous_revision(periousRevision);
- return *this;
- }
-
- const YandexQuery::ControlQueryRequest& Build()
- {
- return Request;
- }
-};
-
-// Results
-
-class TGetResultDataBuilder {
- YandexQuery::GetResultDataRequest Request;
-
-public:
- TGetResultDataBuilder()
- {
- SetLimit(10);
- }
-
- TGetResultDataBuilder& SetQueryId(const TString& queryId)
- {
- Request.set_query_id(queryId);
- return *this;
- }
-
- TGetResultDataBuilder& SetResultSetIndex(int64_t resultSetIndex)
- {
- Request.set_result_set_index(resultSetIndex);
- return *this;
- }
-
- TGetResultDataBuilder& SetOffset(int64_t offset)
- {
- Request.set_offset(offset);
- return *this;
- }
-
- TGetResultDataBuilder& SetLimit(int64_t limit)
- {
- Request.set_limit(limit);
- return *this;
- }
-
- const YandexQuery::GetResultDataRequest& Build()
- {
- return Request;
- }
-};
-
-// Jobs
-
-class TListJobsBuilder {
- YandexQuery::ListJobsRequest Request;
-
-public:
- TListJobsBuilder()
- {
- SetLimit(10);
- }
-
- TListJobsBuilder& SetQueryId(const TString& queryId)
- {
- Request.mutable_filter()->set_query_id(queryId);
- return *this;
- }
-
- TListJobsBuilder& SetPageToken(const TString& pageToken)
- {
- Request.set_page_token(pageToken);
- return *this;
- }
-
- TListJobsBuilder& SetLimit(int64_t limit)
- {
- Request.set_limit(limit);
- return *this;
- }
-
- const YandexQuery::ListJobsRequest& Build()
- {
- return Request;
- }
-};
-
+ const YandexQuery::ModifyQueryRequest& Build()
+ {
+ return Request;
+ }
+};
+
+class TControlQueryBuilder {
+ YandexQuery::ControlQueryRequest Request;
+
+public:
+ TControlQueryBuilder()
+ {
+ SetAction(YandexQuery::ABORT);
+ }
+
+ TControlQueryBuilder& SetAction(const YandexQuery::QueryAction& action)
+ {
+ Request.set_action(action);
+ return *this;
+ }
+
+ TControlQueryBuilder& SetQueryId(const TString& queryId)
+ {
+ Request.set_query_id(queryId);
+ return *this;
+ }
+
+ TControlQueryBuilder& SetIdempotencyKey(const TString& idempotencyKey)
+ {
+ Request.set_idempotency_key(idempotencyKey);
+ return *this;
+ }
+
+ TControlQueryBuilder& SetPreviousRevision(const int64_t periousRevision)
+ {
+ Request.set_previous_revision(periousRevision);
+ return *this;
+ }
+
+ const YandexQuery::ControlQueryRequest& Build()
+ {
+ return Request;
+ }
+};
+
+// Results
+
+class TGetResultDataBuilder {
+ YandexQuery::GetResultDataRequest Request;
+
+public:
+ TGetResultDataBuilder()
+ {
+ SetLimit(10);
+ }
+
+ TGetResultDataBuilder& SetQueryId(const TString& queryId)
+ {
+ Request.set_query_id(queryId);
+ return *this;
+ }
+
+ TGetResultDataBuilder& SetResultSetIndex(int64_t resultSetIndex)
+ {
+ Request.set_result_set_index(resultSetIndex);
+ return *this;
+ }
+
+ TGetResultDataBuilder& SetOffset(int64_t offset)
+ {
+ Request.set_offset(offset);
+ return *this;
+ }
+
+ TGetResultDataBuilder& SetLimit(int64_t limit)
+ {
+ Request.set_limit(limit);
+ return *this;
+ }
+
+ const YandexQuery::GetResultDataRequest& Build()
+ {
+ return Request;
+ }
+};
+
+// Jobs
+
+class TListJobsBuilder {
+ YandexQuery::ListJobsRequest Request;
+
+public:
+ TListJobsBuilder()
+ {
+ SetLimit(10);
+ }
+
+ TListJobsBuilder& SetQueryId(const TString& queryId)
+ {
+ Request.mutable_filter()->set_query_id(queryId);
+ return *this;
+ }
+
+ TListJobsBuilder& SetPageToken(const TString& pageToken)
+ {
+ Request.set_page_token(pageToken);
+ return *this;
+ }
+
+ TListJobsBuilder& SetLimit(int64_t limit)
+ {
+ Request.set_limit(limit);
+ return *this;
+ }
+
+ const YandexQuery::ListJobsRequest& Build()
+ {
+ return Request;
+ }
+};
+
class TDescribeJobBuilder {
YandexQuery::DescribeJobRequest Request;
@@ -392,640 +392,640 @@ public:
}
};
-// Connections
-
-class TCreateConnectionBuilder {
- YandexQuery::CreateConnectionRequest Request;
-
-public:
- TCreateConnectionBuilder()
- {
- SetName("test_connection_name_1");
- SetVisibility(YandexQuery::Acl::SCOPE);
- CreateDataStreams("my_database_id", "");
- }
-
- TCreateConnectionBuilder& CreateYdb(const TString& database, const TString& endpoint, const TString& serviceAccount)
- {
- auto& ydb = *Request.mutable_content()->mutable_setting()->mutable_ydb_database();
- if (serviceAccount) {
- ydb.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
- } else {
- ydb.mutable_auth()->mutable_current_iam();
- }
-
- ydb.set_database(database);
- ydb.set_endpoint(endpoint);
- return *this;
- }
-
- TCreateConnectionBuilder& CreateYdb(const TString& databaseId, const TString& serviceAccount)
- {
- auto& ydb = *Request.mutable_content()->mutable_setting()->mutable_ydb_database();
- if (serviceAccount) {
- ydb.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
- } else {
- ydb.mutable_auth()->mutable_current_iam();
- }
-
- ydb.set_database_id(databaseId);
- return *this;
- }
-
- TCreateConnectionBuilder& CreateDataStreams(const TString& databaseId, const TString& serviceAccount)
- {
- auto& yds = *Request.mutable_content()->mutable_setting()->mutable_data_streams();
- if (serviceAccount) {
- yds.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
- } else {
- yds.mutable_auth()->mutable_current_iam();
- }
-
- yds.set_database_id(databaseId);
- return *this;
- }
-
- TCreateConnectionBuilder& CreateClickHouse(const TString& databaseId, const TString& login, const TString& password, const TString& serviceAccount)
- {
- auto& ch = *Request.mutable_content()->mutable_setting()->mutable_clickhouse_cluster();
- if (serviceAccount) {
- ch.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
- } else {
- ch.mutable_auth()->mutable_current_iam();
- }
-
- ch.set_database_id(databaseId);
- ch.set_login(login);
- ch.set_password(password);
- return *this;
- }
-
- TCreateConnectionBuilder& CreateObjectStorage(const TString& bucket, const TString& serviceAccount)
- {
- auto& os = *Request.mutable_content()->mutable_setting()->mutable_object_storage();
- if (serviceAccount) {
- os.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
- } else {
- os.mutable_auth()->mutable_current_iam();
- }
-
- os.set_bucket(bucket);
- return *this;
- }
-
- TCreateConnectionBuilder& SetVisibility(YandexQuery::Acl::Visibility visibility)
- {
- Request.mutable_content()->mutable_acl()->set_visibility(visibility);
- return *this;
- }
-
- TCreateConnectionBuilder& SetName(const TString& name)
- {
- Request.mutable_content()->set_name(name);
- return *this;
- }
-
- TCreateConnectionBuilder& SetDescription(const TString& description)
- {
- Request.mutable_content()->set_name(description);
- return *this;
- }
-
- TCreateConnectionBuilder& SetIdempotencyKey(const TString& idempotencyKey)
- {
- Request.set_idempotency_key(idempotencyKey);
- return *this;
- }
-
- const YandexQuery::CreateConnectionRequest& Build()
- {
- return Request;
- }
-};
-
-class TListConnectionsBuilder {
- YandexQuery::ListConnectionsRequest Request;
-
-public:
- TListConnectionsBuilder()
- {
- SetLimit(10);
- }
-
- TListConnectionsBuilder& SetPageToken(const TString& pageToken)
- {
- Request.set_page_token(pageToken);
- return *this;
- }
-
- TListConnectionsBuilder& SetLimit(int64_t limit)
- {
- Request.set_limit(limit);
- return *this;
- }
-
- const YandexQuery::ListConnectionsRequest& Build()
- {
- return Request;
- }
-};
-
-class TDescribeConnectionBuilder {
- YandexQuery::DescribeConnectionRequest Request;
-
-public:
- TDescribeConnectionBuilder& SetConnectionId(const TString& connectionId)
- {
- Request.set_connection_id(connectionId);
- return *this;
- }
-
- const YandexQuery::DescribeConnectionRequest& Build()
- {
- return Request;
- }
-};
-
-class TModifyConnectionBuilder {
- YandexQuery::ModifyConnectionRequest Request;
-
-public:
- TModifyConnectionBuilder()
- {
- SetName("test_connection_name_2");
- SetVisibility(YandexQuery::Acl::SCOPE);
- CreateDataStreams("my_database_id", "");
- }
-
- TModifyConnectionBuilder& CreateYdb(const TString& databaseId, const TString& serviceAccount)
- {
- auto& ydb = *Request.mutable_content()->mutable_setting()->mutable_ydb_database();
- if (serviceAccount) {
- ydb.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
- } else {
- ydb.mutable_auth()->mutable_current_iam();
- }
-
- ydb.set_database_id(databaseId);
- return *this;
- }
-
- TModifyConnectionBuilder& CreateDataStreams(const TString& databaseId, const TString& serviceAccount)
- {
- auto& yds = *Request.mutable_content()->mutable_setting()->mutable_data_streams();
- if (serviceAccount) {
- yds.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
- } else {
- yds.mutable_auth()->mutable_current_iam();
- }
-
- yds.set_database_id(databaseId);
- return *this;
- }
-
- TModifyConnectionBuilder& CreateClickHouse(const TString& databaseId, const TString& login, const TString& password, const TString& serviceAccount)
- {
- auto& ch = *Request.mutable_content()->mutable_setting()->mutable_clickhouse_cluster();
- if (serviceAccount) {
- ch.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
- } else {
- ch.mutable_auth()->mutable_current_iam();
- }
-
- ch.set_database_id(databaseId);
- ch.set_login(login);
- ch.set_password(password);
- return *this;
- }
-
- TModifyConnectionBuilder& CreateObjectStorage(const TString& bucket, const TString& serviceAccount)
- {
- auto& os = *Request.mutable_content()->mutable_setting()->mutable_object_storage();
- if (serviceAccount) {
- os.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
- } else {
- os.mutable_auth()->mutable_current_iam();
- }
-
- os.set_bucket(bucket);
- return *this;
- }
-
- TModifyConnectionBuilder& SetVisibility(YandexQuery::Acl::Visibility visibility)
- {
- Request.mutable_content()->mutable_acl()->set_visibility(visibility);
- return *this;
- }
-
- TModifyConnectionBuilder& SetName(const TString& name)
- {
- Request.mutable_content()->set_name(name);
- return *this;
- }
-
- TModifyConnectionBuilder& SetDescription(const TString& description)
- {
+// Connections
+
+class TCreateConnectionBuilder {
+ YandexQuery::CreateConnectionRequest Request;
+
+public:
+ TCreateConnectionBuilder()
+ {
+ SetName("test_connection_name_1");
+ SetVisibility(YandexQuery::Acl::SCOPE);
+ CreateDataStreams("my_database_id", "");
+ }
+
+ TCreateConnectionBuilder& CreateYdb(const TString& database, const TString& endpoint, const TString& serviceAccount)
+ {
+ auto& ydb = *Request.mutable_content()->mutable_setting()->mutable_ydb_database();
+ if (serviceAccount) {
+ ydb.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
+ } else {
+ ydb.mutable_auth()->mutable_current_iam();
+ }
+
+ ydb.set_database(database);
+ ydb.set_endpoint(endpoint);
+ return *this;
+ }
+
+ TCreateConnectionBuilder& CreateYdb(const TString& databaseId, const TString& serviceAccount)
+ {
+ auto& ydb = *Request.mutable_content()->mutable_setting()->mutable_ydb_database();
+ if (serviceAccount) {
+ ydb.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
+ } else {
+ ydb.mutable_auth()->mutable_current_iam();
+ }
+
+ ydb.set_database_id(databaseId);
+ return *this;
+ }
+
+ TCreateConnectionBuilder& CreateDataStreams(const TString& databaseId, const TString& serviceAccount)
+ {
+ auto& yds = *Request.mutable_content()->mutable_setting()->mutable_data_streams();
+ if (serviceAccount) {
+ yds.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
+ } else {
+ yds.mutable_auth()->mutable_current_iam();
+ }
+
+ yds.set_database_id(databaseId);
+ return *this;
+ }
+
+ TCreateConnectionBuilder& CreateClickHouse(const TString& databaseId, const TString& login, const TString& password, const TString& serviceAccount)
+ {
+ auto& ch = *Request.mutable_content()->mutable_setting()->mutable_clickhouse_cluster();
+ if (serviceAccount) {
+ ch.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
+ } else {
+ ch.mutable_auth()->mutable_current_iam();
+ }
+
+ ch.set_database_id(databaseId);
+ ch.set_login(login);
+ ch.set_password(password);
+ return *this;
+ }
+
+ TCreateConnectionBuilder& CreateObjectStorage(const TString& bucket, const TString& serviceAccount)
+ {
+ auto& os = *Request.mutable_content()->mutable_setting()->mutable_object_storage();
+ if (serviceAccount) {
+ os.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
+ } else {
+ os.mutable_auth()->mutable_current_iam();
+ }
+
+ os.set_bucket(bucket);
+ return *this;
+ }
+
+ TCreateConnectionBuilder& SetVisibility(YandexQuery::Acl::Visibility visibility)
+ {
+ Request.mutable_content()->mutable_acl()->set_visibility(visibility);
+ return *this;
+ }
+
+ TCreateConnectionBuilder& SetName(const TString& name)
+ {
+ Request.mutable_content()->set_name(name);
+ return *this;
+ }
+
+ TCreateConnectionBuilder& SetDescription(const TString& description)
+ {
+ Request.mutable_content()->set_name(description);
+ return *this;
+ }
+
+ TCreateConnectionBuilder& SetIdempotencyKey(const TString& idempotencyKey)
+ {
+ Request.set_idempotency_key(idempotencyKey);
+ return *this;
+ }
+
+ const YandexQuery::CreateConnectionRequest& Build()
+ {
+ return Request;
+ }
+};
+
+class TListConnectionsBuilder {
+ YandexQuery::ListConnectionsRequest Request;
+
+public:
+ TListConnectionsBuilder()
+ {
+ SetLimit(10);
+ }
+
+ TListConnectionsBuilder& SetPageToken(const TString& pageToken)
+ {
+ Request.set_page_token(pageToken);
+ return *this;
+ }
+
+ TListConnectionsBuilder& SetLimit(int64_t limit)
+ {
+ Request.set_limit(limit);
+ return *this;
+ }
+
+ const YandexQuery::ListConnectionsRequest& Build()
+ {
+ return Request;
+ }
+};
+
+class TDescribeConnectionBuilder {
+ YandexQuery::DescribeConnectionRequest Request;
+
+public:
+ TDescribeConnectionBuilder& SetConnectionId(const TString& connectionId)
+ {
+ Request.set_connection_id(connectionId);
+ return *this;
+ }
+
+ const YandexQuery::DescribeConnectionRequest& Build()
+ {
+ return Request;
+ }
+};
+
+class TModifyConnectionBuilder {
+ YandexQuery::ModifyConnectionRequest Request;
+
+public:
+ TModifyConnectionBuilder()
+ {
+ SetName("test_connection_name_2");
+ SetVisibility(YandexQuery::Acl::SCOPE);
+ CreateDataStreams("my_database_id", "");
+ }
+
+ TModifyConnectionBuilder& CreateYdb(const TString& databaseId, const TString& serviceAccount)
+ {
+ auto& ydb = *Request.mutable_content()->mutable_setting()->mutable_ydb_database();
+ if (serviceAccount) {
+ ydb.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
+ } else {
+ ydb.mutable_auth()->mutable_current_iam();
+ }
+
+ ydb.set_database_id(databaseId);
+ return *this;
+ }
+
+ TModifyConnectionBuilder& CreateDataStreams(const TString& databaseId, const TString& serviceAccount)
+ {
+ auto& yds = *Request.mutable_content()->mutable_setting()->mutable_data_streams();
+ if (serviceAccount) {
+ yds.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
+ } else {
+ yds.mutable_auth()->mutable_current_iam();
+ }
+
+ yds.set_database_id(databaseId);
+ return *this;
+ }
+
+ TModifyConnectionBuilder& CreateClickHouse(const TString& databaseId, const TString& login, const TString& password, const TString& serviceAccount)
+ {
+ auto& ch = *Request.mutable_content()->mutable_setting()->mutable_clickhouse_cluster();
+ if (serviceAccount) {
+ ch.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
+ } else {
+ ch.mutable_auth()->mutable_current_iam();
+ }
+
+ ch.set_database_id(databaseId);
+ ch.set_login(login);
+ ch.set_password(password);
+ return *this;
+ }
+
+ TModifyConnectionBuilder& CreateObjectStorage(const TString& bucket, const TString& serviceAccount)
+ {
+ auto& os = *Request.mutable_content()->mutable_setting()->mutable_object_storage();
+ if (serviceAccount) {
+ os.mutable_auth()->mutable_service_account()->set_id(serviceAccount);
+ } else {
+ os.mutable_auth()->mutable_current_iam();
+ }
+
+ os.set_bucket(bucket);
+ return *this;
+ }
+
+ TModifyConnectionBuilder& SetVisibility(YandexQuery::Acl::Visibility visibility)
+ {
+ Request.mutable_content()->mutable_acl()->set_visibility(visibility);
+ return *this;
+ }
+
+ TModifyConnectionBuilder& SetName(const TString& name)
+ {
+ Request.mutable_content()->set_name(name);
+ return *this;
+ }
+
+ TModifyConnectionBuilder& SetDescription(const TString& description)
+ {
Request.mutable_content()->set_description(description);
- return *this;
- }
-
- TModifyConnectionBuilder& SetIdempotencyKey(const TString& idempotencyKey)
- {
- Request.set_idempotency_key(idempotencyKey);
- return *this;
- }
-
- TModifyConnectionBuilder& SetConnectionId(const TString& connectionId)
- {
- Request.set_connection_id(connectionId);
- return *this;
- }
-
- TModifyConnectionBuilder& SetPreviousRevision(const int64_t periousRevision)
- {
- Request.set_previous_revision(periousRevision);
- return *this;
- }
-
- const YandexQuery::ModifyConnectionRequest& Build()
- {
- return Request;
- }
-};
-
-class TDeleteConnectionBuilder {
- YandexQuery::DeleteConnectionRequest Request;
-
-public:
- TDeleteConnectionBuilder& SetConnectionId(const TString& connectionId)
- {
- Request.set_connection_id(connectionId);
- return *this;
- }
-
- TDeleteConnectionBuilder& SetIdempotencyKey(const TString& idempotencyKey)
- {
- Request.set_idempotency_key(idempotencyKey);
- return *this;
- }
-
- TDeleteConnectionBuilder& SetPreviousRevision(const int64_t periousRevision)
- {
- Request.set_previous_revision(periousRevision);
- return *this;
- }
-
- const YandexQuery::DeleteConnectionRequest& Build()
- {
- return Request;
- }
-};
-
-// Bindings
-
-class TCreateBindingBuilder {
- YandexQuery::CreateBindingRequest Request;
-
-public:
- TCreateBindingBuilder()
- {
- SetName("test_binding_name_1");
- SetVisibility(YandexQuery::Acl::SCOPE);
- YandexQuery::DataStreamsBinding binding;
- binding.set_stream_name("my_stream");
- binding.set_format("json");
- binding.set_compression("zip");
+ return *this;
+ }
+
+ TModifyConnectionBuilder& SetIdempotencyKey(const TString& idempotencyKey)
+ {
+ Request.set_idempotency_key(idempotencyKey);
+ return *this;
+ }
+
+ TModifyConnectionBuilder& SetConnectionId(const TString& connectionId)
+ {
+ Request.set_connection_id(connectionId);
+ return *this;
+ }
+
+ TModifyConnectionBuilder& SetPreviousRevision(const int64_t periousRevision)
+ {
+ Request.set_previous_revision(periousRevision);
+ return *this;
+ }
+
+ const YandexQuery::ModifyConnectionRequest& Build()
+ {
+ return Request;
+ }
+};
+
+class TDeleteConnectionBuilder {
+ YandexQuery::DeleteConnectionRequest Request;
+
+public:
+ TDeleteConnectionBuilder& SetConnectionId(const TString& connectionId)
+ {
+ Request.set_connection_id(connectionId);
+ return *this;
+ }
+
+ TDeleteConnectionBuilder& SetIdempotencyKey(const TString& idempotencyKey)
+ {
+ Request.set_idempotency_key(idempotencyKey);
+ return *this;
+ }
+
+ TDeleteConnectionBuilder& SetPreviousRevision(const int64_t periousRevision)
+ {
+ Request.set_previous_revision(periousRevision);
+ return *this;
+ }
+
+ const YandexQuery::DeleteConnectionRequest& Build()
+ {
+ return Request;
+ }
+};
+
+// Bindings
+
+class TCreateBindingBuilder {
+ YandexQuery::CreateBindingRequest Request;
+
+public:
+ TCreateBindingBuilder()
+ {
+ SetName("test_binding_name_1");
+ SetVisibility(YandexQuery::Acl::SCOPE);
+ YandexQuery::DataStreamsBinding binding;
+ binding.set_stream_name("my_stream");
+ binding.set_format("json");
+ binding.set_compression("zip");
auto* column = binding.mutable_schema()->add_column();
column->set_name("sample_column_name");
column->mutable_type()->set_type_id(Ydb::Type::UINT64);
- CreateDataStreams(binding);
- }
-
- TCreateBindingBuilder& SetConnectionId(const TString& connectionId)
- {
- Request.mutable_content()->set_connection_id(connectionId);
- return *this;
- }
-
- TCreateBindingBuilder& CreateDataStreams(const YandexQuery::DataStreamsBinding& binding)
- {
- *Request.mutable_content()->mutable_setting()->mutable_data_streams() = binding;
- return *this;
- }
-
- TCreateBindingBuilder& CreateObjectStorage(const YandexQuery::ObjectStorageBinding& binding)
- {
- *Request.mutable_content()->mutable_setting()->mutable_object_storage() = binding;
- return *this;
- }
-
- TCreateBindingBuilder& SetVisibility(YandexQuery::Acl::Visibility visibility)
- {
- Request.mutable_content()->mutable_acl()->set_visibility(visibility);
- return *this;
- }
-
- TCreateBindingBuilder& SetName(const TString& name)
- {
- Request.mutable_content()->set_name(name);
- return *this;
- }
-
- TCreateBindingBuilder& SetDescription(const TString& description)
- {
- Request.mutable_content()->set_name(description);
- return *this;
- }
-
- TCreateBindingBuilder& SetIdempotencyKey(const TString& idempotencyKey)
- {
- Request.set_idempotency_key(idempotencyKey);
- return *this;
- }
-
- const YandexQuery::CreateBindingRequest& Build()
- {
- return Request;
- }
-};
-
-class TListBindingsBuilder {
- YandexQuery::ListBindingsRequest Request;
-
-public:
- TListBindingsBuilder()
- {
- SetLimit(10);
- }
-
- TListBindingsBuilder& SetPageToken(const TString& pageToken)
- {
- Request.set_page_token(pageToken);
- return *this;
- }
-
- TListBindingsBuilder& SetLimit(int64_t limit)
- {
- Request.set_limit(limit);
- return *this;
- }
-
- TListBindingsBuilder& SetConnectionId(const TString& connectionId)
- {
- Request.mutable_filter()->set_connection_id(connectionId);
- return *this;
- }
-
- const YandexQuery::ListBindingsRequest& Build()
- {
- return Request;
- }
-};
-
-class TDescribeBindingBuilder {
- YandexQuery::DescribeBindingRequest Request;
-
-public:
- TDescribeBindingBuilder& SetBindingId(const TString& bindingId)
- {
- Request.set_binding_id(bindingId);
- return *this;
- }
-
- const YandexQuery::DescribeBindingRequest& Build()
- {
- return Request;
- }
-};
-
-class TModifyBindingBuilder {
- YandexQuery::ModifyBindingRequest Request;
-
-public:
- TModifyBindingBuilder()
- {
- SetName("test_binding_name_2");
- SetVisibility(YandexQuery::Acl::SCOPE);
- YandexQuery::DataStreamsBinding binding;
- binding.set_stream_name("my_stream");
- binding.set_format("json");
- binding.set_compression("zip");
+ CreateDataStreams(binding);
+ }
+
+ TCreateBindingBuilder& SetConnectionId(const TString& connectionId)
+ {
+ Request.mutable_content()->set_connection_id(connectionId);
+ return *this;
+ }
+
+ TCreateBindingBuilder& CreateDataStreams(const YandexQuery::DataStreamsBinding& binding)
+ {
+ *Request.mutable_content()->mutable_setting()->mutable_data_streams() = binding;
+ return *this;
+ }
+
+ TCreateBindingBuilder& CreateObjectStorage(const YandexQuery::ObjectStorageBinding& binding)
+ {
+ *Request.mutable_content()->mutable_setting()->mutable_object_storage() = binding;
+ return *this;
+ }
+
+ TCreateBindingBuilder& SetVisibility(YandexQuery::Acl::Visibility visibility)
+ {
+ Request.mutable_content()->mutable_acl()->set_visibility(visibility);
+ return *this;
+ }
+
+ TCreateBindingBuilder& SetName(const TString& name)
+ {
+ Request.mutable_content()->set_name(name);
+ return *this;
+ }
+
+ TCreateBindingBuilder& SetDescription(const TString& description)
+ {
+ Request.mutable_content()->set_name(description);
+ return *this;
+ }
+
+ TCreateBindingBuilder& SetIdempotencyKey(const TString& idempotencyKey)
+ {
+ Request.set_idempotency_key(idempotencyKey);
+ return *this;
+ }
+
+ const YandexQuery::CreateBindingRequest& Build()
+ {
+ return Request;
+ }
+};
+
+class TListBindingsBuilder {
+ YandexQuery::ListBindingsRequest Request;
+
+public:
+ TListBindingsBuilder()
+ {
+ SetLimit(10);
+ }
+
+ TListBindingsBuilder& SetPageToken(const TString& pageToken)
+ {
+ Request.set_page_token(pageToken);
+ return *this;
+ }
+
+ TListBindingsBuilder& SetLimit(int64_t limit)
+ {
+ Request.set_limit(limit);
+ return *this;
+ }
+
+ TListBindingsBuilder& SetConnectionId(const TString& connectionId)
+ {
+ Request.mutable_filter()->set_connection_id(connectionId);
+ return *this;
+ }
+
+ const YandexQuery::ListBindingsRequest& Build()
+ {
+ return Request;
+ }
+};
+
+class TDescribeBindingBuilder {
+ YandexQuery::DescribeBindingRequest Request;
+
+public:
+ TDescribeBindingBuilder& SetBindingId(const TString& bindingId)
+ {
+ Request.set_binding_id(bindingId);
+ return *this;
+ }
+
+ const YandexQuery::DescribeBindingRequest& Build()
+ {
+ return Request;
+ }
+};
+
+class TModifyBindingBuilder {
+ YandexQuery::ModifyBindingRequest Request;
+
+public:
+ TModifyBindingBuilder()
+ {
+ SetName("test_binding_name_2");
+ SetVisibility(YandexQuery::Acl::SCOPE);
+ YandexQuery::DataStreamsBinding binding;
+ binding.set_stream_name("my_stream");
+ binding.set_format("json");
+ binding.set_compression("zip");
auto* column = binding.mutable_schema()->add_column();
column->set_name("sample_column_name");
column->mutable_type()->set_type_id(Ydb::Type::UINT64);
- CreateDataStreams(binding);
- }
-
- TModifyBindingBuilder& SetConnectionId(const TString& connectionId)
- {
- Request.mutable_content()->set_connection_id(connectionId);
- return *this;
- }
-
- TModifyBindingBuilder& CreateDataStreams(const YandexQuery::DataStreamsBinding& binding)
- {
- *Request.mutable_content()->mutable_setting()->mutable_data_streams() = binding;
- return *this;
- }
-
- TModifyBindingBuilder& CreateObjectStorage(const YandexQuery::ObjectStorageBinding& binding)
- {
- *Request.mutable_content()->mutable_setting()->mutable_object_storage() = binding;
- return *this;
- }
-
- TModifyBindingBuilder& SetVisibility(YandexQuery::Acl::Visibility visibility)
- {
- Request.mutable_content()->mutable_acl()->set_visibility(visibility);
- return *this;
- }
-
- TModifyBindingBuilder& SetName(const TString& name)
- {
- Request.mutable_content()->set_name(name);
- return *this;
- }
-
- TModifyBindingBuilder& SetDescription(const TString& description)
- {
- Request.mutable_content()->set_name(description);
- return *this;
- }
-
- TModifyBindingBuilder& SetIdempotencyKey(const TString& idempotencyKey)
- {
- Request.set_idempotency_key(idempotencyKey);
- return *this;
- }
-
- TModifyBindingBuilder& SetBindingId(const TString& bindingId)
- {
- Request.set_binding_id(bindingId);
- return *this;
- }
-
- TModifyBindingBuilder& SetPreviousRevision(const int64_t periousRevision)
- {
- Request.set_previous_revision(periousRevision);
- return *this;
- }
-
- const YandexQuery::ModifyBindingRequest& Build()
- {
- return Request;
- }
-};
-
-class TDeleteBindingBuilder {
- YandexQuery::DeleteBindingRequest Request;
-
-public:
- TDeleteBindingBuilder& SetBindingId(const TString& bindingId)
- {
- Request.set_binding_id(bindingId);
- return *this;
- }
-
- TDeleteBindingBuilder& SetIdempotencyKey(const TString& idempotencyKey)
- {
- Request.set_idempotency_key(idempotencyKey);
- return *this;
- }
-
- TDeleteBindingBuilder& SetPreviousRevision(const int64_t periousRevision)
- {
- Request.set_previous_revision(periousRevision);
- return *this;
- }
-
- const YandexQuery::DeleteBindingRequest& Build()
- {
- return Request;
- }
-};
-
-// internal
-
-class TWriteResultDataBuilder {
+ CreateDataStreams(binding);
+ }
+
+ TModifyBindingBuilder& SetConnectionId(const TString& connectionId)
+ {
+ Request.mutable_content()->set_connection_id(connectionId);
+ return *this;
+ }
+
+ TModifyBindingBuilder& CreateDataStreams(const YandexQuery::DataStreamsBinding& binding)
+ {
+ *Request.mutable_content()->mutable_setting()->mutable_data_streams() = binding;
+ return *this;
+ }
+
+ TModifyBindingBuilder& CreateObjectStorage(const YandexQuery::ObjectStorageBinding& binding)
+ {
+ *Request.mutable_content()->mutable_setting()->mutable_object_storage() = binding;
+ return *this;
+ }
+
+ TModifyBindingBuilder& SetVisibility(YandexQuery::Acl::Visibility visibility)
+ {
+ Request.mutable_content()->mutable_acl()->set_visibility(visibility);
+ return *this;
+ }
+
+ TModifyBindingBuilder& SetName(const TString& name)
+ {
+ Request.mutable_content()->set_name(name);
+ return *this;
+ }
+
+ TModifyBindingBuilder& SetDescription(const TString& description)
+ {
+ Request.mutable_content()->set_name(description);
+ return *this;
+ }
+
+ TModifyBindingBuilder& SetIdempotencyKey(const TString& idempotencyKey)
+ {
+ Request.set_idempotency_key(idempotencyKey);
+ return *this;
+ }
+
+ TModifyBindingBuilder& SetBindingId(const TString& bindingId)
+ {
+ Request.set_binding_id(bindingId);
+ return *this;
+ }
+
+ TModifyBindingBuilder& SetPreviousRevision(const int64_t periousRevision)
+ {
+ Request.set_previous_revision(periousRevision);
+ return *this;
+ }
+
+ const YandexQuery::ModifyBindingRequest& Build()
+ {
+ return Request;
+ }
+};
+
+class TDeleteBindingBuilder {
+ YandexQuery::DeleteBindingRequest Request;
+
+public:
+ TDeleteBindingBuilder& SetBindingId(const TString& bindingId)
+ {
+ Request.set_binding_id(bindingId);
+ return *this;
+ }
+
+ TDeleteBindingBuilder& SetIdempotencyKey(const TString& idempotencyKey)
+ {
+ Request.set_idempotency_key(idempotencyKey);
+ return *this;
+ }
+
+ TDeleteBindingBuilder& SetPreviousRevision(const int64_t periousRevision)
+ {
+ Request.set_previous_revision(periousRevision);
+ return *this;
+ }
+
+ const YandexQuery::DeleteBindingRequest& Build()
+ {
+ return Request;
+ }
+};
+
+// internal
+
+class TWriteResultDataBuilder {
TString ResultId;
- int32_t ResultSetId = 0;
- int64_t StartRowId = 0;
- TInstant Deadline;
- Ydb::ResultSet ResultSet;
-
-public:
- TWriteResultDataBuilder()
- {
- SetDeadline(TInstant::Now() + TDuration::Minutes(5));
- Ydb::ResultSet resultSet;
- auto& value = *resultSet.add_rows();
- value.set_int64_value(1);
- SetResultSet(resultSet);
- }
-
+ int32_t ResultSetId = 0;
+ int64_t StartRowId = 0;
+ TInstant Deadline;
+ Ydb::ResultSet ResultSet;
+
+public:
+ TWriteResultDataBuilder()
+ {
+ SetDeadline(TInstant::Now() + TDuration::Minutes(5));
+ Ydb::ResultSet resultSet;
+ auto& value = *resultSet.add_rows();
+ value.set_int64_value(1);
+ SetResultSet(resultSet);
+ }
+
TWriteResultDataBuilder& SetResultId(const TString& resultId)
- {
+ {
ResultId = resultId;
- return *this;
- }
-
- TWriteResultDataBuilder& SetResultSetIndex(int32_t resultSetId)
- {
- ResultSetId = resultSetId;
- return *this;
- }
-
- TWriteResultDataBuilder& SetStartRowId(int64_t startRowId)
- {
- StartRowId = startRowId;
- return *this;
- }
-
- TWriteResultDataBuilder& SetDeadline(const TInstant& deadline)
- {
- Deadline = deadline;
- return *this;
- }
-
- TWriteResultDataBuilder& SetResultSet(const Ydb::ResultSet& resultSet)
- {
- ResultSet = resultSet;
- return *this;
- }
-
- std::unique_ptr<TEvControlPlaneStorage::TEvWriteResultDataRequest> Build()
- {
+ return *this;
+ }
+
+ TWriteResultDataBuilder& SetResultSetIndex(int32_t resultSetId)
+ {
+ ResultSetId = resultSetId;
+ return *this;
+ }
+
+ TWriteResultDataBuilder& SetStartRowId(int64_t startRowId)
+ {
+ StartRowId = startRowId;
+ return *this;
+ }
+
+ TWriteResultDataBuilder& SetDeadline(const TInstant& deadline)
+ {
+ Deadline = deadline;
+ return *this;
+ }
+
+ TWriteResultDataBuilder& SetResultSet(const Ydb::ResultSet& resultSet)
+ {
+ ResultSet = resultSet;
+ return *this;
+ }
+
+ std::unique_ptr<TEvControlPlaneStorage::TEvWriteResultDataRequest> Build()
+ {
return std::make_unique<TEvControlPlaneStorage::TEvWriteResultDataRequest>(ResultId, ResultSetId, StartRowId, Deadline, ResultSet);
- }
-};
-
-class TGetTaskBuilder {
- TString Owner;
- TString HostName;
-
-public:
- TGetTaskBuilder()
- {
- SetOwner("owner");
- SetHostName("localhost");
- }
-
- TGetTaskBuilder& SetOwner(const TString& owner)
- {
- Owner = owner;
- return *this;
- }
-
- TGetTaskBuilder& SetHostName(const TString& hostName)
- {
- HostName = hostName;
- return *this;
- }
-
- std::unique_ptr<TEvControlPlaneStorage::TEvGetTaskRequest> Build()
- {
+ }
+};
+
+class TGetTaskBuilder {
+ TString Owner;
+ TString HostName;
+
+public:
+ TGetTaskBuilder()
+ {
+ SetOwner("owner");
+ SetHostName("localhost");
+ }
+
+ TGetTaskBuilder& SetOwner(const TString& owner)
+ {
+ Owner = owner;
+ return *this;
+ }
+
+ TGetTaskBuilder& SetHostName(const TString& hostName)
+ {
+ HostName = hostName;
+ return *this;
+ }
+
+ std::unique_ptr<TEvControlPlaneStorage::TEvGetTaskRequest> Build()
+ {
return std::make_unique<TEvControlPlaneStorage::TEvGetTaskRequest>(Owner, HostName);
- }
-};
-
-class TPingTaskBuilder {
- TString Scope;
- TString QueryId;
+ }
+};
+
+class TPingTaskBuilder {
+ TString Scope;
+ TString QueryId;
TString ResultId;
TString Owner;
TInstant Deadline;
- TMaybe<YandexQuery::QueryMeta::ComputeStatus> Status;
- TMaybe<NYql::TIssues> Issues;
- TMaybe<NYql::TIssues> TransientIssues;
- TMaybe<TString> Statistics;
+ TMaybe<YandexQuery::QueryMeta::ComputeStatus> Status;
+ TMaybe<NYql::TIssues> Issues;
+ TMaybe<NYql::TIssues> TransientIssues;
+ TMaybe<TString> Statistics;
TMaybe<TVector<YandexQuery::ResultSetMeta>> ResultSetMetas;
- TMaybe<TString> Ast;
- TMaybe<TString> Plan;
- TMaybe<TInstant> StartedAt;
- TMaybe<TInstant> FinishedAt;
+ TMaybe<TString> Ast;
+ TMaybe<TString> Plan;
+ TMaybe<TInstant> StartedAt;
+ TMaybe<TInstant> FinishedAt;
bool ResignQuery = false;
TVector<NYq::TEvControlPlaneStorage::TTopicConsumer> CreatedTopicConsumers;
TVector<TString> DqGraphs;
i32 DqGraphIndex = 0;
-
-public:
- TPingTaskBuilder()
+
+public:
+ TPingTaskBuilder()
{
SetDeadline(TInstant::Now() + TDuration::Minutes(5));
}
-
- TPingTaskBuilder& SetScope(const TString& scope)
- {
- Scope = scope;
- return *this;
- }
-
- TPingTaskBuilder& SetQueryId(const TString& queryId)
- {
- QueryId = queryId;
- return *this;
- }
-
+
+ TPingTaskBuilder& SetScope(const TString& scope)
+ {
+ Scope = scope;
+ return *this;
+ }
+
+ TPingTaskBuilder& SetQueryId(const TString& queryId)
+ {
+ QueryId = queryId;
+ return *this;
+ }
+
TPingTaskBuilder& SetResultId(const TString& resultId)
{
ResultId = resultId;
@@ -1033,71 +1033,71 @@ public:
}
TPingTaskBuilder& SetOwner(const TString& owner)
- {
+ {
Owner = owner;
- return *this;
- }
-
+ return *this;
+ }
+
TPingTaskBuilder& SetDeadline(const TInstant& deadline)
{
Deadline = deadline;
return *this;
}
- TPingTaskBuilder& SetStatus(const YandexQuery::QueryMeta::ComputeStatus& status)
- {
- Status = status;
- return *this;
- }
-
- TPingTaskBuilder& SetIssues(const NYql::TIssues& issues)
- {
- Issues = issues;
- return *this;
- }
-
- TPingTaskBuilder& SetTransientIssues(const NYql::TIssues& issues)
- {
- TransientIssues = issues;
- return *this;
- }
-
- TPingTaskBuilder& SetStatistics(const TString& statistics)
- {
- Statistics = statistics;
- return *this;
- }
-
+ TPingTaskBuilder& SetStatus(const YandexQuery::QueryMeta::ComputeStatus& status)
+ {
+ Status = status;
+ return *this;
+ }
+
+ TPingTaskBuilder& SetIssues(const NYql::TIssues& issues)
+ {
+ Issues = issues;
+ return *this;
+ }
+
+ TPingTaskBuilder& SetTransientIssues(const NYql::TIssues& issues)
+ {
+ TransientIssues = issues;
+ return *this;
+ }
+
+ TPingTaskBuilder& SetStatistics(const TString& statistics)
+ {
+ Statistics = statistics;
+ return *this;
+ }
+
TPingTaskBuilder& SetResultSetMetas(const TVector<YandexQuery::ResultSetMeta>& resultSetMetas)
- {
+ {
ResultSetMetas = resultSetMetas;
- return *this;
- }
-
- TPingTaskBuilder& SetAst(const TString& ast)
- {
- Ast = ast;
- return *this;
- }
-
- TPingTaskBuilder& SetPlan(const TString& plan)
- {
- Plan = plan;
- return *this;
- }
-
- TPingTaskBuilder& SetStatedAt(const TInstant& started)
- {
- StartedAt = started;
- return *this;
- }
-
- TPingTaskBuilder& SetFinishedAt(const TInstant& finished)
- {
- FinishedAt = finished;
- return *this;
- }
-
+ return *this;
+ }
+
+ TPingTaskBuilder& SetAst(const TString& ast)
+ {
+ Ast = ast;
+ return *this;
+ }
+
+ TPingTaskBuilder& SetPlan(const TString& plan)
+ {
+ Plan = plan;
+ return *this;
+ }
+
+ TPingTaskBuilder& SetStatedAt(const TInstant& started)
+ {
+ StartedAt = started;
+ return *this;
+ }
+
+ TPingTaskBuilder& SetFinishedAt(const TInstant& finished)
+ {
+ FinishedAt = finished;
+ return *this;
+ }
+
TPingTaskBuilder& SetResignQuery(bool resignQuery = true)
{
ResignQuery = resignQuery;
@@ -1122,35 +1122,35 @@ public:
return *this;
}
- std::unique_ptr<TEvControlPlaneStorage::TEvPingTaskRequest> Build()
- {
+ std::unique_ptr<TEvControlPlaneStorage::TEvPingTaskRequest> Build()
+ {
auto request = std::make_unique<TEvControlPlaneStorage::TEvPingTaskRequest>(Scope, QueryId, Owner, Deadline, ResultId);
- request->Status = Status;
- request->Issues = Issues;
- request->TransientIssues = TransientIssues;
- request->Statistics = Statistics;
+ request->Status = Status;
+ request->Issues = Issues;
+ request->TransientIssues = TransientIssues;
+ request->Statistics = Statistics;
request->ResultSetMetas = ResultSetMetas;
- request->Ast = Ast;
- request->Plan = Plan;
- request->StartedAt = StartedAt;
- request->FinishedAt = FinishedAt;
+ request->Ast = Ast;
+ request->Plan = Plan;
+ request->StartedAt = StartedAt;
+ request->FinishedAt = FinishedAt;
request->ResignQuery = ResignQuery;
request->CreatedTopicConsumers = CreatedTopicConsumers;
request->DqGraphs = DqGraphs;
request->DqGraphIndex = DqGraphIndex;
- return request;
- }
-};
-
+ return request;
+ }
+};
+
class TNodesHealthCheckBuilder {
TString Tenant;
- ui32 NodeId = 0;
+ ui32 NodeId = 0;
TString HostName;
TString InstanceId;
- ui64 ActiveWorkers = 0;
- ui64 MemoryLimit = 0;
- ui64 MemoryAllocated = 0;
-
+ ui64 ActiveWorkers = 0;
+ ui64 MemoryLimit = 0;
+ ui64 MemoryAllocated = 0;
+
public:
TNodesHealthCheckBuilder()
{}
diff --git a/ydb/core/yq/libs/control_plane_storage/probes.cpp b/ydb/core/yq/libs/control_plane_storage/probes.cpp
index 57c972306f..8b0fe2847d 100644
--- a/ydb/core/yq/libs/control_plane_storage/probes.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/probes.cpp
@@ -1,3 +1,3 @@
-#include "probes.h"
-
-LWTRACE_DEFINE_PROVIDER(YQ_CONTROL_PLANE_STORAGE_PROVIDER) \ No newline at end of file
+#include "probes.h"
+
+LWTRACE_DEFINE_PROVIDER(YQ_CONTROL_PLANE_STORAGE_PROVIDER) \ No newline at end of file
diff --git a/ydb/core/yq/libs/control_plane_storage/probes.h b/ydb/core/yq/libs/control_plane_storage/probes.h
index c82c68e5ef..6627755652 100644
--- a/ydb/core/yq/libs/control_plane_storage/probes.h
+++ b/ydb/core/yq/libs/control_plane_storage/probes.h
@@ -1,105 +1,105 @@
-#pragma once
-
-#include <library/cpp/lwtrace/all.h>
-
-#define YQ_CONTROL_PLANE_STORAGE_PROVIDER(PROBE, EVENT, GROUPS, TYPES, NAMES) \
- PROBE(CreateQueryRequest, \
- GROUPS(), \
- TYPES(TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "latencyMs", "size", "success")) \
- PROBE(ListQueriesRequest, \
- GROUPS(), \
- TYPES(TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "latencyMs", "size", "success")) \
- PROBE(DescribeQueryRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "queryId", "latencyMs", "size", "success")) \
+#pragma once
+
+#include <library/cpp/lwtrace/all.h>
+
+#define YQ_CONTROL_PLANE_STORAGE_PROVIDER(PROBE, EVENT, GROUPS, TYPES, NAMES) \
+ PROBE(CreateQueryRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "latencyMs", "size", "success")) \
+ PROBE(ListQueriesRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "latencyMs", "size", "success")) \
+ PROBE(DescribeQueryRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "queryId", "latencyMs", "size", "success")) \
PROBE(GetQueryStatusRequest, \
GROUPS(), \
TYPES(TString, TString, TString, TDuration, i64, bool), \
NAMES("scope", "user", "queryId", "latencyMs", "size", "success")) \
- PROBE(ModifyQueryRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "queryId", "latencyMs", "size", "success")) \
- PROBE(DeleteQueryRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "queryId", "latencyMs", "size", "success")) \
- PROBE(ControlQueryRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "queryId", "latencyMs", "size", "success")) \
- PROBE(GetResultDataRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, i32, i64, i64, TDuration, i64, bool), \
- NAMES("scope", "user", "queryId", "resultSetIndex", "offset", "limit", "latencyMs", "size", "success")) \
- PROBE(ListJobsRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "queryId", "latencyMs", "size", "success")) \
+ PROBE(ModifyQueryRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "queryId", "latencyMs", "size", "success")) \
+ PROBE(DeleteQueryRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "queryId", "latencyMs", "size", "success")) \
+ PROBE(ControlQueryRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "queryId", "latencyMs", "size", "success")) \
+ PROBE(GetResultDataRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, i32, i64, i64, TDuration, i64, bool), \
+ NAMES("scope", "user", "queryId", "resultSetIndex", "offset", "limit", "latencyMs", "size", "success")) \
+ PROBE(ListJobsRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "queryId", "latencyMs", "size", "success")) \
PROBE(DescribeJobRequest, \
GROUPS(), \
TYPES(TString, TString, TString, TDuration, i64, bool), \
NAMES("scope", "user", "jobId", "latencyMs", "size", "success")) \
- PROBE(CreateConnectionRequest, \
- GROUPS(), \
- TYPES(TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "latencyMs", "size", "success")) \
- PROBE(ListConnectionsRequest, \
- GROUPS(), \
- TYPES(TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "latencyMs", "size", "success")) \
- PROBE(DescribeConnectionRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "connectionId", "latencyMs", "size", "success")) \
- PROBE(ModifyConnectionRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "connectionId", "latencyMs", "size", "success")) \
- PROBE(DeleteConnectionRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "connectionId", "latencyMs", "size", "success")) \
- PROBE(CreateBindingRequest, \
- GROUPS(), \
- TYPES(TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "latencyMs", "size", "success")) \
- PROBE(ListBindingsRequest, \
- GROUPS(), \
- TYPES(TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "latencyMs", "size", "success")) \
- PROBE(DescribeBindingRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "bindingId", "latencyMs", "size", "success")) \
- PROBE(ModifyBindingRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "bindingId", "latencyMs", "size", "success")) \
- PROBE(DeleteBindingRequest, \
- GROUPS(), \
- TYPES(TString, TString, TString, TDuration, i64, bool), \
- NAMES("scope", "user", "bindingId", "latencyMs", "size", "success")) \
- PROBE(WriteResultDataRequest, \
- GROUPS(), \
- TYPES(TString, i32, i64, i64, TDuration, TInstant, i64, bool), \
+ PROBE(CreateConnectionRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "latencyMs", "size", "success")) \
+ PROBE(ListConnectionsRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "latencyMs", "size", "success")) \
+ PROBE(DescribeConnectionRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "connectionId", "latencyMs", "size", "success")) \
+ PROBE(ModifyConnectionRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "connectionId", "latencyMs", "size", "success")) \
+ PROBE(DeleteConnectionRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "connectionId", "latencyMs", "size", "success")) \
+ PROBE(CreateBindingRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "latencyMs", "size", "success")) \
+ PROBE(ListBindingsRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "latencyMs", "size", "success")) \
+ PROBE(DescribeBindingRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "bindingId", "latencyMs", "size", "success")) \
+ PROBE(ModifyBindingRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "bindingId", "latencyMs", "size", "success")) \
+ PROBE(DeleteBindingRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TString, TDuration, i64, bool), \
+ NAMES("scope", "user", "bindingId", "latencyMs", "size", "success")) \
+ PROBE(WriteResultDataRequest, \
+ GROUPS(), \
+ TYPES(TString, i32, i64, i64, TDuration, TInstant, i64, bool), \
NAMES("resultId", "resulSetId", "startRowId", "countRows", "latencyMs", "deadlineSec", "size", "success")) \
- PROBE(GetTaskRequest, \
- GROUPS(), \
- TYPES(TString, TString, TDuration, bool), \
- NAMES("owner", "hostName", "latencyMs", "success")) \
- PROBE(PingTaskRequest, \
- GROUPS(), \
- TYPES(TString, TDuration, bool), \
- NAMES("queryId", "latencyMs", "success")) \
+ PROBE(GetTaskRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TDuration, bool), \
+ NAMES("owner", "hostName", "latencyMs", "success")) \
+ PROBE(PingTaskRequest, \
+ GROUPS(), \
+ TYPES(TString, TDuration, bool), \
+ NAMES("queryId", "latencyMs", "success")) \
PROBE(NodesHealthCheckRequest, \
GROUPS(), \
TYPES(TString, ui32, TString, TString, TDuration, bool), \
NAMES("tenant", "nodeId", "instanceId", "hostName", "latencyMs", "success")) \
-
-// YQ_CONTROL_PLANE_STORAGE_PROVIDER
-
-LWTRACE_DECLARE_PROVIDER(YQ_CONTROL_PLANE_STORAGE_PROVIDER) \ No newline at end of file
+
+// YQ_CONTROL_PLANE_STORAGE_PROVIDER
+
+LWTRACE_DECLARE_PROVIDER(YQ_CONTROL_PLANE_STORAGE_PROVIDER) \ No newline at end of file
diff --git a/ydb/core/yq/libs/control_plane_storage/proto/ya.make b/ydb/core/yq/libs/control_plane_storage/proto/ya.make
index d0c3b4f541..60d0400fd2 100644
--- a/ydb/core/yq/libs/control_plane_storage/proto/ya.make
+++ b/ydb/core/yq/libs/control_plane_storage/proto/ya.make
@@ -1,17 +1,17 @@
OWNER(g:yq)
-
-PROTO_LIBRARY()
-
-PEERDIR(
+
+PROTO_LIBRARY()
+
+PEERDIR(
ydb/public/api/protos
ydb/library/yql/dq/proto
ydb/library/yql/providers/dq/api/protos
-)
-
-SRCS(
- yq_internal.proto
-)
-
-EXCLUDE_TAGS(GO_PROTO)
-
-END()
+)
+
+SRCS(
+ yq_internal.proto
+)
+
+EXCLUDE_TAGS(GO_PROTO)
+
+END()
diff --git a/ydb/core/yq/libs/control_plane_storage/proto/yq_internal.proto b/ydb/core/yq/libs/control_plane_storage/proto/yq_internal.proto
index e6ebff0c84..127a48e9f8 100644
--- a/ydb/core/yq/libs/control_plane_storage/proto/yq_internal.proto
+++ b/ydb/core/yq/libs/control_plane_storage/proto/yq_internal.proto
@@ -1,44 +1,44 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package YandexQuery.Internal;
-option java_package = "com.yandex.query.internal";
-option java_outer_classname = "YandexQueryInternalProtos";
-
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package YandexQuery.Internal;
+option java_package = "com.yandex.query.internal";
+option java_outer_classname = "YandexQueryInternalProtos";
+
import "ydb/library/yql/providers/dq/api/protos/service.proto";
import "ydb/library/yql/dq/proto/dq_tasks.proto";
import "ydb/public/api/protos/yq.proto";
import "ydb/public/api/protos/draft/yq_private.proto";
-
-message Consumer {
- string name = 1;
-}
-
-message QueryInternal {
- string token = 1;
+
+message Consumer {
+ string name = 1;
+}
+
+message QueryInternal {
+ string token = 1;
repeated NYql.NDqProto.TDqTask task = 2; // deprected and should not be used, will be removed in future
- repeated Yql.DqsProto.TAttr settings = 3;
- repeated Consumer consumer = 4;
- repeated YandexQuery.Connection connection = 5;
- repeated YandexQuery.Binding binding = 6;
- YandexQuery.QueryAction action = 7;
+ repeated Yql.DqsProto.TAttr settings = 3;
+ repeated Consumer consumer = 4;
+ repeated YandexQuery.Connection connection = 5;
+ repeated YandexQuery.Binding binding = 6;
+ YandexQuery.QueryAction action = 7;
string ast = 8; // deprected and should not be used, will be removed in future
ExecuteMode execute_mode = 9;
StateLoadMode state_load_mode = 10;
- string cloud_id = 11;
+ string cloud_id = 11;
repeated Yq.Private.TopicConsumer created_topic_consumers = 12;
repeated bytes dq_graph = 13;
int32 dq_graph_index = 14;
StreamingDisposition disposition = 15;
-}
-
-message JobInternal {
-}
-
-message ConnectionInternal {
- string cloud_id = 2;
-}
-
-message BindingInternal {
- string cloud_id = 2;
-}
+}
+
+message JobInternal {
+}
+
+message ConnectionInternal {
+ string cloud_id = 2;
+}
+
+message BindingInternal {
+ string cloud_id = 2;
+}
diff --git a/ydb/core/yq/libs/control_plane_storage/schema.h b/ydb/core/yq/libs/control_plane_storage/schema.h
index 613eb7bcc1..ab9509464b 100644
--- a/ydb/core/yq/libs/control_plane_storage/schema.h
+++ b/ydb/core/yq/libs/control_plane_storage/schema.h
@@ -1,70 +1,70 @@
-#pragma once
-
-namespace NYq {
-
-// tables
-#define QUERIES_TABLE_NAME "queries"
+#pragma once
+
+namespace NYq {
+
+// tables
+#define QUERIES_TABLE_NAME "queries"
#define PENDING_SMALL_TABLE_NAME "pending_small"
-#define CONNECTIONS_TABLE_NAME "connections"
-#define BINDINGS_TABLE_NAME "bindings"
-#define RESULT_SETS_TABLE_NAME "result_sets"
-#define IDEMPOTENCY_KEYS_TABLE_NAME "idempotency_keys"
-#define JOBS_TABLE_NAME "jobs"
-#define NODES_TABLE_NAME "nodes"
-
-// columns
-#define SCOPE_COLUMN_NAME "scope"
-#define VISIBILITY_COLUMN_NAME "visibility"
+#define CONNECTIONS_TABLE_NAME "connections"
+#define BINDINGS_TABLE_NAME "bindings"
+#define RESULT_SETS_TABLE_NAME "result_sets"
+#define IDEMPOTENCY_KEYS_TABLE_NAME "idempotency_keys"
+#define JOBS_TABLE_NAME "jobs"
+#define NODES_TABLE_NAME "nodes"
+
+// columns
+#define SCOPE_COLUMN_NAME "scope"
+#define VISIBILITY_COLUMN_NAME "visibility"
#define AUTOMATIC_COLUMN_NAME "automatic"
-#define USER_COLUMN_NAME "user"
-#define REVISION_COLUMN_NAME "revision"
+#define USER_COLUMN_NAME "user"
+#define REVISION_COLUMN_NAME "revision"
#define META_REVISION_COLUMN_NAME "meta_revision"
-#define INTERNAL_COLUMN_NAME "internal"
-#define GENERATION_COLUMN_NAME "generation"
+#define INTERNAL_COLUMN_NAME "internal"
+#define GENERATION_COLUMN_NAME "generation"
#define RETRY_COUNTER_COLUMN_NAME "retry_counter"
#define RETRY_COUNTER_UPDATE_COLUMN_NAME "retry_counter_updated_at"
#define IS_RESIGN_QUERY_COLUMN_NAME "is_resign_query"
-#define STATUS_COLUMN_NAME "status"
-#define QUERY_TYPE_COLUMN_NAME "query_type"
-#define EXECUTE_MODE_COLUMN_NAME "execute_mode"
-#define LAST_JOB_ID_COLUMN_NAME "last_job_id"
+#define STATUS_COLUMN_NAME "status"
+#define QUERY_TYPE_COLUMN_NAME "query_type"
+#define EXECUTE_MODE_COLUMN_NAME "execute_mode"
+#define LAST_JOB_ID_COLUMN_NAME "last_job_id"
#define RESULT_SETS_EXPIRE_AT_COLUMN_NAME "result_sets_expire_at"
-
-#define QUERY_ID_COLUMN_NAME "query_id"
-#define QUERY_COLUMN_NAME "query"
-
+
+#define QUERY_ID_COLUMN_NAME "query_id"
+#define QUERY_COLUMN_NAME "query"
+
#define CONNECTION_ID_COLUMN_NAME "connection_id"
-#define CONNECTION_COLUMN_NAME "connection"
+#define CONNECTION_COLUMN_NAME "connection"
#define CONNECTION_TYPE_COLUMN_NAME "connection_type"
-#define NAME_COLUMN_NAME "name"
-
-#define BINDING_ID_COLUMN_NAME "binding_id"
-#define BINDING_COLUMN_NAME "binding"
-
-#define IDEMPOTENCY_KEY_COLUMN_NAME "idempotency_key"
-#define EXPIRE_AT_COLUMN_NAME "expire_at"
-#define RESPONSE_COLUMN_NAME "response"
-
-#define RESULT_ID_COLUMN_NAME "result_id"
-#define RESULT_SET_ID_COLUMN_NAME "result_set_id"
-#define ROW_ID_COLUMN_NAME "row_id"
-#define RESULT_SET_COLUMN_NAME "result_set"
-
-#define JOB_COLUMN_NAME "job"
-#define JOB_ID_COLUMN_NAME "job_id"
-
-#define TENANT_COLUMN_NAME "tenant"
-#define INSTANCE_ID_COLUMN_NAME "instance_id"
-#define NODE_ID_COLUMN_NAME "node_id"
-#define ACTIVE_WORKERS_COLUMN_NAME "active_workers"
+#define NAME_COLUMN_NAME "name"
+
+#define BINDING_ID_COLUMN_NAME "binding_id"
+#define BINDING_COLUMN_NAME "binding"
+
+#define IDEMPOTENCY_KEY_COLUMN_NAME "idempotency_key"
+#define EXPIRE_AT_COLUMN_NAME "expire_at"
+#define RESPONSE_COLUMN_NAME "response"
+
+#define RESULT_ID_COLUMN_NAME "result_id"
+#define RESULT_SET_ID_COLUMN_NAME "result_set_id"
+#define ROW_ID_COLUMN_NAME "row_id"
+#define RESULT_SET_COLUMN_NAME "result_set"
+
+#define JOB_COLUMN_NAME "job"
+#define JOB_ID_COLUMN_NAME "job_id"
+
+#define TENANT_COLUMN_NAME "tenant"
+#define INSTANCE_ID_COLUMN_NAME "instance_id"
+#define NODE_ID_COLUMN_NAME "node_id"
+#define ACTIVE_WORKERS_COLUMN_NAME "active_workers"
#define MEMORY_LIMIT_COLUMN_NAME "memory_limit"
#define MEMORY_ALLOCATED_COLUMN_NAME "memory_allocated"
#define INTERCONNECT_PORT_COLUMN_NAME "interconnect_port"
#define NODE_ADDRESS_COLUMN_NAME "node_address"
-
-#define HOST_NAME_COLUMN_NAME "hostname"
-#define OWNER_COLUMN_NAME "owner"
-#define LAST_SEEN_AT_COLUMN_NAME "last_seen_at"
-
+
+#define HOST_NAME_COLUMN_NAME "hostname"
+#define OWNER_COLUMN_NAME "owner"
+#define LAST_SEEN_AT_COLUMN_NAME "last_seen_at"
+
} // namespace NYq
diff --git a/ydb/core/yq/libs/control_plane_storage/util.cpp b/ydb/core/yq/libs/control_plane_storage/util.cpp
index 288f25a1cb..5ad1166b4e 100644
--- a/ydb/core/yq/libs/control_plane_storage/util.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/util.cpp
@@ -1,48 +1,48 @@
-#include "util.h"
-
-#include <util/stream/file.h>
-#include <util/string/strip.h>
-
-namespace NYq {
-
+#include "util.h"
+
+#include <util/stream/file.h>
+#include <util/string/strip.h>
+
+namespace NYq {
+
bool IsTerminalStatus(YandexQuery::QueryMeta::ComputeStatus status)
{
return IsIn({ YandexQuery::QueryMeta::ABORTED_BY_USER, YandexQuery::QueryMeta::ABORTED_BY_SYSTEM,
YandexQuery::QueryMeta::COMPLETED, YandexQuery::QueryMeta::FAILED }, status);
}
-TDuration GetDuration(const TString& value, const TDuration& defaultValue)
-{
- TDuration result = defaultValue;
- TDuration::TryParse(value, result);
- return result;
-}
-
-NConfig::TControlPlaneStorageConfig FillDefaultParameters(NConfig::TControlPlaneStorageConfig config)
-{
- if (!config.GetIdempotencyKeysTtl()) {
- config.SetIdempotencyKeysTtl("10m");
- }
-
- if (!config.GetMaxRequestSize()) {
- config.SetMaxRequestSize(7 * 1024 * 1024);
- }
-
- if (!config.GetMaxCountConnections()) {
- config.SetMaxCountConnections(1000000);
- }
-
- if (!config.GetMaxCountQueries()) {
- config.SetMaxCountQueries(1000000);
- }
-
- if (!config.GetMaxCountBindings()) {
- config.SetMaxCountBindings(1000000);
- }
-
- if (!config.GetMaxCountJobs()) {
- config.SetMaxCountJobs(20);
- }
+TDuration GetDuration(const TString& value, const TDuration& defaultValue)
+{
+ TDuration result = defaultValue;
+ TDuration::TryParse(value, result);
+ return result;
+}
+
+NConfig::TControlPlaneStorageConfig FillDefaultParameters(NConfig::TControlPlaneStorageConfig config)
+{
+ if (!config.GetIdempotencyKeysTtl()) {
+ config.SetIdempotencyKeysTtl("10m");
+ }
+
+ if (!config.GetMaxRequestSize()) {
+ config.SetMaxRequestSize(7 * 1024 * 1024);
+ }
+
+ if (!config.GetMaxCountConnections()) {
+ config.SetMaxCountConnections(1000000);
+ }
+
+ if (!config.GetMaxCountQueries()) {
+ config.SetMaxCountQueries(1000000);
+ }
+
+ if (!config.GetMaxCountBindings()) {
+ config.SetMaxCountBindings(1000000);
+ }
+
+ if (!config.GetMaxCountJobs()) {
+ config.SetMaxCountJobs(20);
+ }
if (!config.GetTasksBatchSize()) {
config.SetTasksBatchSize(100);
@@ -64,33 +64,33 @@ NConfig::TControlPlaneStorageConfig FillDefaultParameters(NConfig::TControlPlane
config.SetStreamingRetryCounterLimit(20);
}
- if (!config.GetAnalyticsRetryCounterUpdateTime()) {
- config.SetAnalyticsRetryCounterUpdateTime("1d");
+ if (!config.GetAnalyticsRetryCounterUpdateTime()) {
+ config.SetAnalyticsRetryCounterUpdateTime("1d");
}
- if (!config.GetStreamingRetryCounterUpdateTime()) {
- config.SetStreamingRetryCounterUpdateTime("1d");
+ if (!config.GetStreamingRetryCounterUpdateTime()) {
+ config.SetStreamingRetryCounterUpdateTime("1d");
}
if (!config.GetAutomaticQueriesTtl()) {
config.SetAutomaticQueriesTtl("1d");
}
- if (!config.GetTaskLeaseTtl()) {
- config.SetTaskLeaseTtl("30s");
- }
-
- if (!config.GetStorage().GetToken() && config.GetStorage().GetOAuthFile()) {
- config.MutableStorage()->SetToken(StripString(TFileInput(config.GetStorage().GetOAuthFile()).ReadAll()));
+ if (!config.GetTaskLeaseTtl()) {
+ config.SetTaskLeaseTtl("30s");
}
+
+ if (!config.GetStorage().GetToken() && config.GetStorage().GetOAuthFile()) {
+ config.MutableStorage()->SetToken(StripString(TFileInput(config.GetStorage().GetOAuthFile()).ReadAll()));
+ }
if (!config.GetResultSetsTtl()) {
config.SetResultSetsTtl("1d");
}
-
- return config;
-}
-
+
+ return config;
+}
+
bool DoesPingTaskUpdateQueriesTable(const TEvControlPlaneStorage::TEvPingTaskRequest* request) {
if (!request) {
return false;
@@ -127,4 +127,4 @@ std::pair<TString, TString> SplitId(const TString& id, char delim) {
(it != id.end() ? id.substr(it - id.begin() + 1) : TString{""}));
}
-} //namespace NYq
+} //namespace NYq
diff --git a/ydb/core/yq/libs/control_plane_storage/util.h b/ydb/core/yq/libs/control_plane_storage/util.h
index 8deddc25ca..95513cecee 100644
--- a/ydb/core/yq/libs/control_plane_storage/util.h
+++ b/ydb/core/yq/libs/control_plane_storage/util.h
@@ -1,29 +1,29 @@
-#pragma once
-
+#pragma once
+
#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
-
-#include <util/datetime/base.h>
-
-#include <contrib/libs/protobuf/src/google/protobuf/timestamp.pb.h>
-
+
+#include <util/datetime/base.h>
+
+#include <contrib/libs/protobuf/src/google/protobuf/timestamp.pb.h>
+
#include <ydb/core/yq/libs/config/protos/control_plane_storage.pb.h>
-
-namespace NYq {
-
+
+namespace NYq {
+
bool IsTerminalStatus(YandexQuery::QueryMeta::ComputeStatus status);
-TDuration GetDuration(const TString& value, const TDuration& defaultValue);
-
-NConfig::TControlPlaneStorageConfig FillDefaultParameters(NConfig::TControlPlaneStorageConfig config);
-
-template<std::size_t K, typename T, std::size_t N>
-auto CreateArray(const T(&list)[N]) -> std::array<T, K> {
- static_assert(N == K, "not valid array size");
- std::array<T, K> result;
- std::copy(std::begin(list), std::end(list), std::begin(result));
- return result;
-}
-
+TDuration GetDuration(const TString& value, const TDuration& defaultValue);
+
+NConfig::TControlPlaneStorageConfig FillDefaultParameters(NConfig::TControlPlaneStorageConfig config);
+
+template<std::size_t K, typename T, std::size_t N>
+auto CreateArray(const T(&list)[N]) -> std::array<T, K> {
+ static_assert(N == K, "not valid array size");
+ std::array<T, K> result;
+ std::copy(std::begin(list), std::end(list), std::begin(result));
+ return result;
+}
+
bool DoesPingTaskUpdateQueriesTable(const TEvControlPlaneStorage::TEvPingTaskRequest* request);
NYdb::TValue PackItemsToList(const TVector<NYdb::TValue>& items);
diff --git a/ydb/core/yq/libs/control_plane_storage/validators.cpp b/ydb/core/yq/libs/control_plane_storage/validators.cpp
index 946ecfc3bd..7926da18b5 100644
--- a/ydb/core/yq/libs/control_plane_storage/validators.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/validators.cpp
@@ -1,347 +1,347 @@
-#include "validators.h"
-#include "ydb_control_plane_storage_impl.h"
-
+#include "validators.h"
+#include "ydb_control_plane_storage_impl.h"
+
#include <ydb/public/api/protos/yq.pb.h>
-
+
#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
#include <ydb/core/yq/libs/db_schema/db_schema.h>
-
-namespace NYq {
-
-TValidationQuery CreateUniqueNameValidator(const TString& tableName,
- YandexQuery::Acl::Visibility visibility,
- const TString& scope,
- const TString& name,
- const TString& user,
- const TString& error,
- const TString& tablePathPrefix) {
-
- TSqlQueryBuilder queryBuilder(tablePathPrefix);
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("name", name);
- queryBuilder.AddInt64("visibility", visibility);
- queryBuilder.AddText(
- "SELECT COUNT(*) AS count\n"
- "FROM `" + tableName + "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" NAME_COLUMN_NAME "` = $name AND `" VISIBILITY_COLUMN_NAME "` = $visibility"
- );
-
- if (visibility != YandexQuery::Acl::SCOPE) {
- queryBuilder.AddString("user", user);
- queryBuilder.AddText(" AND `" USER_COLUMN_NAME "` = $user");
- }
-
- auto validator = [error](NYdb::NTable::TDataQueryResult result) {
- const auto& resultSets = result.GetResultSets();
- if (resultSets.size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
- }
-
- TResultSetParser parser(resultSets.front());
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Not valid number of lines, one is expected. Please contact internal support";
- }
-
- ui64 countNames = parser.ColumnParser("count").GetUint64();
- if (countNames != 0) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << error;
- }
-
- return false;
- };
- const auto query = queryBuilder.Build();
- return {query.Sql, query.Params, validator};
-}
-
-TValidationQuery CreateModifyUniqueNameValidator(const TString& tableName,
- const TString& idColumnName,
- YandexQuery::Acl::Visibility visibility,
- const TString& scope,
- const TString& name,
- const TString& user,
- const TString& id,
- const TString& error,
- const TString& tablePathPrefix) {
- TSqlQueryBuilder queryBuilder(tablePathPrefix);
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("name", name);
- queryBuilder.AddString("id", id);
- queryBuilder.AddInt64("visibility", visibility);
- queryBuilder.AddText(
- "SELECT `" VISIBILITY_COLUMN_NAME "`, `" NAME_COLUMN_NAME "`\n"
- "FROM `" + tableName + "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" + idColumnName + "` = $id;\n"
- "SELECT COUNT(*) as count\n"
- "FROM `" + tableName + "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" NAME_COLUMN_NAME "` = $name AND `" VISIBILITY_COLUMN_NAME "` = $visibility"
- );
-
- if (visibility != YandexQuery::Acl::SCOPE) {
- queryBuilder.AddString("user", user);
- queryBuilder.AddText(" AND `" USER_COLUMN_NAME "` = $user");
- }
-
- auto validator = [error, visibility, name](NYdb::NTable::TDataQueryResult result) {
- const auto& resultSets = result.GetResultSets();
- if (resultSets.size() != 2) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 2 but equal " << resultSets.size() << ". Please contact internal support";
- }
-
- {
- TResultSetParser parser(resultSets.front());
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Not valid number of lines, one is expected. Please contact internal support";
- }
-
- YandexQuery::Acl::Visibility oldVisibility = static_cast<YandexQuery::Acl::Visibility>(parser.ColumnParser(VISIBILITY_COLUMN_NAME).GetOptionalInt64().GetOrElse(YandexQuery::Acl::VISIBILITY_UNSPECIFIED));
- TString oldName = parser.ColumnParser(NAME_COLUMN_NAME).GetOptionalString().GetOrElse("");
-
- if (oldVisibility == visibility && oldName == name) {
- return false;
- }
- }
-
- TResultSetParser parser(resultSets.back());
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Not valid number of lines, one is expected. Please contact internal support";
- }
-
- ui64 countNames = parser.ColumnParser("count").GetUint64();
- if (countNames != 0) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << error;
- }
-
- return false;
- };
-
- const auto query = queryBuilder.Build();
- return {query.Sql, query.Params, validator};
-}
-
-TValidationQuery CreateCountEntitiesValidator(const TString& scope,
- const TString& tableName,
- ui64 limit,
- const TString& error,
- const TString& tablePathPrefix) {
- TSqlQueryBuilder queryBuilder(tablePathPrefix);
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddText(
- "SELECT COUNT(*) as count\n"
- "FROM `" + tableName + "` WHERE `" SCOPE_COLUMN_NAME "` = $scope;"
- );
-
- auto validator = [error, limit](NYdb::NTable::TDataQueryResult result) {
- const auto& resultSets = result.GetResultSets();
- if (resultSets.size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
- }
-
- TResultSetParser parser(resultSets.front());
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Not valid number of lines, one is expected. Please contact internal support";
- }
-
- ui64 countEntities = parser.ColumnParser("count").GetUint64();
- if (countEntities >= limit) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << error;
- }
-
- return false;
- };
- const auto query = queryBuilder.Build();
- return {query.Sql, query.Params, validator};
-}
-
-TValidationQuery CreateRevisionValidator(const TString& tableName,
- const TString& columnName,
- const TString& scope,
- const TString& id,
- i64 previousRevision,
- const TString& error,
- const TString& tablePathPrefix) {
- TSqlQueryBuilder queryBuilder(tablePathPrefix);
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("id", id);
- queryBuilder.AddText(
- "SELECT `" REVISION_COLUMN_NAME "`\n"
- "FROM `" + tableName + "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" + columnName + "` = $id;"
- );
-
- auto validator = [error, previousRevision](NYdb::NTable::TDataQueryResult result) {
- const auto& resultSets = result.GetResultSets();
- if (resultSets.size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
- }
-
- TResultSetParser parser(resultSets.front());
- if (!parser.TryNextRow()) {
- return false;
- }
-
- i64 revision = parser.ColumnParser(REVISION_COLUMN_NAME).GetOptionalInt64().GetOrElse(0);
- if (revision != previousRevision) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << error;
- }
-
- return false;
- };
- const auto query = queryBuilder.Build();
- return {query.Sql, query.Params, validator};
-}
-
-static TValidationQuery CreateAccessValidatorImpl(const TString& tableName,
- const TString& columnName,
- const TString& scope,
- const TString& id,
- TString user,
- const TString& error,
- TPermissions permissions,
- const TString& tablePathPrefix,
- TPermissions::TPermission privatePermission,
- TPermissions::TPermission publicPermission) {
- TSqlQueryBuilder queryBuilder(tablePathPrefix);
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("id", id);
- queryBuilder.AddText(
- "SELECT `" VISIBILITY_COLUMN_NAME "`, `" USER_COLUMN_NAME "`\n"
- "FROM `" + tableName + "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" + columnName + "` = $id\n"
- );
-
- auto validator = [error, user, permissions, privatePermission, publicPermission](NYdb::NTable::TDataQueryResult result) {
- const auto& resultSets = result.GetResultSets();
- if (resultSets.size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
- }
-
- TResultSetParser parser(resultSets.front());
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << error;
- }
-
- TString queryUser = parser.ColumnParser(USER_COLUMN_NAME).GetOptionalString().GetOrElse("");
- YandexQuery::Acl::Visibility visibility = static_cast<YandexQuery::Acl::Visibility>(parser.ColumnParser(VISIBILITY_COLUMN_NAME).GetOptionalInt64().GetOrElse(YandexQuery::Acl::VISIBILITY_UNSPECIFIED));
- bool hasAccess = HasAccessImpl(permissions, visibility, queryUser, user, privatePermission, publicPermission);
- if (!hasAccess) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << error;
- }
-
- return false;
- };
- const auto query = queryBuilder.Build();
- return {query.Sql, query.Params, validator};
-}
-
-TValidationQuery CreateViewAccessValidator(const TString& tableName,
- const TString& columnName,
- const TString& scope,
- const TString& id,
- TString user,
- const TString& error,
- TPermissions permissions,
- const TString& tablePathPrefix) {
- return CreateAccessValidatorImpl(
- tableName, columnName, scope,
- id, user, error, permissions, tablePathPrefix,
- TPermissions::VIEW_PRIVATE, TPermissions::VIEW_PUBLIC);
-}
-
-TValidationQuery CreateManageAccessValidator(const TString& tableName,
- const TString& columnName,
- const TString& scope,
- const TString& id,
- TString user,
- const TString& error,
- TPermissions permissions,
- const TString& tablePathPrefix) {
- return CreateAccessValidatorImpl(
- tableName, columnName, scope,
- id, user, error, permissions, tablePathPrefix,
- TPermissions::MANAGE_PRIVATE, TPermissions::MANAGE_PUBLIC);
-}
-
-TValidationQuery CreateRelatedBindingsValidator(const TString& scope,
- const TString& connectionId,
- const TString& error,
- const TString& tablePathPrefix) {
- TSqlQueryBuilder queryBuilder(tablePathPrefix);
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("connection_id", connectionId);
- queryBuilder.AddText(
- "SELECT COUNT(*) as count\n"
- "FROM `" BINDINGS_TABLE_NAME "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" CONNECTION_ID_COLUMN_NAME "` = $connection_id;"
- );
-
- auto validator = [error](NYdb::NTable::TDataQueryResult result) {
- const auto& resultSets = result.GetResultSets();
- if (resultSets.size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
- }
-
- TResultSetParser parser(resultSets.front());
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Not valid number of lines, one is expected. Please contact internal support";
- }
-
- ui64 countEntities = parser.ColumnParser("count").GetUint64();
- if (countEntities != 0) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << error;
- }
-
- return false;
- };
- const auto query = queryBuilder.Build();
- return {query.Sql, query.Params, validator};
-}
-
-TValidationQuery CreateConnectionExistsValidator(const TString& scope,
- const TString& connectionId,
- const TString& error,
- TPermissions permissions,
- const TString& user,
- const TString& tablePathPrefix) {
- TSqlQueryBuilder queryBuilder(tablePathPrefix);
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("connection_id", connectionId);
- queryBuilder.AddText(
- "SELECT `" VISIBILITY_COLUMN_NAME "`, `" USER_COLUMN_NAME "`\n"
- "FROM `" CONNECTIONS_TABLE_NAME "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" CONNECTION_ID_COLUMN_NAME "` = $connection_id;"
- );
-
- auto validator = [error, user, permissions](NYdb::NTable::TDataQueryResult result) {
- const auto& resultSets = result.GetResultSets();
- if (resultSets.size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
- }
-
- TResultSetParser parser(resultSets.front());
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << error;
- }
-
- YandexQuery::Acl::Visibility connectionVisibility = static_cast<YandexQuery::Acl::Visibility>(parser.ColumnParser(VISIBILITY_COLUMN_NAME).GetOptionalInt64().GetOrElse(YandexQuery::Acl::VISIBILITY_UNSPECIFIED));
- TString connectionUser = parser.ColumnParser(USER_COLUMN_NAME).GetOptionalString().GetOrElse("");
-
- if (!HasManageAccess(permissions, connectionVisibility, connectionUser, user)) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << error;
- }
-
- return false;
- };
- const auto query = queryBuilder.Build();
- return {query.Sql, query.Params, validator};
-}
-
+
+namespace NYq {
+
+TValidationQuery CreateUniqueNameValidator(const TString& tableName,
+ YandexQuery::Acl::Visibility visibility,
+ const TString& scope,
+ const TString& name,
+ const TString& user,
+ const TString& error,
+ const TString& tablePathPrefix) {
+
+ TSqlQueryBuilder queryBuilder(tablePathPrefix);
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("name", name);
+ queryBuilder.AddInt64("visibility", visibility);
+ queryBuilder.AddText(
+ "SELECT COUNT(*) AS count\n"
+ "FROM `" + tableName + "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" NAME_COLUMN_NAME "` = $name AND `" VISIBILITY_COLUMN_NAME "` = $visibility"
+ );
+
+ if (visibility != YandexQuery::Acl::SCOPE) {
+ queryBuilder.AddString("user", user);
+ queryBuilder.AddText(" AND `" USER_COLUMN_NAME "` = $user");
+ }
+
+ auto validator = [error](NYdb::NTable::TDataQueryResult result) {
+ const auto& resultSets = result.GetResultSets();
+ if (resultSets.size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
+ }
+
+ TResultSetParser parser(resultSets.front());
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Not valid number of lines, one is expected. Please contact internal support";
+ }
+
+ ui64 countNames = parser.ColumnParser("count").GetUint64();
+ if (countNames != 0) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << error;
+ }
+
+ return false;
+ };
+ const auto query = queryBuilder.Build();
+ return {query.Sql, query.Params, validator};
+}
+
+TValidationQuery CreateModifyUniqueNameValidator(const TString& tableName,
+ const TString& idColumnName,
+ YandexQuery::Acl::Visibility visibility,
+ const TString& scope,
+ const TString& name,
+ const TString& user,
+ const TString& id,
+ const TString& error,
+ const TString& tablePathPrefix) {
+ TSqlQueryBuilder queryBuilder(tablePathPrefix);
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("name", name);
+ queryBuilder.AddString("id", id);
+ queryBuilder.AddInt64("visibility", visibility);
+ queryBuilder.AddText(
+ "SELECT `" VISIBILITY_COLUMN_NAME "`, `" NAME_COLUMN_NAME "`\n"
+ "FROM `" + tableName + "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" + idColumnName + "` = $id;\n"
+ "SELECT COUNT(*) as count\n"
+ "FROM `" + tableName + "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" NAME_COLUMN_NAME "` = $name AND `" VISIBILITY_COLUMN_NAME "` = $visibility"
+ );
+
+ if (visibility != YandexQuery::Acl::SCOPE) {
+ queryBuilder.AddString("user", user);
+ queryBuilder.AddText(" AND `" USER_COLUMN_NAME "` = $user");
+ }
+
+ auto validator = [error, visibility, name](NYdb::NTable::TDataQueryResult result) {
+ const auto& resultSets = result.GetResultSets();
+ if (resultSets.size() != 2) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 2 but equal " << resultSets.size() << ". Please contact internal support";
+ }
+
+ {
+ TResultSetParser parser(resultSets.front());
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Not valid number of lines, one is expected. Please contact internal support";
+ }
+
+ YandexQuery::Acl::Visibility oldVisibility = static_cast<YandexQuery::Acl::Visibility>(parser.ColumnParser(VISIBILITY_COLUMN_NAME).GetOptionalInt64().GetOrElse(YandexQuery::Acl::VISIBILITY_UNSPECIFIED));
+ TString oldName = parser.ColumnParser(NAME_COLUMN_NAME).GetOptionalString().GetOrElse("");
+
+ if (oldVisibility == visibility && oldName == name) {
+ return false;
+ }
+ }
+
+ TResultSetParser parser(resultSets.back());
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Not valid number of lines, one is expected. Please contact internal support";
+ }
+
+ ui64 countNames = parser.ColumnParser("count").GetUint64();
+ if (countNames != 0) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << error;
+ }
+
+ return false;
+ };
+
+ const auto query = queryBuilder.Build();
+ return {query.Sql, query.Params, validator};
+}
+
+TValidationQuery CreateCountEntitiesValidator(const TString& scope,
+ const TString& tableName,
+ ui64 limit,
+ const TString& error,
+ const TString& tablePathPrefix) {
+ TSqlQueryBuilder queryBuilder(tablePathPrefix);
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddText(
+ "SELECT COUNT(*) as count\n"
+ "FROM `" + tableName + "` WHERE `" SCOPE_COLUMN_NAME "` = $scope;"
+ );
+
+ auto validator = [error, limit](NYdb::NTable::TDataQueryResult result) {
+ const auto& resultSets = result.GetResultSets();
+ if (resultSets.size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
+ }
+
+ TResultSetParser parser(resultSets.front());
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Not valid number of lines, one is expected. Please contact internal support";
+ }
+
+ ui64 countEntities = parser.ColumnParser("count").GetUint64();
+ if (countEntities >= limit) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << error;
+ }
+
+ return false;
+ };
+ const auto query = queryBuilder.Build();
+ return {query.Sql, query.Params, validator};
+}
+
+TValidationQuery CreateRevisionValidator(const TString& tableName,
+ const TString& columnName,
+ const TString& scope,
+ const TString& id,
+ i64 previousRevision,
+ const TString& error,
+ const TString& tablePathPrefix) {
+ TSqlQueryBuilder queryBuilder(tablePathPrefix);
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("id", id);
+ queryBuilder.AddText(
+ "SELECT `" REVISION_COLUMN_NAME "`\n"
+ "FROM `" + tableName + "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" + columnName + "` = $id;"
+ );
+
+ auto validator = [error, previousRevision](NYdb::NTable::TDataQueryResult result) {
+ const auto& resultSets = result.GetResultSets();
+ if (resultSets.size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
+ }
+
+ TResultSetParser parser(resultSets.front());
+ if (!parser.TryNextRow()) {
+ return false;
+ }
+
+ i64 revision = parser.ColumnParser(REVISION_COLUMN_NAME).GetOptionalInt64().GetOrElse(0);
+ if (revision != previousRevision) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << error;
+ }
+
+ return false;
+ };
+ const auto query = queryBuilder.Build();
+ return {query.Sql, query.Params, validator};
+}
+
+static TValidationQuery CreateAccessValidatorImpl(const TString& tableName,
+ const TString& columnName,
+ const TString& scope,
+ const TString& id,
+ TString user,
+ const TString& error,
+ TPermissions permissions,
+ const TString& tablePathPrefix,
+ TPermissions::TPermission privatePermission,
+ TPermissions::TPermission publicPermission) {
+ TSqlQueryBuilder queryBuilder(tablePathPrefix);
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("id", id);
+ queryBuilder.AddText(
+ "SELECT `" VISIBILITY_COLUMN_NAME "`, `" USER_COLUMN_NAME "`\n"
+ "FROM `" + tableName + "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" + columnName + "` = $id\n"
+ );
+
+ auto validator = [error, user, permissions, privatePermission, publicPermission](NYdb::NTable::TDataQueryResult result) {
+ const auto& resultSets = result.GetResultSets();
+ if (resultSets.size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
+ }
+
+ TResultSetParser parser(resultSets.front());
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << error;
+ }
+
+ TString queryUser = parser.ColumnParser(USER_COLUMN_NAME).GetOptionalString().GetOrElse("");
+ YandexQuery::Acl::Visibility visibility = static_cast<YandexQuery::Acl::Visibility>(parser.ColumnParser(VISIBILITY_COLUMN_NAME).GetOptionalInt64().GetOrElse(YandexQuery::Acl::VISIBILITY_UNSPECIFIED));
+ bool hasAccess = HasAccessImpl(permissions, visibility, queryUser, user, privatePermission, publicPermission);
+ if (!hasAccess) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << error;
+ }
+
+ return false;
+ };
+ const auto query = queryBuilder.Build();
+ return {query.Sql, query.Params, validator};
+}
+
+TValidationQuery CreateViewAccessValidator(const TString& tableName,
+ const TString& columnName,
+ const TString& scope,
+ const TString& id,
+ TString user,
+ const TString& error,
+ TPermissions permissions,
+ const TString& tablePathPrefix) {
+ return CreateAccessValidatorImpl(
+ tableName, columnName, scope,
+ id, user, error, permissions, tablePathPrefix,
+ TPermissions::VIEW_PRIVATE, TPermissions::VIEW_PUBLIC);
+}
+
+TValidationQuery CreateManageAccessValidator(const TString& tableName,
+ const TString& columnName,
+ const TString& scope,
+ const TString& id,
+ TString user,
+ const TString& error,
+ TPermissions permissions,
+ const TString& tablePathPrefix) {
+ return CreateAccessValidatorImpl(
+ tableName, columnName, scope,
+ id, user, error, permissions, tablePathPrefix,
+ TPermissions::MANAGE_PRIVATE, TPermissions::MANAGE_PUBLIC);
+}
+
+TValidationQuery CreateRelatedBindingsValidator(const TString& scope,
+ const TString& connectionId,
+ const TString& error,
+ const TString& tablePathPrefix) {
+ TSqlQueryBuilder queryBuilder(tablePathPrefix);
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("connection_id", connectionId);
+ queryBuilder.AddText(
+ "SELECT COUNT(*) as count\n"
+ "FROM `" BINDINGS_TABLE_NAME "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" CONNECTION_ID_COLUMN_NAME "` = $connection_id;"
+ );
+
+ auto validator = [error](NYdb::NTable::TDataQueryResult result) {
+ const auto& resultSets = result.GetResultSets();
+ if (resultSets.size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
+ }
+
+ TResultSetParser parser(resultSets.front());
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Not valid number of lines, one is expected. Please contact internal support";
+ }
+
+ ui64 countEntities = parser.ColumnParser("count").GetUint64();
+ if (countEntities != 0) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << error;
+ }
+
+ return false;
+ };
+ const auto query = queryBuilder.Build();
+ return {query.Sql, query.Params, validator};
+}
+
+TValidationQuery CreateConnectionExistsValidator(const TString& scope,
+ const TString& connectionId,
+ const TString& error,
+ TPermissions permissions,
+ const TString& user,
+ const TString& tablePathPrefix) {
+ TSqlQueryBuilder queryBuilder(tablePathPrefix);
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("connection_id", connectionId);
+ queryBuilder.AddText(
+ "SELECT `" VISIBILITY_COLUMN_NAME "`, `" USER_COLUMN_NAME "`\n"
+ "FROM `" CONNECTIONS_TABLE_NAME "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" CONNECTION_ID_COLUMN_NAME "` = $connection_id;"
+ );
+
+ auto validator = [error, user, permissions](NYdb::NTable::TDataQueryResult result) {
+ const auto& resultSets = result.GetResultSets();
+ if (resultSets.size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
+ }
+
+ TResultSetParser parser(resultSets.front());
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << error;
+ }
+
+ YandexQuery::Acl::Visibility connectionVisibility = static_cast<YandexQuery::Acl::Visibility>(parser.ColumnParser(VISIBILITY_COLUMN_NAME).GetOptionalInt64().GetOrElse(YandexQuery::Acl::VISIBILITY_UNSPECIFIED));
+ TString connectionUser = parser.ColumnParser(USER_COLUMN_NAME).GetOptionalString().GetOrElse("");
+
+ if (!HasManageAccess(permissions, connectionVisibility, connectionUser, user)) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << error;
+ }
+
+ return false;
+ };
+ const auto query = queryBuilder.Build();
+ return {query.Sql, query.Params, validator};
+}
+
TValidationQuery CreateTtlValidator(const TString& tableName,
const TString& columnName,
const TString& scope,
const TString& id,
const TString& error,
const TString& tablePathPrefix) {
- TSqlQueryBuilder queryBuilder(tablePathPrefix);
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("id", id);
- queryBuilder.AddTimestamp("now", TInstant::Now());
- queryBuilder.AddText(
+ TSqlQueryBuilder queryBuilder(tablePathPrefix);
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("id", id);
+ queryBuilder.AddTimestamp("now", TInstant::Now());
+ queryBuilder.AddText(
"SELECT `" EXPIRE_AT_COLUMN_NAME "`\n"
- "FROM `" + tableName + "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" + columnName + "` = $id AND (`" EXPIRE_AT_COLUMN_NAME "` is NULL OR `" EXPIRE_AT_COLUMN_NAME "` > $now);\n"
- );
+ "FROM `" + tableName + "` WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" + columnName + "` = $id AND (`" EXPIRE_AT_COLUMN_NAME "` is NULL OR `" EXPIRE_AT_COLUMN_NAME "` > $now);\n"
+ );
auto validator = [error](NYdb::NTable::TDataQueryResult result) {
const auto& resultSets = result.GetResultSets();
@@ -356,8 +356,8 @@ TValidationQuery CreateTtlValidator(const TString& tableName,
return false;
};
- const auto query = queryBuilder.Build();
- return {query.Sql, query.Params, validator};
+ const auto query = queryBuilder.Build();
+ return {query.Sql, query.Params, validator};
}
-} // namespace NYq
+} // namespace NYq
diff --git a/ydb/core/yq/libs/control_plane_storage/validators.h b/ydb/core/yq/libs/control_plane_storage/validators.h
index 0b1fc32741..3cf7c0ac2c 100644
--- a/ydb/core/yq/libs/control_plane_storage/validators.h
+++ b/ydb/core/yq/libs/control_plane_storage/validators.h
@@ -1,92 +1,92 @@
-#pragma once
-
-#include "exceptions.h"
-#include "schema.h"
-
-#include <functional>
-
-#include <util/generic/fwd.h>
-#include <util/string/printf.h>
-
+#pragma once
+
+#include "exceptions.h"
+#include "schema.h"
+
+#include <functional>
+
+#include <util/generic/fwd.h>
+#include <util/string/printf.h>
+
#include <ydb/public/api/protos/yq.pb.h>
#include <ydb/public/sdk/cpp/client/ydb_params/params.h>
#include <ydb/public/sdk/cpp/client/ydb_params/params.h>
#include <ydb/public/sdk/cpp/client/ydb_result/result.h>
#include <ydb/public/sdk/cpp/client/ydb_table/table.h>
-
+
#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
#include <ydb/core/yq/libs/db_schema/db_schema.h>
-
-namespace NYq {
-
-struct TValidationQuery {
- TString Query;
- NYdb::TParams Params;
- std::function<bool(NYdb::NTable::TDataQueryResult)> Validator;
-};
-
-TValidationQuery CreateUniqueNameValidator(const TString& tableName,
- YandexQuery::Acl::Visibility visibility,
- const TString& scope,
- const TString& name,
- const TString& user,
- const TString& error,
- const TString& tablePathPrefix);
-
-TValidationQuery CreateModifyUniqueNameValidator(const TString& tableName,
- const TString& idColumnName,
- YandexQuery::Acl::Visibility visibility,
- const TString& scope,
- const TString& name,
- const TString& user,
- const TString& id,
- const TString& error,
- const TString& tablePathPrefix);
-
-TValidationQuery CreateCountEntitiesValidator(const TString& scope,
- const TString& tableName,
- ui64 limit,
- const TString& error,
- const TString& tablePathPrefix);
-
-TValidationQuery CreateRevisionValidator(const TString& tableName,
- const TString& columnName,
- const TString& scope,
- const TString& id,
- i64 previousRevision,
- const TString& error,
- const TString& tablePathPrefix);
-
-TValidationQuery CreateViewAccessValidator(const TString& tableName,
- const TString& columnName,
- const TString& scope,
- const TString& id,
- TString user,
- const TString& error,
- TPermissions permissions,
- const TString& tablePathPrefix);
-
-TValidationQuery CreateManageAccessValidator(const TString& tableName,
- const TString& columnName,
- const TString& scope,
- const TString& id,
- TString user,
- const TString& error,
- TPermissions permissions,
- const TString& tablePathPrefix);
-
-TValidationQuery CreateRelatedBindingsValidator(const TString& scope,
- const TString& connectionId,
- const TString& error,
- const TString& tablePathPrefix);
-
-TValidationQuery CreateConnectionExistsValidator(const TString& scope,
- const TString& connectionId,
- const TString& error,
- TPermissions permissions,
- const TString& user,
- const TString& tablePathPrefix);
-
+
+namespace NYq {
+
+struct TValidationQuery {
+ TString Query;
+ NYdb::TParams Params;
+ std::function<bool(NYdb::NTable::TDataQueryResult)> Validator;
+};
+
+TValidationQuery CreateUniqueNameValidator(const TString& tableName,
+ YandexQuery::Acl::Visibility visibility,
+ const TString& scope,
+ const TString& name,
+ const TString& user,
+ const TString& error,
+ const TString& tablePathPrefix);
+
+TValidationQuery CreateModifyUniqueNameValidator(const TString& tableName,
+ const TString& idColumnName,
+ YandexQuery::Acl::Visibility visibility,
+ const TString& scope,
+ const TString& name,
+ const TString& user,
+ const TString& id,
+ const TString& error,
+ const TString& tablePathPrefix);
+
+TValidationQuery CreateCountEntitiesValidator(const TString& scope,
+ const TString& tableName,
+ ui64 limit,
+ const TString& error,
+ const TString& tablePathPrefix);
+
+TValidationQuery CreateRevisionValidator(const TString& tableName,
+ const TString& columnName,
+ const TString& scope,
+ const TString& id,
+ i64 previousRevision,
+ const TString& error,
+ const TString& tablePathPrefix);
+
+TValidationQuery CreateViewAccessValidator(const TString& tableName,
+ const TString& columnName,
+ const TString& scope,
+ const TString& id,
+ TString user,
+ const TString& error,
+ TPermissions permissions,
+ const TString& tablePathPrefix);
+
+TValidationQuery CreateManageAccessValidator(const TString& tableName,
+ const TString& columnName,
+ const TString& scope,
+ const TString& id,
+ TString user,
+ const TString& error,
+ TPermissions permissions,
+ const TString& tablePathPrefix);
+
+TValidationQuery CreateRelatedBindingsValidator(const TString& scope,
+ const TString& connectionId,
+ const TString& error,
+ const TString& tablePathPrefix);
+
+TValidationQuery CreateConnectionExistsValidator(const TString& scope,
+ const TString& connectionId,
+ const TString& error,
+ TPermissions permissions,
+ const TString& user,
+ const TString& tablePathPrefix);
+
TValidationQuery CreateTtlValidator(const TString& tableName,
const TString& columnName,
const TString& scope,
@@ -94,74 +94,74 @@ TValidationQuery CreateTtlValidator(const TString& tableName,
const TString& error,
const TString& tablePathPrefix);
-template<typename T>
-TValidationQuery CreateIdempotencyKeyValidator(const TString& scope,
- const TString& idempotencyKey,
- std::shared_ptr<T> response,
- const TString& tablePathPrefix) {
- TSqlQueryBuilder queryBuilder(tablePathPrefix);
- queryBuilder.AddString("idempotency_key", idempotencyKey);
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddText(
- "SELECT `" RESPONSE_COLUMN_NAME "` FROM `" IDEMPOTENCY_KEYS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" IDEMPOTENCY_KEY_COLUMN_NAME "` = $idempotency_key;\n"
- );
-
- auto validator = [response](NYdb::NTable::TDataQueryResult result) {
- const auto& resultSets = result.GetResultSets();
- if (resultSets.size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "internal error, result set size is not equal to 1 but equal " << resultSets.size();
- }
-
- NYdb::TResultSetParser parser(resultSets.back());
- if (!parser.TryNextRow()) {
- return false; // idempotency key does not exist. check other validators
- }
-
- if (!response->first.ParseFromString(*parser.ColumnParser(RESPONSE_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for response. Please contact internal support";
- }
-
- return true;
- };
- const auto query = queryBuilder.Build();
- return {query.Sql, query.Params, validator};
-}
-
-template<typename T, typename A>
-TValidationQuery CreateIdempotencyKeyValidator(const TString& scope,
- const TString& idempotencyKey,
- std::shared_ptr<std::pair<T, A>> response,
- const TString& tablePathPrefix) {
- TSqlQueryBuilder queryBuilder(tablePathPrefix);
- queryBuilder.AddString("idempotency_key", idempotencyKey);
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddText(
- "SELECT `" RESPONSE_COLUMN_NAME "` FROM `" IDEMPOTENCY_KEYS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" IDEMPOTENCY_KEY_COLUMN_NAME "` = $idempotency_key;\n"
- );
-
- auto validator = [response](NYdb::NTable::TDataQueryResult result) {
- const auto& resultSets = result.GetResultSets();
- if (resultSets.size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "internal error, result set size is not equal to 1 but equal " << resultSets.size();
- }
-
- NYdb::TResultSetParser parser(resultSets.back());
- if (!parser.TryNextRow()) {
- return false; // idempotency key does not exist. check other validators
- }
-
- if (!response->first.ParseFromString(*parser.ColumnParser(RESPONSE_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for response. Please contact internal support";
- }
-
- response->second.IdempotencyResult = true;
-
- return true;
- };
- const auto query = queryBuilder.Build();
- return {query.Sql, query.Params, validator};
-}
-
-} // namespace NYq
+template<typename T>
+TValidationQuery CreateIdempotencyKeyValidator(const TString& scope,
+ const TString& idempotencyKey,
+ std::shared_ptr<T> response,
+ const TString& tablePathPrefix) {
+ TSqlQueryBuilder queryBuilder(tablePathPrefix);
+ queryBuilder.AddString("idempotency_key", idempotencyKey);
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddText(
+ "SELECT `" RESPONSE_COLUMN_NAME "` FROM `" IDEMPOTENCY_KEYS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" IDEMPOTENCY_KEY_COLUMN_NAME "` = $idempotency_key;\n"
+ );
+
+ auto validator = [response](NYdb::NTable::TDataQueryResult result) {
+ const auto& resultSets = result.GetResultSets();
+ if (resultSets.size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "internal error, result set size is not equal to 1 but equal " << resultSets.size();
+ }
+
+ NYdb::TResultSetParser parser(resultSets.back());
+ if (!parser.TryNextRow()) {
+ return false; // idempotency key does not exist. check other validators
+ }
+
+ if (!response->first.ParseFromString(*parser.ColumnParser(RESPONSE_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for response. Please contact internal support";
+ }
+
+ return true;
+ };
+ const auto query = queryBuilder.Build();
+ return {query.Sql, query.Params, validator};
+}
+
+template<typename T, typename A>
+TValidationQuery CreateIdempotencyKeyValidator(const TString& scope,
+ const TString& idempotencyKey,
+ std::shared_ptr<std::pair<T, A>> response,
+ const TString& tablePathPrefix) {
+ TSqlQueryBuilder queryBuilder(tablePathPrefix);
+ queryBuilder.AddString("idempotency_key", idempotencyKey);
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddText(
+ "SELECT `" RESPONSE_COLUMN_NAME "` FROM `" IDEMPOTENCY_KEYS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" IDEMPOTENCY_KEY_COLUMN_NAME "` = $idempotency_key;\n"
+ );
+
+ auto validator = [response](NYdb::NTable::TDataQueryResult result) {
+ const auto& resultSets = result.GetResultSets();
+ if (resultSets.size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "internal error, result set size is not equal to 1 but equal " << resultSets.size();
+ }
+
+ NYdb::TResultSetParser parser(resultSets.back());
+ if (!parser.TryNextRow()) {
+ return false; // idempotency key does not exist. check other validators
+ }
+
+ if (!response->first.ParseFromString(*parser.ColumnParser(RESPONSE_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for response. Please contact internal support";
+ }
+
+ response->second.IdempotencyResult = true;
+
+ return true;
+ };
+ const auto query = queryBuilder.Build();
+ return {query.Sql, query.Params, validator};
+}
+
+} // namespace NYq
diff --git a/ydb/core/yq/libs/control_plane_storage/ya.make b/ydb/core/yq/libs/control_plane_storage/ya.make
index 8304e50db5..4282789527 100644
--- a/ydb/core/yq/libs/control_plane_storage/ya.make
+++ b/ydb/core/yq/libs/control_plane_storage/ya.make
@@ -1,22 +1,22 @@
OWNER(g:yq)
-
-LIBRARY()
-
-SRCS(
+
+LIBRARY()
+
+SRCS(
control_plane_storage_counters.cpp
- exceptions.cpp
- in_memory_control_plane_storage.cpp
- probes.cpp
- util.cpp
- validators.cpp
- ydb_control_plane_storage.cpp
- ydb_control_plane_storage_bindings.cpp
- ydb_control_plane_storage_connections.cpp
- ydb_control_plane_storage_queries.cpp
-)
-
-PEERDIR(
- library/cpp/lwtrace
+ exceptions.cpp
+ in_memory_control_plane_storage.cpp
+ probes.cpp
+ util.cpp
+ validators.cpp
+ ydb_control_plane_storage.cpp
+ ydb_control_plane_storage_bindings.cpp
+ ydb_control_plane_storage_connections.cpp
+ ydb_control_plane_storage_queries.cpp
+)
+
+PEERDIR(
+ library/cpp/lwtrace
library/cpp/protobuf/interop
ydb/core/base
ydb/core/mon
@@ -36,14 +36,14 @@ PEERDIR(
ydb/public/sdk/cpp/client/ydb_scheme
ydb/public/sdk/cpp/client/ydb_table
ydb/library/yql/public/issue
-)
-
-YQL_LAST_ABI_VERSION()
-
-END()
-
-RECURSE(
- events
+)
+
+YQL_LAST_ABI_VERSION()
+
+END()
+
+RECURSE(
+ events
internal
- proto
-)
+ proto
+)
diff --git a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage.cpp b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage.cpp
index 222ebb6e8e..254e8c5a58 100644
--- a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage.cpp
@@ -1,120 +1,120 @@
-#include "schema.h"
-#include "validators.h"
-#include "ydb_control_plane_storage_impl.h"
-
+#include "schema.h"
+#include "validators.h"
+#include "ydb_control_plane_storage_impl.h"
+
#include <ydb/library/security/ydb_credentials_provider_factory.h>
-namespace NYq {
-
-namespace {
-
-void CollectDebugInfo(const TString& query, const TParams& params, TSession session, TDebugInfoPtr debugInfo) {
- if (debugInfo) {
- try {
- auto explainResult = session.ExplainDataQuery(query).GetValue(TDuration::Minutes(1));
- debugInfo->push_back({query, params, explainResult.GetPlan(), explainResult.GetAst(), {}});
- } catch (...) {
- debugInfo->push_back({query, params, {}, {}, CurrentExceptionMessage()});
- }
- }
-}
-
-inline YandexQuery::ConnectionSetting::ConnectionCase GetConnectionType(const TString& typeStr) {
- YandexQuery::ConnectionSetting::ConnectionType type = YandexQuery::ConnectionSetting::CONNECTION_TYPE_UNSPECIFIED;
- YandexQuery::ConnectionSetting::ConnectionType_Parse(typeStr, &type);
- return static_cast<YandexQuery::ConnectionSetting::ConnectionCase>(type);
-}
-
-inline YandexQuery::BindingSetting::BindingCase GetBindingType(const TString& typeStr) {
- YandexQuery::BindingSetting::BindingType type = YandexQuery::BindingSetting::BINDING_TYPE_UNSPECIFIED;
- YandexQuery::BindingSetting::BindingType_Parse(typeStr, &type);
- return static_cast<YandexQuery::BindingSetting::BindingCase>(type);
-}
-
-} // namespace
-
-void TYdbControlPlaneStorageActor::Bootstrap() {
- CPS_LOG_I("Starting ydb control plane storage service. Actor id: " << SelfId());
- NLwTraceMonPage::ProbeRegistry().AddProbesList(LWTRACE_GET_PROBES(YQ_CONTROL_PLANE_STORAGE_PROVIDER));
-
+namespace NYq {
+
+namespace {
+
+void CollectDebugInfo(const TString& query, const TParams& params, TSession session, TDebugInfoPtr debugInfo) {
+ if (debugInfo) {
+ try {
+ auto explainResult = session.ExplainDataQuery(query).GetValue(TDuration::Minutes(1));
+ debugInfo->push_back({query, params, explainResult.GetPlan(), explainResult.GetAst(), {}});
+ } catch (...) {
+ debugInfo->push_back({query, params, {}, {}, CurrentExceptionMessage()});
+ }
+ }
+}
+
+inline YandexQuery::ConnectionSetting::ConnectionCase GetConnectionType(const TString& typeStr) {
+ YandexQuery::ConnectionSetting::ConnectionType type = YandexQuery::ConnectionSetting::CONNECTION_TYPE_UNSPECIFIED;
+ YandexQuery::ConnectionSetting::ConnectionType_Parse(typeStr, &type);
+ return static_cast<YandexQuery::ConnectionSetting::ConnectionCase>(type);
+}
+
+inline YandexQuery::BindingSetting::BindingCase GetBindingType(const TString& typeStr) {
+ YandexQuery::BindingSetting::BindingType type = YandexQuery::BindingSetting::BINDING_TYPE_UNSPECIFIED;
+ YandexQuery::BindingSetting::BindingType_Parse(typeStr, &type);
+ return static_cast<YandexQuery::BindingSetting::BindingCase>(type);
+}
+
+} // namespace
+
+void TYdbControlPlaneStorageActor::Bootstrap() {
+ CPS_LOG_I("Starting ydb control plane storage service. Actor id: " << SelfId());
+ NLwTraceMonPage::ProbeRegistry().AddProbesList(LWTRACE_GET_PROBES(YQ_CONTROL_PLANE_STORAGE_PROVIDER));
+
DbPool = YqSharedResources->DbPoolHolder->GetOrCreate(EDbPoolId::MAIN, 10);
- YdbConnection = NewYdbConnection(Config.Proto.GetStorage(), CredProviderFactory);
- auto as = NActors::TActivationContext::ActorSystem();
- CreateDirectory(as);
- CreateQueriesTable(as);
+ YdbConnection = NewYdbConnection(Config.Proto.GetStorage(), CredProviderFactory);
+ auto as = NActors::TActivationContext::ActorSystem();
+ CreateDirectory(as);
+ CreateQueriesTable(as);
CreatePendingSmallTable(as);
- CreateConnectionsTable(as);
- CreateBindingsTable(as);
- CreateIdempotencyKeysTable(as);
- CreateResultSetsTable(as);
- CreateJobsTable(as);
+ CreateConnectionsTable(as);
+ CreateBindingsTable(as);
+ CreateIdempotencyKeysTable(as);
+ CreateResultSetsTable(as);
+ CreateJobsTable(as);
CreateNodesTable(as);
- Become(&TThis::StateFunc);
-}
-
-TYdbControlPlaneStorageActor::TConfig::TConfig(const NConfig::TControlPlaneStorageConfig& config, const NConfig::TCommonConfig& common)
- : Proto(FillDefaultParameters(config))
- , IdsPrefix(common.GetIdsPrefix())
- , IdempotencyKeyTtl(GetDuration(Proto.GetIdempotencyKeysTtl(), TDuration::Minutes(10)))
- , AutomaticQueriesTtl(GetDuration(Proto.GetAutomaticQueriesTtl(), TDuration::Days(1)))
+ Become(&TThis::StateFunc);
+}
+
+TYdbControlPlaneStorageActor::TConfig::TConfig(const NConfig::TControlPlaneStorageConfig& config, const NConfig::TCommonConfig& common)
+ : Proto(FillDefaultParameters(config))
+ , IdsPrefix(common.GetIdsPrefix())
+ , IdempotencyKeyTtl(GetDuration(Proto.GetIdempotencyKeysTtl(), TDuration::Minutes(10)))
+ , AutomaticQueriesTtl(GetDuration(Proto.GetAutomaticQueriesTtl(), TDuration::Days(1)))
, ResultSetsTtl(GetDuration(Proto.GetResultSetsTtl(), TDuration::Days(1)))
- , AnalyticsRetryCounterUpdateTime(GetDuration(Proto.GetAnalyticsRetryCounterUpdateTime(), TDuration::Days(1)))
- , StreamingRetryCounterUpdateTime(GetDuration(Proto.GetAnalyticsRetryCounterUpdateTime(), TDuration::Days(1)))
- , TaskLeaseTtl(GetDuration(Proto.GetTaskLeaseTtl(), TDuration::Seconds(30)))
-{
- for (const auto& availableConnection: Proto.GetAvailableConnection()) {
- AvailableConnections.insert(GetConnectionType(availableConnection));
- }
-
- for (const auto& availableBinding: Proto.GetAvailableBinding()) {
- AvailableBindings.insert(GetBindingType(availableBinding));
- }
-}
-
-/*
-* Creating tables
-*/
-TAsyncStatus TYdbControlPlaneStorageActor::CreateQueriesTable(TActorSystem* as)
-{
+ , AnalyticsRetryCounterUpdateTime(GetDuration(Proto.GetAnalyticsRetryCounterUpdateTime(), TDuration::Days(1)))
+ , StreamingRetryCounterUpdateTime(GetDuration(Proto.GetAnalyticsRetryCounterUpdateTime(), TDuration::Days(1)))
+ , TaskLeaseTtl(GetDuration(Proto.GetTaskLeaseTtl(), TDuration::Seconds(30)))
+{
+ for (const auto& availableConnection: Proto.GetAvailableConnection()) {
+ AvailableConnections.insert(GetConnectionType(availableConnection));
+ }
+
+ for (const auto& availableBinding: Proto.GetAvailableBinding()) {
+ AvailableBindings.insert(GetBindingType(availableBinding));
+ }
+}
+
+/*
+* Creating tables
+*/
+TAsyncStatus TYdbControlPlaneStorageActor::CreateQueriesTable(TActorSystem* as)
+{
auto tablePath = JoinPath(YdbConnection->TablePathPrefix, QUERIES_TABLE_NAME);
-
- auto description = TTableBuilder()
- .AddNullableColumn(SCOPE_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(QUERY_ID_COLUMN_NAME, EPrimitiveType::String)
+
+ auto description = TTableBuilder()
+ .AddNullableColumn(SCOPE_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(QUERY_ID_COLUMN_NAME, EPrimitiveType::String)
.AddNullableColumn(RESULT_ID_COLUMN_NAME, EPrimitiveType::String)
.AddNullableColumn(GENERATION_COLUMN_NAME, EPrimitiveType::Uint64)
- .AddNullableColumn(NAME_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(USER_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(VISIBILITY_COLUMN_NAME, EPrimitiveType::Int64)
+ .AddNullableColumn(NAME_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(USER_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(VISIBILITY_COLUMN_NAME, EPrimitiveType::Int64)
.AddNullableColumn(AUTOMATIC_COLUMN_NAME, EPrimitiveType::Bool)
- .AddNullableColumn(STATUS_COLUMN_NAME, EPrimitiveType::Int64)
- .AddNullableColumn(QUERY_TYPE_COLUMN_NAME, EPrimitiveType::Int64)
- .AddNullableColumn(EXECUTE_MODE_COLUMN_NAME, EPrimitiveType::Int64)
- .AddNullableColumn(QUERY_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(REVISION_COLUMN_NAME, EPrimitiveType::Int64)
- .AddNullableColumn(INTERNAL_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(LAST_JOB_ID_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(STATUS_COLUMN_NAME, EPrimitiveType::Int64)
+ .AddNullableColumn(QUERY_TYPE_COLUMN_NAME, EPrimitiveType::Int64)
+ .AddNullableColumn(EXECUTE_MODE_COLUMN_NAME, EPrimitiveType::Int64)
+ .AddNullableColumn(QUERY_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(REVISION_COLUMN_NAME, EPrimitiveType::Int64)
+ .AddNullableColumn(INTERNAL_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(LAST_JOB_ID_COLUMN_NAME, EPrimitiveType::String)
.AddNullableColumn(EXPIRE_AT_COLUMN_NAME, EPrimitiveType::Timestamp)
.AddNullableColumn(RESULT_SETS_EXPIRE_AT_COLUMN_NAME, EPrimitiveType::Timestamp)
.AddNullableColumn(META_REVISION_COLUMN_NAME, EPrimitiveType::Int64)
- .SetPrimaryKeyColumns({SCOPE_COLUMN_NAME, QUERY_ID_COLUMN_NAME})
+ .SetPrimaryKeyColumns({SCOPE_COLUMN_NAME, QUERY_ID_COLUMN_NAME})
.SetTtlSettings(EXPIRE_AT_COLUMN_NAME)
- .Build();
-
- return YdbConnection->Client.RetryOperation(
- [tablePath = std::move(tablePath), description = std::move(description)] (TSession session) mutable {
- return session.CreateTable(tablePath, TTableDescription(description));
- })
- .Apply([=](const auto& future) {
- auto status = future.GetValue();
+ .Build();
+
+ return YdbConnection->Client.RetryOperation(
+ [tablePath = std::move(tablePath), description = std::move(description)] (TSession session) mutable {
+ return session.CreateTable(tablePath, TTableDescription(description));
+ })
+ .Apply([=](const auto& future) {
+ auto status = future.GetValue();
if (!IsTableCreated(status)) {
- CPS_LOG_AS_E(*as, "create quries table error: " << status.GetIssues().ToString());
- return CreateQueriesTable(as);
- }
- return future;
- });
-}
-
+ CPS_LOG_AS_E(*as, "create quries table error: " << status.GetIssues().ToString());
+ return CreateQueriesTable(as);
+ }
+ return future;
+ });
+}
+
TAsyncStatus TYdbControlPlaneStorageActor::CreatePendingSmallTable(TActorSystem* as)
{
auto tablePath = JoinPath(YdbConnection->TablePathPrefix, PENDING_SMALL_TABLE_NAME);
@@ -122,104 +122,104 @@ TAsyncStatus TYdbControlPlaneStorageActor::CreatePendingSmallTable(TActorSystem*
auto description = TTableBuilder()
.AddNullableColumn(SCOPE_COLUMN_NAME, EPrimitiveType::String)
.AddNullableColumn(QUERY_ID_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(LAST_SEEN_AT_COLUMN_NAME, EPrimitiveType::Timestamp)
+ .AddNullableColumn(LAST_SEEN_AT_COLUMN_NAME, EPrimitiveType::Timestamp)
.AddNullableColumn(RETRY_COUNTER_COLUMN_NAME, EPrimitiveType::Uint64)
.AddNullableColumn(RETRY_COUNTER_UPDATE_COLUMN_NAME, EPrimitiveType::Timestamp)
.AddNullableColumn(QUERY_TYPE_COLUMN_NAME, EPrimitiveType::Int64)
.AddNullableColumn(IS_RESIGN_QUERY_COLUMN_NAME, EPrimitiveType::Bool)
.AddNullableColumn(HOST_NAME_COLUMN_NAME, EPrimitiveType::String)
.AddNullableColumn(OWNER_COLUMN_NAME, EPrimitiveType::String)
- .SetPrimaryKeyColumns({SCOPE_COLUMN_NAME, QUERY_ID_COLUMN_NAME})
- .Build();
-
- return YdbConnection->Client.RetryOperation(
- [tablePath = std::move(tablePath), description = std::move(description)] (TSession session) mutable {
- return session.CreateTable(tablePath, TTableDescription(description));
- })
- .Apply([=](const auto& future) {
- auto status = future.GetValue();
+ .SetPrimaryKeyColumns({SCOPE_COLUMN_NAME, QUERY_ID_COLUMN_NAME})
+ .Build();
+
+ return YdbConnection->Client.RetryOperation(
+ [tablePath = std::move(tablePath), description = std::move(description)] (TSession session) mutable {
+ return session.CreateTable(tablePath, TTableDescription(description));
+ })
+ .Apply([=](const auto& future) {
+ auto status = future.GetValue();
if (!IsTableCreated(status)) {
- CPS_LOG_AS_E(*as, "create pending table error: " << status.GetIssues().ToString());
+ CPS_LOG_AS_E(*as, "create pending table error: " << status.GetIssues().ToString());
return CreatePendingSmallTable(as);
- }
- return future;
- });
-}
-
-TAsyncStatus TYdbControlPlaneStorageActor::CreateConnectionsTable(TActorSystem* as)
-{
+ }
+ return future;
+ });
+}
+
+TAsyncStatus TYdbControlPlaneStorageActor::CreateConnectionsTable(TActorSystem* as)
+{
auto tablePath = JoinPath(YdbConnection->TablePathPrefix, CONNECTIONS_TABLE_NAME);
-
- auto description = TTableBuilder()
- .AddNullableColumn(SCOPE_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(CONNECTION_ID_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(NAME_COLUMN_NAME, EPrimitiveType::String)
+
+ auto description = TTableBuilder()
+ .AddNullableColumn(SCOPE_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(CONNECTION_ID_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(NAME_COLUMN_NAME, EPrimitiveType::String)
.AddNullableColumn(CONNECTION_TYPE_COLUMN_NAME, EPrimitiveType::Int64)
- .AddNullableColumn(USER_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(VISIBILITY_COLUMN_NAME, EPrimitiveType::Int64)
- .AddNullableColumn(CONNECTION_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(REVISION_COLUMN_NAME, EPrimitiveType::Int64)
- .AddNullableColumn(INTERNAL_COLUMN_NAME, EPrimitiveType::String)
- .SetPrimaryKeyColumns({SCOPE_COLUMN_NAME, CONNECTION_ID_COLUMN_NAME})
- .Build();
-
- return YdbConnection->Client.RetryOperation(
- [tablePath = std::move(tablePath), description = std::move(description)] (TSession session) mutable {
- return session.CreateTable(tablePath, TTableDescription(description));
- })
- .Apply([=](const auto& future) {
- auto status = future.GetValue();
+ .AddNullableColumn(USER_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(VISIBILITY_COLUMN_NAME, EPrimitiveType::Int64)
+ .AddNullableColumn(CONNECTION_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(REVISION_COLUMN_NAME, EPrimitiveType::Int64)
+ .AddNullableColumn(INTERNAL_COLUMN_NAME, EPrimitiveType::String)
+ .SetPrimaryKeyColumns({SCOPE_COLUMN_NAME, CONNECTION_ID_COLUMN_NAME})
+ .Build();
+
+ return YdbConnection->Client.RetryOperation(
+ [tablePath = std::move(tablePath), description = std::move(description)] (TSession session) mutable {
+ return session.CreateTable(tablePath, TTableDescription(description));
+ })
+ .Apply([=](const auto& future) {
+ auto status = future.GetValue();
if (!IsTableCreated(status)) {
- CPS_LOG_AS_E(*as, "create connections table error: " << status.GetIssues().ToString());
- return CreateConnectionsTable(as);
- }
- return future;
- });
-}
-
-TAsyncStatus TYdbControlPlaneStorageActor::CreateDirectory(TActorSystem* as)
-{
- auto schemeClient = NYdb::NScheme::TSchemeClient(YdbConnection->Driver);
- return schemeClient.MakeDirectory(YdbConnection->TablePathPrefix).Apply([=](const auto& future) {
- auto status = future.GetValue();
+ CPS_LOG_AS_E(*as, "create connections table error: " << status.GetIssues().ToString());
+ return CreateConnectionsTable(as);
+ }
+ return future;
+ });
+}
+
+TAsyncStatus TYdbControlPlaneStorageActor::CreateDirectory(TActorSystem* as)
+{
+ auto schemeClient = NYdb::NScheme::TSchemeClient(YdbConnection->Driver);
+ return schemeClient.MakeDirectory(YdbConnection->TablePathPrefix).Apply([=](const auto& future) {
+ auto status = future.GetValue();
if (!IsTableCreated(status)) {
- CPS_LOG_AS_E(*as, "create directory error: " << status.GetIssues().ToString());
- return CreateDirectory(as);
- }
- return future;
- });
-}
-
-TAsyncStatus TYdbControlPlaneStorageActor::CreateJobsTable(TActorSystem* as)
-{
+ CPS_LOG_AS_E(*as, "create directory error: " << status.GetIssues().ToString());
+ return CreateDirectory(as);
+ }
+ return future;
+ });
+}
+
+TAsyncStatus TYdbControlPlaneStorageActor::CreateJobsTable(TActorSystem* as)
+{
auto tablePath = JoinPath(YdbConnection->TablePathPrefix, JOBS_TABLE_NAME);
-
- auto description = TTableBuilder()
- .AddNullableColumn(SCOPE_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(JOB_ID_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(QUERY_ID_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(JOB_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(USER_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(VISIBILITY_COLUMN_NAME, EPrimitiveType::Int64)
+
+ auto description = TTableBuilder()
+ .AddNullableColumn(SCOPE_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(JOB_ID_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(QUERY_ID_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(JOB_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(USER_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(VISIBILITY_COLUMN_NAME, EPrimitiveType::Int64)
.AddNullableColumn(EXPIRE_AT_COLUMN_NAME, EPrimitiveType::Timestamp)
.SetPrimaryKeyColumns({SCOPE_COLUMN_NAME, QUERY_ID_COLUMN_NAME, JOB_ID_COLUMN_NAME})
.SetTtlSettings(EXPIRE_AT_COLUMN_NAME)
- .Build();
-
- return YdbConnection->Client.RetryOperation(
- [tablePath = std::move(tablePath), description = std::move(description)] (TSession session) mutable {
- return session.CreateTable(tablePath, TTableDescription(description));
- })
- .Apply([=](const auto& future) {
- auto status = future.GetValue();
+ .Build();
+
+ return YdbConnection->Client.RetryOperation(
+ [tablePath = std::move(tablePath), description = std::move(description)] (TSession session) mutable {
+ return session.CreateTable(tablePath, TTableDescription(description));
+ })
+ .Apply([=](const auto& future) {
+ auto status = future.GetValue();
if (!IsTableCreated(status)) {
- CPS_LOG_AS_E(*as, "create jobs table error: " << status.GetIssues().ToString());
- return CreateJobsTable(as);
- }
- return future;
- });
-}
-
+ CPS_LOG_AS_E(*as, "create jobs table error: " << status.GetIssues().ToString());
+ return CreateJobsTable(as);
+ }
+ return future;
+ });
+}
+
TAsyncStatus TYdbControlPlaneStorageActor::CreateNodesTable(TActorSystem* as)
{
auto tablePath = JoinPath(YdbConnection->TablePathPrefix, NODES_TABLE_NAME);
@@ -253,163 +253,163 @@ TAsyncStatus TYdbControlPlaneStorageActor::CreateNodesTable(TActorSystem* as)
});
}
-TAsyncStatus TYdbControlPlaneStorageActor::CreateBindingsTable(TActorSystem* as)
-{
+TAsyncStatus TYdbControlPlaneStorageActor::CreateBindingsTable(TActorSystem* as)
+{
auto tablePath = JoinPath(YdbConnection->TablePathPrefix, BINDINGS_TABLE_NAME);
-
- auto description = TTableBuilder()
- .AddNullableColumn(SCOPE_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(BINDING_ID_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(CONNECTION_ID_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(NAME_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(USER_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(VISIBILITY_COLUMN_NAME, EPrimitiveType::Int64)
- .AddNullableColumn(BINDING_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(REVISION_COLUMN_NAME, EPrimitiveType::Int64)
- .AddNullableColumn(INTERNAL_COLUMN_NAME, EPrimitiveType::String)
- .SetPrimaryKeyColumns({SCOPE_COLUMN_NAME, BINDING_ID_COLUMN_NAME})
- .Build();
-
- return YdbConnection->Client.RetryOperation(
- [tablePath = std::move(tablePath), description = std::move(description)] (TSession session) mutable {
- return session.CreateTable(tablePath, TTableDescription(description));
- })
- .Apply([=](const auto& future) {
- auto status = future.GetValue();
+
+ auto description = TTableBuilder()
+ .AddNullableColumn(SCOPE_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(BINDING_ID_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(CONNECTION_ID_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(NAME_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(USER_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(VISIBILITY_COLUMN_NAME, EPrimitiveType::Int64)
+ .AddNullableColumn(BINDING_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(REVISION_COLUMN_NAME, EPrimitiveType::Int64)
+ .AddNullableColumn(INTERNAL_COLUMN_NAME, EPrimitiveType::String)
+ .SetPrimaryKeyColumns({SCOPE_COLUMN_NAME, BINDING_ID_COLUMN_NAME})
+ .Build();
+
+ return YdbConnection->Client.RetryOperation(
+ [tablePath = std::move(tablePath), description = std::move(description)] (TSession session) mutable {
+ return session.CreateTable(tablePath, TTableDescription(description));
+ })
+ .Apply([=](const auto& future) {
+ auto status = future.GetValue();
if (!IsTableCreated(status)) {
- CPS_LOG_AS_E(*as, "create bindings table error: " << status.GetIssues().ToString());
- return CreateBindingsTable(as);
- }
- return future;
- });
-}
-
-TAsyncStatus TYdbControlPlaneStorageActor::CreateIdempotencyKeysTable(TActorSystem* as)
-{
+ CPS_LOG_AS_E(*as, "create bindings table error: " << status.GetIssues().ToString());
+ return CreateBindingsTable(as);
+ }
+ return future;
+ });
+}
+
+TAsyncStatus TYdbControlPlaneStorageActor::CreateIdempotencyKeysTable(TActorSystem* as)
+{
auto tablePath = JoinPath(YdbConnection->TablePathPrefix, IDEMPOTENCY_KEYS_TABLE_NAME);
-
- auto description = TTableBuilder()
- .AddNullableColumn(SCOPE_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(IDEMPOTENCY_KEY_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(RESPONSE_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(EXPIRE_AT_COLUMN_NAME, EPrimitiveType::Timestamp)
- .SetTtlSettings(EXPIRE_AT_COLUMN_NAME)
- .SetPrimaryKeyColumns({SCOPE_COLUMN_NAME, IDEMPOTENCY_KEY_COLUMN_NAME})
- .Build();
-
- return YdbConnection->Client.RetryOperation(
- [tablePath = std::move(tablePath), description = std::move(description)] (TSession session) mutable {
- return session.CreateTable(tablePath, TTableDescription(description));
- })
- .Apply([=](const auto& future) {
- auto status = future.GetValue();
+
+ auto description = TTableBuilder()
+ .AddNullableColumn(SCOPE_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(IDEMPOTENCY_KEY_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(RESPONSE_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(EXPIRE_AT_COLUMN_NAME, EPrimitiveType::Timestamp)
+ .SetTtlSettings(EXPIRE_AT_COLUMN_NAME)
+ .SetPrimaryKeyColumns({SCOPE_COLUMN_NAME, IDEMPOTENCY_KEY_COLUMN_NAME})
+ .Build();
+
+ return YdbConnection->Client.RetryOperation(
+ [tablePath = std::move(tablePath), description = std::move(description)] (TSession session) mutable {
+ return session.CreateTable(tablePath, TTableDescription(description));
+ })
+ .Apply([=](const auto& future) {
+ auto status = future.GetValue();
if (!IsTableCreated(status)) {
- CPS_LOG_AS_E(*as, "create idempotency keys table error: " << status.GetIssues().ToString());
- return CreateIdempotencyKeysTable(as);
- }
- return future;
- });
-}
-
-TAsyncStatus TYdbControlPlaneStorageActor::CreateResultSetsTable(TActorSystem* as)
-{
+ CPS_LOG_AS_E(*as, "create idempotency keys table error: " << status.GetIssues().ToString());
+ return CreateIdempotencyKeysTable(as);
+ }
+ return future;
+ });
+}
+
+TAsyncStatus TYdbControlPlaneStorageActor::CreateResultSetsTable(TActorSystem* as)
+{
auto tablePath = JoinPath(YdbConnection->TablePathPrefix, RESULT_SETS_TABLE_NAME);
-
- auto description = TTableBuilder()
+
+ auto description = TTableBuilder()
.AddNullableColumn(RESULT_ID_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(RESULT_SET_ID_COLUMN_NAME, EPrimitiveType::Int32)
- .AddNullableColumn(ROW_ID_COLUMN_NAME, EPrimitiveType::Int64)
- .AddNullableColumn(RESULT_SET_COLUMN_NAME, EPrimitiveType::String)
- .AddNullableColumn(EXPIRE_AT_COLUMN_NAME, EPrimitiveType::Timestamp)
- .SetTtlSettings(EXPIRE_AT_COLUMN_NAME)
+ .AddNullableColumn(RESULT_SET_ID_COLUMN_NAME, EPrimitiveType::Int32)
+ .AddNullableColumn(ROW_ID_COLUMN_NAME, EPrimitiveType::Int64)
+ .AddNullableColumn(RESULT_SET_COLUMN_NAME, EPrimitiveType::String)
+ .AddNullableColumn(EXPIRE_AT_COLUMN_NAME, EPrimitiveType::Timestamp)
+ .SetTtlSettings(EXPIRE_AT_COLUMN_NAME)
.SetPrimaryKeyColumns({RESULT_ID_COLUMN_NAME, RESULT_SET_ID_COLUMN_NAME, ROW_ID_COLUMN_NAME})
- .Build();
-
- return YdbConnection->Client.RetryOperation(
- [tablePath = std::move(tablePath), description = std::move(description)] (TSession session) mutable {
- return session.CreateTable(tablePath, TTableDescription(description));
- })
- .Apply([=](const auto& future) {
- auto status = future.GetValue();
+ .Build();
+
+ return YdbConnection->Client.RetryOperation(
+ [tablePath = std::move(tablePath), description = std::move(description)] (TSession session) mutable {
+ return session.CreateTable(tablePath, TTableDescription(description));
+ })
+ .Apply([=](const auto& future) {
+ auto status = future.GetValue();
if (!IsTableCreated(status)) {
- CPS_LOG_AS_E(*as, "create result sets table error: " << status.GetIssues().ToString());
- return CreateResultSetsTable(as);
- }
- return future;
- });
-}
-
-bool TYdbControlPlaneStorageActor::IsSuperUser(const TString& user)
-{
- return AnyOf(Config.Proto.GetSuperUsers(), [&user](const auto& superUser) {
- return superUser == user;
- });
-}
-
-void TYdbControlPlaneStorageActor::InsertIdempotencyKey(TSqlQueryBuilder& builder, const TString& scope, const TString& idempotencyKey, const TString& response, const TInstant& expireAt) {
- if (idempotencyKey) {
- builder.AddString("scope", scope);
- builder.AddString("idempotency_key", idempotencyKey);
- builder.AddString("response", response);
- builder.AddTimestamp("expire_at", expireAt);
- builder.AddText(
- "INSERT INTO `" IDEMPOTENCY_KEYS_TABLE_NAME "` (`" SCOPE_COLUMN_NAME "`, `" IDEMPOTENCY_KEY_COLUMN_NAME "`, `" RESPONSE_COLUMN_NAME "`, `" EXPIRE_AT_COLUMN_NAME "`)\n"
- "VALUES ($scope, $idempotency_key, $response, $expire_at);\n"
- );
- }
-}
-
-void TYdbControlPlaneStorageActor::ReadIdempotencyKeyQuery(TSqlQueryBuilder& builder, const TString& scope, const TString& idempotencyKey) {
- if (idempotencyKey) {
- builder.AddString("scope", scope);
- builder.AddString("idempotency_key", idempotencyKey);
- builder.AddText(
- "SELECT `" RESPONSE_COLUMN_NAME "` FROM `" IDEMPOTENCY_KEYS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" IDEMPOTENCY_KEY_COLUMN_NAME "` = $idempotency_key;\n"
- );
- }
-}
-
-class TDbRequest: public NActors::TActorBootstrapped<TDbRequest> {
- using TFunction = std::function<NYdb::TAsyncStatus(NYdb::NTable::TSession&)>;
+ CPS_LOG_AS_E(*as, "create result sets table error: " << status.GetIssues().ToString());
+ return CreateResultSetsTable(as);
+ }
+ return future;
+ });
+}
+
+bool TYdbControlPlaneStorageActor::IsSuperUser(const TString& user)
+{
+ return AnyOf(Config.Proto.GetSuperUsers(), [&user](const auto& superUser) {
+ return superUser == user;
+ });
+}
+
+void TYdbControlPlaneStorageActor::InsertIdempotencyKey(TSqlQueryBuilder& builder, const TString& scope, const TString& idempotencyKey, const TString& response, const TInstant& expireAt) {
+ if (idempotencyKey) {
+ builder.AddString("scope", scope);
+ builder.AddString("idempotency_key", idempotencyKey);
+ builder.AddString("response", response);
+ builder.AddTimestamp("expire_at", expireAt);
+ builder.AddText(
+ "INSERT INTO `" IDEMPOTENCY_KEYS_TABLE_NAME "` (`" SCOPE_COLUMN_NAME "`, `" IDEMPOTENCY_KEY_COLUMN_NAME "`, `" RESPONSE_COLUMN_NAME "`, `" EXPIRE_AT_COLUMN_NAME "`)\n"
+ "VALUES ($scope, $idempotency_key, $response, $expire_at);\n"
+ );
+ }
+}
+
+void TYdbControlPlaneStorageActor::ReadIdempotencyKeyQuery(TSqlQueryBuilder& builder, const TString& scope, const TString& idempotencyKey) {
+ if (idempotencyKey) {
+ builder.AddString("scope", scope);
+ builder.AddString("idempotency_key", idempotencyKey);
+ builder.AddText(
+ "SELECT `" RESPONSE_COLUMN_NAME "` FROM `" IDEMPOTENCY_KEYS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" IDEMPOTENCY_KEY_COLUMN_NAME "` = $idempotency_key;\n"
+ );
+ }
+}
+
+class TDbRequest: public NActors::TActorBootstrapped<TDbRequest> {
+ using TFunction = std::function<NYdb::TAsyncStatus(NYdb::NTable::TSession&)>;
TDbPool::TPtr DbPool;
- TPromise<NYdb::TStatus> Promise;
- TFunction Handler;
-
-public:
+ TPromise<NYdb::TStatus> Promise;
+ TFunction Handler;
+
+public:
TDbRequest(const TDbPool::TPtr& dbPool, const TPromise<NYdb::TStatus>& promise, const TFunction& handler)
- : DbPool(dbPool)
- , Promise(promise)
- , Handler(handler)
- {}
-
+ : DbPool(dbPool)
+ , Promise(promise)
+ , Handler(handler)
+ {}
+
static constexpr char ActorName[] = "YQ_CONTROL_PLANE_STORAGE_DB_REQUEST";
- void Bootstrap() {
- CPS_LOG_T("DbRequest actor request. Actor id: " << SelfId());
- Become(&TDbRequest::StateFunc);
+ void Bootstrap() {
+ CPS_LOG_T("DbRequest actor request. Actor id: " << SelfId());
+ Become(&TDbRequest::StateFunc);
Send(DbPool->GetNextActor(), new TEvents::TEvDbFunctionRequest(Handler), IEventHandle::FlagTrackDelivery);
- }
-
- STRICT_STFUNC(StateFunc,
+ }
+
+ STRICT_STFUNC(StateFunc,
hFunc(TEvents::TEvDbFunctionResponse, Handle);
- hFunc(NActors::TEvents::TEvUndelivered, OnUndelivered)
- )
-
+ hFunc(NActors::TEvents::TEvUndelivered, OnUndelivered)
+ )
+
void Handle(TEvents::TEvDbFunctionResponse::TPtr& ev) {
- CPS_LOG_T("DbRequest actor response. Actor id: " << SelfId());
- Promise.SetValue(ev->Get()->Status);
- PassAway();
- }
-
- void OnUndelivered(NActors::TEvents::TEvUndelivered::TPtr&) {
- CPS_LOG_E("On delivered. Actor id: " << SelfId());
+ CPS_LOG_T("DbRequest actor response. Actor id: " << SelfId());
+ Promise.SetValue(ev->Get()->Status);
+ PassAway();
+ }
+
+ void OnUndelivered(NActors::TEvents::TEvUndelivered::TPtr&) {
+ CPS_LOG_E("On delivered. Actor id: " << SelfId());
Send(DbPool->GetNextActor(), new TEvents::TEvDbFunctionRequest(Handler), IEventHandle::FlagTrackDelivery);
- }
-};
-
-
+ }
+};
+
+
std::pair<TAsyncStatus, std::shared_ptr<TVector<NYdb::TResultSet>>> TYdbControlPlaneStorageActor::Read(
const TString& query,
const NYdb::TParams& params,
@@ -417,36 +417,36 @@ std::pair<TAsyncStatus, std::shared_ptr<TVector<NYdb::TResultSet>>> TYdbControlP
TDebugInfoPtr debugInfo,
TTxSettings transactionMode,
bool retryOnTli)
-{
- auto resultSet = std::make_shared<TVector<NYdb::TResultSet>>();
-
- std::shared_ptr<int> retryCount = std::make_shared<int>();
- auto handler = [=](TSession& session) {
- if (*retryCount != 0) {
- requestCounters->Retry->Inc();
- }
- ++(*retryCount);
- CollectDebugInfo(query, params, session, debugInfo);
+{
+ auto resultSet = std::make_shared<TVector<NYdb::TResultSet>>();
+
+ std::shared_ptr<int> retryCount = std::make_shared<int>();
+ auto handler = [=](TSession& session) {
+ if (*retryCount != 0) {
+ requestCounters->Retry->Inc();
+ }
+ ++(*retryCount);
+ CollectDebugInfo(query, params, session, debugInfo);
auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx(transactionMode).CommitTx(), params, NYdb::NTable::TExecDataQuerySettings().KeepInQueryCache(true));
return result.Apply([retryOnTli, resultSet] (const TFuture<TDataQueryResult>& future) {
- NYdb::NTable::TDataQueryResult result = future.GetValue();
- *resultSet = result.GetResultSets();
- auto status = static_cast<TStatus>(result);
- if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
- return TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}};
- }
+ NYdb::NTable::TDataQueryResult result = future.GetValue();
+ *resultSet = result.GetResultSets();
+ auto status = static_cast<TStatus>(result);
+ if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
+ return TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}};
+ }
if (!retryOnTli && status.GetStatus() == EStatus::ABORTED) {
return TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{status.GetIssues()}};
}
- return status;
- });
- };
-
- TPromise<NYdb::TStatus> promise = NewPromise<NYdb::TStatus>();
- Register(new TDbRequest(DbPool, promise, handler));
- return {promise.GetFuture(), resultSet};
-}
-
+ return status;
+ });
+ };
+
+ TPromise<NYdb::TStatus> promise = NewPromise<NYdb::TStatus>();
+ Register(new TDbRequest(DbPool, promise, handler));
+ return {promise.GetFuture(), resultSet};
+}
+
TAsyncStatus TYdbControlPlaneStorageActor::Validate(
std::shared_ptr<TMaybe<TTransaction>> transaction,
size_t item,
@@ -456,31 +456,31 @@ TAsyncStatus TYdbControlPlaneStorageActor::Validate(
TDebugInfoPtr debugInfo,
TTxSettings transactionMode)
{
- if (item >= validators.size()) {
- return MakeFuture(TStatus{EStatus::SUCCESS, NYql::TIssues{}});
- }
-
- const TValidationQuery& validatonItem = validators[item];
- CollectDebugInfo(validatonItem.Query, validatonItem.Params, session, debugInfo);
- auto result = session.ExecuteDataQuery(validatonItem.Query, item == 0 ? TTxControl::BeginTx(transactionMode) : TTxControl::Tx(**transaction), validatonItem.Params, NYdb::NTable::TExecDataQuerySettings().KeepInQueryCache(true));
- return result.Apply([=, validator=validatonItem.Validator] (const TFuture<TDataQueryResult>& future) {
- NYdb::NTable::TDataQueryResult result = future.GetValue();
- *transaction = result.GetTransaction();
- auto status = static_cast<TStatus>(result);
- if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
- return MakeFuture(TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}});
- }
- if (!status.IsSuccess()) {
- return MakeFuture(status);
- }
- *successFinish = validator(result);
- if (*successFinish) {
- return MakeFuture(TStatus{EStatus::SUCCESS, NYql::TIssues{}});
- }
- return Validate(transaction, item + 1, validators, session, successFinish, debugInfo);
- });
-}
-
+ if (item >= validators.size()) {
+ return MakeFuture(TStatus{EStatus::SUCCESS, NYql::TIssues{}});
+ }
+
+ const TValidationQuery& validatonItem = validators[item];
+ CollectDebugInfo(validatonItem.Query, validatonItem.Params, session, debugInfo);
+ auto result = session.ExecuteDataQuery(validatonItem.Query, item == 0 ? TTxControl::BeginTx(transactionMode) : TTxControl::Tx(**transaction), validatonItem.Params, NYdb::NTable::TExecDataQuerySettings().KeepInQueryCache(true));
+ return result.Apply([=, validator=validatonItem.Validator] (const TFuture<TDataQueryResult>& future) {
+ NYdb::NTable::TDataQueryResult result = future.GetValue();
+ *transaction = result.GetTransaction();
+ auto status = static_cast<TStatus>(result);
+ if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
+ return MakeFuture(TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}});
+ }
+ if (!status.IsSuccess()) {
+ return MakeFuture(status);
+ }
+ *successFinish = validator(result);
+ if (*successFinish) {
+ return MakeFuture(TStatus{EStatus::SUCCESS, NYql::TIssues{}});
+ }
+ return Validate(transaction, item + 1, validators, session, successFinish, debugInfo);
+ });
+}
+
TAsyncStatus TYdbControlPlaneStorageActor::Write(
NActors::TActorSystem* actorSystem,
const TString& query,
@@ -490,58 +490,58 @@ TAsyncStatus TYdbControlPlaneStorageActor::Write(
const TVector<TValidationQuery>& validators,
TTxSettings transactionMode,
bool retryOnTli)
-{
- std::shared_ptr<int> retryCount = std::make_shared<int>();
- auto transaction = std::make_shared<TMaybe<TTransaction>>();
+{
+ std::shared_ptr<int> retryCount = std::make_shared<int>();
+ auto transaction = std::make_shared<TMaybe<TTransaction>>();
auto writeHandler = [=, retryOnTli=retryOnTli] (TSession session) {
- CollectDebugInfo(query, params, session, debugInfo);
+ CollectDebugInfo(query, params, session, debugInfo);
auto result = session.ExecuteDataQuery(query, validators ? TTxControl::Tx(**transaction).CommitTx() : TTxControl::BeginTx(transactionMode).CommitTx(), params, NYdb::NTable::TExecDataQuerySettings().KeepInQueryCache(true));
return result.Apply([=] (const TFuture<TDataQueryResult>& future) {
- NYdb::NTable::TDataQueryResult result = future.GetValue();
- auto status = static_cast<TStatus>(result);
- if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
- return TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}};
- }
+ NYdb::NTable::TDataQueryResult result = future.GetValue();
+ auto status = static_cast<TStatus>(result);
+ if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
+ return TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}};
+ }
if (!retryOnTli && status.GetStatus() == EStatus::ABORTED) {
return TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{status.GetIssues()}};
}
- return status;
- });
- };
-
- auto handler = [=] (TSession session) {
- if (*retryCount != 0) {
- requestCounters->Retry->Inc();
- }
- ++(*retryCount);
- std::shared_ptr<bool> successFinish = std::make_shared<bool>();
- return Validate(transaction, 0, validators, session, successFinish, debugInfo).Apply([=](const auto& future) {
- try {
- auto status = future.GetValue();
- if (!status.IsSuccess()) {
- return future;
- }
- if (*successFinish) {
- return future;
- }
- return writeHandler(session);
- } catch (const TControlPlaneStorageException& exception) {
- CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
- return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{MakeErrorIssue(exception.Code, exception.GetRawMessage())}});
- } catch (const std::exception& exception) {
- CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
- return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{NYql::TIssue{exception.what()}}});
- } catch (...) {
- CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
- return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{NYql::TIssue{CurrentExceptionMessage()}}});
- }
- });
- };
- TPromise<NYdb::TStatus> promise = NewPromise<NYdb::TStatus>();
- Register(new TDbRequest(DbPool, promise, handler));
- return promise.GetFuture();
-}
-
+ return status;
+ });
+ };
+
+ auto handler = [=] (TSession session) {
+ if (*retryCount != 0) {
+ requestCounters->Retry->Inc();
+ }
+ ++(*retryCount);
+ std::shared_ptr<bool> successFinish = std::make_shared<bool>();
+ return Validate(transaction, 0, validators, session, successFinish, debugInfo).Apply([=](const auto& future) {
+ try {
+ auto status = future.GetValue();
+ if (!status.IsSuccess()) {
+ return future;
+ }
+ if (*successFinish) {
+ return future;
+ }
+ return writeHandler(session);
+ } catch (const TControlPlaneStorageException& exception) {
+ CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
+ return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{MakeErrorIssue(exception.Code, exception.GetRawMessage())}});
+ } catch (const std::exception& exception) {
+ CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
+ return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{NYql::TIssue{exception.what()}}});
+ } catch (...) {
+ CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
+ return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{NYql::TIssue{CurrentExceptionMessage()}}});
+ }
+ });
+ };
+ TPromise<NYdb::TStatus> promise = NewPromise<NYdb::TStatus>();
+ Register(new TDbRequest(DbPool, promise, handler));
+ return promise.GetFuture();
+}
+
NThreading::TFuture<void> TYdbControlPlaneStorageActor::PickTask(
const TPickTaskParams& taskParams,
const TRequestCountersPtr& requestCounters,
@@ -549,7 +549,7 @@ NThreading::TFuture<void> TYdbControlPlaneStorageActor::PickTask(
std::shared_ptr<TResponseTasks> responseTasks,
const TVector<TValidationQuery>& validators,
TTxSettings transactionMode)
-{
+{
return ReadModifyWrite(NActors::TActivationContext::ActorSystem(), taskParams.ReadQuery, taskParams.ReadParams,
taskParams.PrepareParams, requestCounters, debugInfo, validators, transactionMode, taskParams.RetryOnTli)
.Apply([=, responseTasks=responseTasks, queryId = taskParams.QueryId](const auto& future) {
@@ -571,112 +571,112 @@ TAsyncStatus TYdbControlPlaneStorageActor::ReadModifyWrite(
TTxSettings transactionMode,
bool retryOnTli)
{
- std::shared_ptr<int> retryCount = std::make_shared<int>();
- auto resultSets = std::make_shared<TVector<NYdb::TResultSet>>();
- auto transaction = std::make_shared<TMaybe<TTransaction>>();
-
- auto readModifyWriteHandler = [=](TSession session) {
- CollectDebugInfo(readQuery, readParams, session, debugInfo);
+ std::shared_ptr<int> retryCount = std::make_shared<int>();
+ auto resultSets = std::make_shared<TVector<NYdb::TResultSet>>();
+ auto transaction = std::make_shared<TMaybe<TTransaction>>();
+
+ auto readModifyWriteHandler = [=](TSession session) {
+ CollectDebugInfo(readQuery, readParams, session, debugInfo);
auto readResult = session.ExecuteDataQuery(readQuery, validators ? TTxControl::Tx(**transaction) : TTxControl::BeginTx(transactionMode), readParams, NYdb::NTable::TExecDataQuerySettings().KeepInQueryCache(true));
- auto readResultStatus = readResult.Apply([resultSets, transaction] (const TFuture<TDataQueryResult>& future) {
- NYdb::NTable::TDataQueryResult result = future.GetValue();
- *resultSets = result.GetResultSets();
- *transaction = result.GetTransaction();
- auto status = static_cast<TStatus>(result);
- if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
- return TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}};
- }
- return status;
- });
-
- TFuture<std::pair<TString, NYdb::TParams>> resultPrepare = readResultStatus.Apply([=](const auto& future) {
- return future.GetValue().IsSuccess() ? prepare(*resultSets) : make_pair(TString(""), NYdb::TParamsBuilder{}.Build());
- });
-
- return resultPrepare.Apply([=](const auto& future) mutable {
- if (!readResultStatus.GetValue().IsSuccess()) {
- return readResultStatus;
- }
-
- try {
- auto [writeQuery, params] = future.GetValue();
- if (!writeQuery) {
- return transaction->Get()->Commit().Apply([] (const auto& future) {
- auto result = future.GetValue();
- auto status = static_cast<TStatus>(result);
- if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
- return TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}};
- }
- return status;
- });
- }
- CollectDebugInfo(writeQuery, params, session, debugInfo);
- auto writeResult = session.ExecuteDataQuery(writeQuery, TTxControl::Tx(**transaction).CommitTx(), params, NYdb::NTable::TExecDataQuerySettings().KeepInQueryCache(true));
+ auto readResultStatus = readResult.Apply([resultSets, transaction] (const TFuture<TDataQueryResult>& future) {
+ NYdb::NTable::TDataQueryResult result = future.GetValue();
+ *resultSets = result.GetResultSets();
+ *transaction = result.GetTransaction();
+ auto status = static_cast<TStatus>(result);
+ if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
+ return TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}};
+ }
+ return status;
+ });
+
+ TFuture<std::pair<TString, NYdb::TParams>> resultPrepare = readResultStatus.Apply([=](const auto& future) {
+ return future.GetValue().IsSuccess() ? prepare(*resultSets) : make_pair(TString(""), NYdb::TParamsBuilder{}.Build());
+ });
+
+ return resultPrepare.Apply([=](const auto& future) mutable {
+ if (!readResultStatus.GetValue().IsSuccess()) {
+ return readResultStatus;
+ }
+
+ try {
+ auto [writeQuery, params] = future.GetValue();
+ if (!writeQuery) {
+ return transaction->Get()->Commit().Apply([] (const auto& future) {
+ auto result = future.GetValue();
+ auto status = static_cast<TStatus>(result);
+ if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
+ return TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}};
+ }
+ return status;
+ });
+ }
+ CollectDebugInfo(writeQuery, params, session, debugInfo);
+ auto writeResult = session.ExecuteDataQuery(writeQuery, TTxControl::Tx(**transaction).CommitTx(), params, NYdb::NTable::TExecDataQuerySettings().KeepInQueryCache(true));
return writeResult.Apply([retryOnTli] (const TFuture<TDataQueryResult>& future) {
- NYdb::NTable::TDataQueryResult result = future.GetValue();
- auto status = static_cast<TStatus>(result);
- if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
- return TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}};
- }
+ NYdb::NTable::TDataQueryResult result = future.GetValue();
+ auto status = static_cast<TStatus>(result);
+ if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
+ return TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}};
+ }
if (!retryOnTli && status.GetStatus() == EStatus::ABORTED) {
return TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{status.GetIssues()}};
}
- return status;
- });
- } catch (const TControlPlaneStorageException& exception) {
- CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
- return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{MakeErrorIssue(exception.Code, exception.GetRawMessage())}});
- } catch (const std::exception& exception) {
- CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
- return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{NYql::TIssue{exception.what()}}});
- } catch (...) {
- CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
- return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{NYql::TIssue{CurrentExceptionMessage()}}});
- }
- });
- };
-
- auto handler = [=] (TSession session) {
- if (*retryCount != 0) {
- requestCounters->Retry->Inc();
- }
- ++(*retryCount);
-
- std::shared_ptr<bool> successFinish = std::make_shared<bool>();
- return Validate(transaction, 0, validators, session, successFinish, debugInfo).Apply([=](const auto& future) {
- try {
- auto status = future.GetValue();
- if (!status.IsSuccess()) {
- return future;
- }
- if (*successFinish) {
- return future;
- }
- return readModifyWriteHandler(session);
- } catch (const TControlPlaneStorageException& exception) {
- CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
- return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{MakeErrorIssue(exception.Code, exception.GetRawMessage())}});
- } catch (const std::exception& exception) {
- CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
- return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{NYql::TIssue{exception.what()}}});
- } catch (...) {
- CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
- return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{NYql::TIssue{CurrentExceptionMessage()}}});
- }
- });
+ return status;
+ });
+ } catch (const TControlPlaneStorageException& exception) {
+ CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
+ return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{MakeErrorIssue(exception.Code, exception.GetRawMessage())}});
+ } catch (const std::exception& exception) {
+ CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
+ return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{NYql::TIssue{exception.what()}}});
+ } catch (...) {
+ CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
+ return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{NYql::TIssue{CurrentExceptionMessage()}}});
+ }
+ });
};
- TPromise<NYdb::TStatus> promise = NewPromise<NYdb::TStatus>();
- Register(new TDbRequest(DbPool, promise, handler));
- return promise.GetFuture();
-}
-
+
+ auto handler = [=] (TSession session) {
+ if (*retryCount != 0) {
+ requestCounters->Retry->Inc();
+ }
+ ++(*retryCount);
+
+ std::shared_ptr<bool> successFinish = std::make_shared<bool>();
+ return Validate(transaction, 0, validators, session, successFinish, debugInfo).Apply([=](const auto& future) {
+ try {
+ auto status = future.GetValue();
+ if (!status.IsSuccess()) {
+ return future;
+ }
+ if (*successFinish) {
+ return future;
+ }
+ return readModifyWriteHandler(session);
+ } catch (const TControlPlaneStorageException& exception) {
+ CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
+ return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{MakeErrorIssue(exception.Code, exception.GetRawMessage())}});
+ } catch (const std::exception& exception) {
+ CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
+ return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{NYql::TIssue{exception.what()}}});
+ } catch (...) {
+ CPS_LOG_AS_D(*actorSystem, "Validation: " << CurrentExceptionMessage());
+ return MakeFuture(TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{NYql::TIssue{CurrentExceptionMessage()}}});
+ }
+ });
+ };
+ TPromise<NYdb::TStatus> promise = NewPromise<NYdb::TStatus>();
+ Register(new TDbRequest(DbPool, promise, handler));
+ return promise.GetFuture();
+}
+
NActors::IActor* CreateYdbControlPlaneStorageServiceActor(
- const NConfig::TControlPlaneStorageConfig& config,
- const NConfig::TCommonConfig& common,
+ const NConfig::TControlPlaneStorageConfig& config,
+ const NConfig::TCommonConfig& common,
const NMonitoring::TDynamicCounterPtr& counters,
const ::NYq::TYqSharedResources::TPtr& yqSharedResources,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory) {
- return new TYdbControlPlaneStorageActor(config, common, counters, yqSharedResources, credentialsProviderFactory);
-}
-
+ return new TYdbControlPlaneStorageActor(config, common, counters, yqSharedResources, credentialsProviderFactory);
+}
+
} // NYq
diff --git a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_bindings.cpp b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_bindings.cpp
index fc617fe5f0..3432f1088a 100644
--- a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_bindings.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_bindings.cpp
@@ -1,643 +1,643 @@
-#include "ydb_control_plane_storage_impl.h"
-
-#include <util/string/join.h>
-
+#include "ydb_control_plane_storage_impl.h"
+
+#include <util/string/join.h>
+
#include <ydb/core/yq/libs/config/protos/issue_id.pb.h>
#include <ydb/core/yq/libs/control_plane_storage/validators.h>
#include <ydb/core/yq/libs/db_schema/db_schema.h>
-
-namespace NYq {
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvCreateBindingRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_CREATE_BINDING];
- requestCounters->InFly->Inc();
-
- const YandexQuery::CreateBindingRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- const TString token = ev->Get()->Token;
- const TString cloudId = ev->Get()->CloudId;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::MANAGE_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const TString bindingId = GetEntityIdAsString(Config.IdsPrefix, EEntityType::BINDING);
- int byteSize = request.ByteSize();
- const TString connectionId = request.content().connection_id();
- const TString idempotencyKey = request.idempotency_key();
-
- CPS_LOG_T(MakeLogPrefix(scope, user, bindingId)
- << "CreateBindingRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
-
- NYql::TIssues issues = ValidateBinding(ev);
- if (request.content().acl().visibility() == YandexQuery::Acl::SCOPE && !permissions.Check(TPermissions::MANAGE_PUBLIC)) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::ACCESS_DENIED, "Permission denied to create a binding with these parameters. Please receive a permission yq.resources.managePublic"));
- }
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, bindingId)
- << "CreateBindingRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvCreateBindingResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(CreateBindingRequest, scope, user, delta, byteSize, false);
- return;
- }
-
- YandexQuery::Binding binding;
- YandexQuery::BindingContent& content = *binding.mutable_content();
- content = request.content();
- *binding.mutable_meta() = CreateCommonMeta(bindingId, user, startTime, InitialRevision);
-
- YandexQuery::Internal::BindingInternal bindingInternal;
- bindingInternal.set_cloud_id(cloudId);
-
- std::shared_ptr<std::pair<YandexQuery::CreateBindingResult, TAuditDetails<YandexQuery::Binding>>> response = std::make_shared<std::pair<YandexQuery::CreateBindingResult, TAuditDetails<YandexQuery::Binding>>>();
- response->first.set_binding_id(bindingId);
- response->second.After.ConstructInPlace().CopyFrom(binding);
- response->second.CloudId = cloudId;
-
+
+namespace NYq {
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvCreateBindingRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_CREATE_BINDING];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::CreateBindingRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ const TString token = ev->Get()->Token;
+ const TString cloudId = ev->Get()->CloudId;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::MANAGE_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const TString bindingId = GetEntityIdAsString(Config.IdsPrefix, EEntityType::BINDING);
+ int byteSize = request.ByteSize();
+ const TString connectionId = request.content().connection_id();
+ const TString idempotencyKey = request.idempotency_key();
+
+ CPS_LOG_T(MakeLogPrefix(scope, user, bindingId)
+ << "CreateBindingRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+
+ NYql::TIssues issues = ValidateBinding(ev);
+ if (request.content().acl().visibility() == YandexQuery::Acl::SCOPE && !permissions.Check(TPermissions::MANAGE_PUBLIC)) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::ACCESS_DENIED, "Permission denied to create a binding with these parameters. Please receive a permission yq.resources.managePublic"));
+ }
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user, bindingId)
+ << "CreateBindingRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvCreateBindingResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(CreateBindingRequest, scope, user, delta, byteSize, false);
+ return;
+ }
+
+ YandexQuery::Binding binding;
+ YandexQuery::BindingContent& content = *binding.mutable_content();
+ content = request.content();
+ *binding.mutable_meta() = CreateCommonMeta(bindingId, user, startTime, InitialRevision);
+
+ YandexQuery::Internal::BindingInternal bindingInternal;
+ bindingInternal.set_cloud_id(cloudId);
+
+ std::shared_ptr<std::pair<YandexQuery::CreateBindingResult, TAuditDetails<YandexQuery::Binding>>> response = std::make_shared<std::pair<YandexQuery::CreateBindingResult, TAuditDetails<YandexQuery::Binding>>>();
+ response->first.set_binding_id(bindingId);
+ response->second.After.ConstructInPlace().CopyFrom(binding);
+ response->second.CloudId = cloudId;
+
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "CreateBinding");
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("binding_id", bindingId);
- queryBuilder.AddString("connection_id", connectionId);
- queryBuilder.AddString("user", user);
- queryBuilder.AddInt64("visibility", content.acl().visibility());
- queryBuilder.AddString("name", content.name());
- queryBuilder.AddString("binding", binding.SerializeAsString());
- queryBuilder.AddInt64("revision", InitialRevision);
- queryBuilder.AddString("internal", bindingInternal.SerializeAsString());
-
- InsertIdempotencyKey(queryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), startTime + Config.IdempotencyKeyTtl);
- queryBuilder.AddText(
- "INSERT INTO `" BINDINGS_TABLE_NAME "` (`" SCOPE_COLUMN_NAME "`, `" BINDING_ID_COLUMN_NAME "`, `" CONNECTION_ID_COLUMN_NAME "`, `" USER_COLUMN_NAME "`, `" VISIBILITY_COLUMN_NAME "`, `" NAME_COLUMN_NAME "`, `" BINDING_COLUMN_NAME "`, `" REVISION_COLUMN_NAME "`, `" INTERNAL_COLUMN_NAME "`) VALUES\n"
- " ($scope, $binding_id, $connection_id, $user, $visibility, $name, $binding, $revision, $internal);"
- );
-
- auto validatorName = CreateUniqueNameValidator(
- BINDINGS_TABLE_NAME,
- content.acl().visibility(),
- scope,
- content.name(),
- user,
- "Binding with the same name already exists. Please choose another name",
- YdbConnection->TablePathPrefix);
-
- auto validatorCountBindings = CreateCountEntitiesValidator(
- scope,
- BINDINGS_TABLE_NAME,
- Config.Proto.GetMaxCountBindings(),
- "Too many bindings in folder: " + ToString(Config.Proto.GetMaxCountBindings()) + ". Please remove unused bindings",
- YdbConnection->TablePathPrefix);
-
- auto validatorConnectionExists = CreateConnectionExistsValidator(
- scope,
- connectionId,
- "Connection " + connectionId + " does not exist or permission denied. Please check the id connection or your access rights",
- permissions,
- user,
- YdbConnection->TablePathPrefix);
-
- TVector<TValidationQuery> validators;
- if (idempotencyKey) {
- validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
- }
-
- validators.push_back(validatorName);
- validators.push_back(validatorCountBindings);
- validators.push_back(validatorConnectionExists);
-
- const auto query = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- TAsyncStatus result = Write(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo, validators);
- auto prepare = [response] { return *response; };
- auto success = SendAuditResponse<TEvControlPlaneStorage::TEvCreateBindingResponse, YandexQuery::CreateBindingResult, TAuditDetails<YandexQuery::Binding>>(
- MakeLogPrefix(scope, user, bindingId) + "CreateBindingRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(CreateBindingRequest, scope, user, delta, byteSize, future.GetValue());
- });
-}
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvListBindingsRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_BINDINGS];
- requestCounters->InFly->Inc();
-
- const YandexQuery::ListBindingsRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- const TString pageToken = request.page_token();
- const int byteSize = ev->Get()->Request.ByteSize();
- const int64_t limit = request.limit();
- const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::VIEW_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
-
- CPS_LOG_T(MakeLogPrefix(scope, user) << "ListBindingsRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
-
- NYql::TIssues issues = ValidateEvent(ev);
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user)
- << "ListBindingsRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvListBindingsResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(ListBindingsRequest, scope, user, delta, byteSize, false);
- return;
- }
-
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("binding_id", bindingId);
+ queryBuilder.AddString("connection_id", connectionId);
+ queryBuilder.AddString("user", user);
+ queryBuilder.AddInt64("visibility", content.acl().visibility());
+ queryBuilder.AddString("name", content.name());
+ queryBuilder.AddString("binding", binding.SerializeAsString());
+ queryBuilder.AddInt64("revision", InitialRevision);
+ queryBuilder.AddString("internal", bindingInternal.SerializeAsString());
+
+ InsertIdempotencyKey(queryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), startTime + Config.IdempotencyKeyTtl);
+ queryBuilder.AddText(
+ "INSERT INTO `" BINDINGS_TABLE_NAME "` (`" SCOPE_COLUMN_NAME "`, `" BINDING_ID_COLUMN_NAME "`, `" CONNECTION_ID_COLUMN_NAME "`, `" USER_COLUMN_NAME "`, `" VISIBILITY_COLUMN_NAME "`, `" NAME_COLUMN_NAME "`, `" BINDING_COLUMN_NAME "`, `" REVISION_COLUMN_NAME "`, `" INTERNAL_COLUMN_NAME "`) VALUES\n"
+ " ($scope, $binding_id, $connection_id, $user, $visibility, $name, $binding, $revision, $internal);"
+ );
+
+ auto validatorName = CreateUniqueNameValidator(
+ BINDINGS_TABLE_NAME,
+ content.acl().visibility(),
+ scope,
+ content.name(),
+ user,
+ "Binding with the same name already exists. Please choose another name",
+ YdbConnection->TablePathPrefix);
+
+ auto validatorCountBindings = CreateCountEntitiesValidator(
+ scope,
+ BINDINGS_TABLE_NAME,
+ Config.Proto.GetMaxCountBindings(),
+ "Too many bindings in folder: " + ToString(Config.Proto.GetMaxCountBindings()) + ". Please remove unused bindings",
+ YdbConnection->TablePathPrefix);
+
+ auto validatorConnectionExists = CreateConnectionExistsValidator(
+ scope,
+ connectionId,
+ "Connection " + connectionId + " does not exist or permission denied. Please check the id connection or your access rights",
+ permissions,
+ user,
+ YdbConnection->TablePathPrefix);
+
+ TVector<TValidationQuery> validators;
+ if (idempotencyKey) {
+ validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
+ }
+
+ validators.push_back(validatorName);
+ validators.push_back(validatorCountBindings);
+ validators.push_back(validatorConnectionExists);
+
+ const auto query = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ TAsyncStatus result = Write(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo, validators);
+ auto prepare = [response] { return *response; };
+ auto success = SendAuditResponse<TEvControlPlaneStorage::TEvCreateBindingResponse, YandexQuery::CreateBindingResult, TAuditDetails<YandexQuery::Binding>>(
+ MakeLogPrefix(scope, user, bindingId) + "CreateBindingRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(CreateBindingRequest, scope, user, delta, byteSize, future.GetValue());
+ });
+}
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvListBindingsRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_BINDINGS];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::ListBindingsRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ const TString pageToken = request.page_token();
+ const int byteSize = ev->Get()->Request.ByteSize();
+ const int64_t limit = request.limit();
+ const TString token = ev->Get()->Token;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::VIEW_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+
+ CPS_LOG_T(MakeLogPrefix(scope, user) << "ListBindingsRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+
+ NYql::TIssues issues = ValidateEvent(ev);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user)
+ << "ListBindingsRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvListBindingsResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(ListBindingsRequest, scope, user, delta, byteSize, false);
+ return;
+ }
+
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "ListBindings");
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("last_binding", pageToken);
- queryBuilder.AddUint64("limit", limit + 1);
-
- queryBuilder.AddText(
- "SELECT `" BINDING_ID_COLUMN_NAME "`, `" BINDING_COLUMN_NAME "` FROM `" BINDINGS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" BINDING_ID_COLUMN_NAME "` >= $last_binding\n"
- );
-
- TString filter;
- if (request.has_filter()) {
- TVector<TString> filters;
- if (request.filter().connection_id()) {
- queryBuilder.AddString("connection_id", request.filter().connection_id());
- filters.push_back("`" CONNECTION_ID_COLUMN_NAME "` == $connection_id");
- }
-
- if (request.filter().name()) {
- queryBuilder.AddString("filter_name", request.filter().name());
- filters.push_back("`" NAME_COLUMN_NAME "` LIKE '%' || $filter_name || '%'");
- }
-
- if (request.filter().created_by_me()) {
- queryBuilder.AddString("user", user);
- filters.push_back("`" USER_COLUMN_NAME "` = $user");
- }
-
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("last_binding", pageToken);
+ queryBuilder.AddUint64("limit", limit + 1);
+
+ queryBuilder.AddText(
+ "SELECT `" BINDING_ID_COLUMN_NAME "`, `" BINDING_COLUMN_NAME "` FROM `" BINDINGS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" BINDING_ID_COLUMN_NAME "` >= $last_binding\n"
+ );
+
+ TString filter;
+ if (request.has_filter()) {
+ TVector<TString> filters;
+ if (request.filter().connection_id()) {
+ queryBuilder.AddString("connection_id", request.filter().connection_id());
+ filters.push_back("`" CONNECTION_ID_COLUMN_NAME "` == $connection_id");
+ }
+
+ if (request.filter().name()) {
+ queryBuilder.AddString("filter_name", request.filter().name());
+ filters.push_back("`" NAME_COLUMN_NAME "` LIKE '%' || $filter_name || '%'");
+ }
+
+ if (request.filter().created_by_me()) {
+ queryBuilder.AddString("user", user);
+ filters.push_back("`" USER_COLUMN_NAME "` = $user");
+ }
+
filter = JoinSeq(" AND ", filters);
- }
-
- PrepareViewAccessCondition(queryBuilder, permissions, user);
-
- if (filter) {
- queryBuilder.AddText(" AND (" + filter + ")");
- }
-
- queryBuilder.AddText(
- "ORDER BY `" BINDING_ID_COLUMN_NAME "`\n"
- "LIMIT $limit;"
- );
-
- const auto query = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
- auto prepare = [resultSets=resultSets, limit] {
- if (resultSets->size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
- }
-
- YandexQuery::ListBindingsResult result;
- TResultSetParser parser(resultSets->front());
- while (parser.TryNextRow()) {
- YandexQuery::Binding binding;
- if (!binding.ParseFromString(*parser.ColumnParser(BINDING_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for binding. Please contact internal support";
- }
- YandexQuery::BriefBinding& briefBinding = *result.add_binding();
- briefBinding.set_name(binding.content().name());
- briefBinding.set_connection_id(binding.content().connection_id());
- *briefBinding.mutable_meta() = binding.meta();
- switch (binding.content().setting().binding_case()) {
- case YandexQuery::BindingSetting::kDataStreams: {
- briefBinding.set_type(YandexQuery::BindingSetting::DATA_STREAMS);
- break;
- }
- case YandexQuery::BindingSetting::kObjectStorage: {
- briefBinding.set_type(YandexQuery::BindingSetting::OBJECT_STORAGE);
- break;
- }
- // Do not replace with default. Adding a new binding should cause a compilation error
- case YandexQuery::BindingSetting::BINDING_NOT_SET:
- break;
- }
- }
-
- if (result.binding_size() == limit + 1) {
- result.set_next_page_token(result.binding(result.binding_size() - 1).meta().id());
- result.mutable_binding()->RemoveLast();
- }
- return result;
- };
-
- auto success = SendResponse<TEvControlPlaneStorage::TEvListBindingsResponse, YandexQuery::ListBindingsResult>(
- MakeLogPrefix(scope, user) + "ListBindingsRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(ListBindingsRequest, scope, user, delta, byteSize, future.GetValue());
- });
-}
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDescribeBindingRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_DESCRIBE_BINDING];
- requestCounters->InFly->Inc();
-
- const YandexQuery::DescribeBindingRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString bindingId = request.binding_id();
- const TString user = ev->Get()->User;
- const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::VIEW_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const int byteSize = request.ByteSize();
- CPS_LOG_T(MakeLogPrefix(scope, user, bindingId)
- << "DescribeBindingRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
- NYql::TIssues issues = ValidateEvent(ev);
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, bindingId)
- << "DescribeBindingRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvDescribeBindingResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(DescribeBindingRequest, scope, bindingId, user, delta, byteSize, false);
- return;
- }
-
+ }
+
+ PrepareViewAccessCondition(queryBuilder, permissions, user);
+
+ if (filter) {
+ queryBuilder.AddText(" AND (" + filter + ")");
+ }
+
+ queryBuilder.AddText(
+ "ORDER BY `" BINDING_ID_COLUMN_NAME "`\n"
+ "LIMIT $limit;"
+ );
+
+ const auto query = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ auto prepare = [resultSets=resultSets, limit] {
+ if (resultSets->size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
+ }
+
+ YandexQuery::ListBindingsResult result;
+ TResultSetParser parser(resultSets->front());
+ while (parser.TryNextRow()) {
+ YandexQuery::Binding binding;
+ if (!binding.ParseFromString(*parser.ColumnParser(BINDING_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for binding. Please contact internal support";
+ }
+ YandexQuery::BriefBinding& briefBinding = *result.add_binding();
+ briefBinding.set_name(binding.content().name());
+ briefBinding.set_connection_id(binding.content().connection_id());
+ *briefBinding.mutable_meta() = binding.meta();
+ switch (binding.content().setting().binding_case()) {
+ case YandexQuery::BindingSetting::kDataStreams: {
+ briefBinding.set_type(YandexQuery::BindingSetting::DATA_STREAMS);
+ break;
+ }
+ case YandexQuery::BindingSetting::kObjectStorage: {
+ briefBinding.set_type(YandexQuery::BindingSetting::OBJECT_STORAGE);
+ break;
+ }
+ // Do not replace with default. Adding a new binding should cause a compilation error
+ case YandexQuery::BindingSetting::BINDING_NOT_SET:
+ break;
+ }
+ }
+
+ if (result.binding_size() == limit + 1) {
+ result.set_next_page_token(result.binding(result.binding_size() - 1).meta().id());
+ result.mutable_binding()->RemoveLast();
+ }
+ return result;
+ };
+
+ auto success = SendResponse<TEvControlPlaneStorage::TEvListBindingsResponse, YandexQuery::ListBindingsResult>(
+ MakeLogPrefix(scope, user) + "ListBindingsRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(ListBindingsRequest, scope, user, delta, byteSize, future.GetValue());
+ });
+}
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDescribeBindingRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_DESCRIBE_BINDING];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::DescribeBindingRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString bindingId = request.binding_id();
+ const TString user = ev->Get()->User;
+ const TString token = ev->Get()->Token;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::VIEW_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const int byteSize = request.ByteSize();
+ CPS_LOG_T(MakeLogPrefix(scope, user, bindingId)
+ << "DescribeBindingRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+ NYql::TIssues issues = ValidateEvent(ev);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user, bindingId)
+ << "DescribeBindingRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvDescribeBindingResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(DescribeBindingRequest, scope, bindingId, user, delta, byteSize, false);
+ return;
+ }
+
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "DescribeBinding");
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("binding_id", bindingId);
- queryBuilder.AddText(
- "SELECT `" BINDING_COLUMN_NAME "` FROM `" BINDINGS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" BINDING_ID_COLUMN_NAME "` = $binding_id;"
- );
-
- const auto query = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
- auto prepare = [=, resultSets=resultSets] {
- if (resultSets->size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
- }
-
- TResultSetParser parser(resultSets->front());
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Binding does not exist or permission denied. Please check the id binding or your access rights";
- }
-
- YandexQuery::DescribeBindingResult result;
- if (!result.mutable_binding()->ParseFromString(*parser.ColumnParser(BINDING_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for binding. Please contact internal support";
- }
-
- bool hasViewAccess = HasViewAccess(permissions, result.binding().content().acl().visibility(), result.binding().meta().created_by(), user);
- if (!hasViewAccess) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Binding does not exist or permission denied. Please check the id binding or your access rights";
- }
- return result;
- };
-
- auto success = SendResponse<TEvControlPlaneStorage::TEvDescribeBindingResponse, YandexQuery::DescribeBindingResult>(
- MakeLogPrefix(scope, user, bindingId) + "DescribeBindingRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(DescribeBindingRequest, scope, user, bindingId, delta, byteSize, future.GetValue());
- });
-}
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvModifyBindingRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_MODIFY_BINDING];
- requestCounters->InFly->Inc();
-
- const YandexQuery::ModifyBindingRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString bindingId = request.binding_id();
- const TString user = ev->Get()->User;
- const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::MANAGE_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const int64_t previousRevision = request.previous_revision();
- const TString idempotencyKey = request.idempotency_key();
- const int byteSize = request.ByteSize();
- CPS_LOG_T(MakeLogPrefix(scope, user, bindingId)
- << "ModifyBindingRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
-
- NYql::TIssues issues = ValidateBinding(ev);
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, bindingId)
- << "ModifyBindingRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvModifyBindingResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(ModifyBindingRequest, scope, bindingId, user, delta, byteSize, false);
- return;
- }
-
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("binding_id", bindingId);
+ queryBuilder.AddText(
+ "SELECT `" BINDING_COLUMN_NAME "` FROM `" BINDINGS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" BINDING_ID_COLUMN_NAME "` = $binding_id;"
+ );
+
+ const auto query = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ auto prepare = [=, resultSets=resultSets] {
+ if (resultSets->size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
+ }
+
+ TResultSetParser parser(resultSets->front());
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Binding does not exist or permission denied. Please check the id binding or your access rights";
+ }
+
+ YandexQuery::DescribeBindingResult result;
+ if (!result.mutable_binding()->ParseFromString(*parser.ColumnParser(BINDING_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for binding. Please contact internal support";
+ }
+
+ bool hasViewAccess = HasViewAccess(permissions, result.binding().content().acl().visibility(), result.binding().meta().created_by(), user);
+ if (!hasViewAccess) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Binding does not exist or permission denied. Please check the id binding or your access rights";
+ }
+ return result;
+ };
+
+ auto success = SendResponse<TEvControlPlaneStorage::TEvDescribeBindingResponse, YandexQuery::DescribeBindingResult>(
+ MakeLogPrefix(scope, user, bindingId) + "DescribeBindingRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(DescribeBindingRequest, scope, user, bindingId, delta, byteSize, future.GetValue());
+ });
+}
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvModifyBindingRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_MODIFY_BINDING];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::ModifyBindingRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString bindingId = request.binding_id();
+ const TString user = ev->Get()->User;
+ const TString token = ev->Get()->Token;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::MANAGE_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const int64_t previousRevision = request.previous_revision();
+ const TString idempotencyKey = request.idempotency_key();
+ const int byteSize = request.ByteSize();
+ CPS_LOG_T(MakeLogPrefix(scope, user, bindingId)
+ << "ModifyBindingRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+
+ NYql::TIssues issues = ValidateBinding(ev);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user, bindingId)
+ << "ModifyBindingRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvModifyBindingResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(ModifyBindingRequest, scope, bindingId, user, delta, byteSize, false);
+ return;
+ }
+
TSqlQueryBuilder readQueryBuilder(YdbConnection->TablePathPrefix, "ModifyBinding(read)");
- readQueryBuilder.AddString("scope", scope);
- readQueryBuilder.AddString("binding_id", bindingId);
- readQueryBuilder.AddText(
- "SELECT `" BINDING_COLUMN_NAME "` FROM `" BINDINGS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" BINDING_ID_COLUMN_NAME "` = $binding_id;"
- );
-
- std::shared_ptr<std::pair<YandexQuery::ModifyBindingResult, TAuditDetails<YandexQuery::Binding>>> response = std::make_shared<std::pair<YandexQuery::ModifyBindingResult, TAuditDetails<YandexQuery::Binding>>>();
- auto prepareParams = [=, config=Config](const TVector<TResultSet>& resultSets) {
- if (resultSets.size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
- }
-
- YandexQuery::Binding binding;
- TResultSetParser parser(resultSets.front());
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Binding does not exist or permission denied. Please check the id binding or your access rights";
- }
-
- if (!binding.ParseFromString(*parser.ColumnParser(BINDING_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for binding. Please contact internal support";
- }
-
- bool hasManageAccess = HasManageAccess(permissions, binding.content().acl().visibility(), binding.meta().created_by(), user);
- if (!hasManageAccess) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Binding does not exist or permission denied. Please check the id binding or your access rights";
- }
-
- auto& meta = *binding.mutable_meta();
- meta.set_revision(meta.revision() + 1);
- meta.set_modified_by(user);
+ readQueryBuilder.AddString("scope", scope);
+ readQueryBuilder.AddString("binding_id", bindingId);
+ readQueryBuilder.AddText(
+ "SELECT `" BINDING_COLUMN_NAME "` FROM `" BINDINGS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" BINDING_ID_COLUMN_NAME "` = $binding_id;"
+ );
+
+ std::shared_ptr<std::pair<YandexQuery::ModifyBindingResult, TAuditDetails<YandexQuery::Binding>>> response = std::make_shared<std::pair<YandexQuery::ModifyBindingResult, TAuditDetails<YandexQuery::Binding>>>();
+ auto prepareParams = [=, config=Config](const TVector<TResultSet>& resultSets) {
+ if (resultSets.size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
+ }
+
+ YandexQuery::Binding binding;
+ TResultSetParser parser(resultSets.front());
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Binding does not exist or permission denied. Please check the id binding or your access rights";
+ }
+
+ if (!binding.ParseFromString(*parser.ColumnParser(BINDING_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for binding. Please contact internal support";
+ }
+
+ bool hasManageAccess = HasManageAccess(permissions, binding.content().acl().visibility(), binding.meta().created_by(), user);
+ if (!hasManageAccess) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Binding does not exist or permission denied. Please check the id binding or your access rights";
+ }
+
+ auto& meta = *binding.mutable_meta();
+ meta.set_revision(meta.revision() + 1);
+ meta.set_modified_by(user);
*meta.mutable_modified_at() = NProtoInterop::CastToProto(TInstant::Now());
-
- auto& content = *binding.mutable_content();
-
- bool validateType = content.setting().binding_case() == request.content().setting().binding_case();
-
- if (!validateType) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Binding type cannot be changed. Please specify the same binding type";
- }
-
- if (content.acl().visibility() == YandexQuery::Acl::SCOPE && request.content().acl().visibility() == YandexQuery::Acl::PRIVATE) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Changing visibility from SCOPE to PRIVATE is forbidden. Please create a new binding with visibility PRIVATE";
- }
-
- if (content.connection_id() != request.content().connection_id()) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Connection id cannot be changed. Please specify the same connection id";
- }
-
- content = request.content();
-
- YandexQuery::Internal::BindingInternal bindingInternal;
- response->second.After.ConstructInPlace().CopyFrom(binding);
- response->second.CloudId = bindingInternal.cloud_id();
-
+
+ auto& content = *binding.mutable_content();
+
+ bool validateType = content.setting().binding_case() == request.content().setting().binding_case();
+
+ if (!validateType) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Binding type cannot be changed. Please specify the same binding type";
+ }
+
+ if (content.acl().visibility() == YandexQuery::Acl::SCOPE && request.content().acl().visibility() == YandexQuery::Acl::PRIVATE) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Changing visibility from SCOPE to PRIVATE is forbidden. Please create a new binding with visibility PRIVATE";
+ }
+
+ if (content.connection_id() != request.content().connection_id()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Connection id cannot be changed. Please specify the same connection id";
+ }
+
+ content = request.content();
+
+ YandexQuery::Internal::BindingInternal bindingInternal;
+ response->second.After.ConstructInPlace().CopyFrom(binding);
+ response->second.CloudId = bindingInternal.cloud_id();
+
TSqlQueryBuilder writeQueryBuilder(YdbConnection->TablePathPrefix, "ModifyBinding(write)");
- writeQueryBuilder.AddString("scope", scope);
- writeQueryBuilder.AddString("binding_id", bindingId);
- writeQueryBuilder.AddInt64("visibility", YandexQuery::Acl::SCOPE); // TODO: fix me
- writeQueryBuilder.AddString("name", binding.content().name());
- writeQueryBuilder.AddInt64("revision", meta.revision());
- writeQueryBuilder.AddString("internal", bindingInternal.SerializeAsString());
- writeQueryBuilder.AddString("binding", binding.SerializeAsString());
- InsertIdempotencyKey(writeQueryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), TInstant::Now() + Config.IdempotencyKeyTtl);
- writeQueryBuilder.AddText(
- "UPDATE `" BINDINGS_TABLE_NAME "` SET `" VISIBILITY_COLUMN_NAME "` = $visibility, `" NAME_COLUMN_NAME "` = $name, `" REVISION_COLUMN_NAME "` = $revision, `" INTERNAL_COLUMN_NAME "` = $internal, `" BINDING_COLUMN_NAME "` = $binding\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" BINDING_ID_COLUMN_NAME "` = $binding_id;\n"
- );
- const auto writeQuery = writeQueryBuilder.Build();
- return make_pair(writeQuery.Sql, writeQuery.Params);
- };
-
- TVector<TValidationQuery> validators;
- if (idempotencyKey) {
- validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
- }
-
- auto accessValidator = CreateManageAccessValidator(
- BINDINGS_TABLE_NAME,
- BINDING_ID_COLUMN_NAME,
- scope,
- bindingId,
- user,
- "Binding does not exist or permission denied. Please check the id binding or your access rights",
- permissions,
- YdbConnection->TablePathPrefix);
- validators.push_back(accessValidator);
-
- if (previousRevision > 0) {
- auto revisionValidator = CreateRevisionValidator(
- BINDINGS_TABLE_NAME,
- BINDING_ID_COLUMN_NAME,
- scope,
- bindingId,
- previousRevision,
- "Revision of the binding has been changed already. Please restart the request with a new revision",
- YdbConnection->TablePathPrefix);
- validators.push_back(revisionValidator);
- }
-
- {
- auto modifyUniqueNameValidator = CreateModifyUniqueNameValidator(
- BINDINGS_TABLE_NAME,
- BINDING_ID_COLUMN_NAME,
- request.content().acl().visibility(),
- scope,
- request.content().name(),
- user,
- bindingId,
- "Binding with the same name already exists. Please choose another name",
- YdbConnection->TablePathPrefix);
- validators.push_back(modifyUniqueNameValidator);
- }
-
- const auto readQuery = readQueryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto result = ReadModifyWrite(NActors::TActivationContext::ActorSystem(), readQuery.Sql, readQuery.Params, prepareParams, requestCounters, debugInfo, validators);
- auto prepare = [response] { return *response; };
- auto success = SendAuditResponse<TEvControlPlaneStorage::TEvModifyBindingResponse, YandexQuery::ModifyBindingResult, TAuditDetails<YandexQuery::Binding>>(
- MakeLogPrefix(scope, user, bindingId) + "ModifyBindingRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(ModifyBindingRequest, scope, user, bindingId, delta, byteSize, future.GetValue());
- });
-}
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDeleteBindingRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_DELETE_BINDING];
- requestCounters->InFly->Inc();
-
- const YandexQuery::DeleteBindingRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- const TString token = ev->Get()->Token;
- const TString bindingId = request.binding_id();
- const TString idempotencyKey = request.idempotency_key();
- const int byteSize = ev->Get()->Request.ByteSize();
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::MANAGE_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const int previousRevision = request.previous_revision();
-
- CPS_LOG_T(MakeLogPrefix(scope, user, bindingId)
- << "DeleteBindingRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
-
- NYql::TIssues issues = ValidateEvent(ev);
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, bindingId)
- << "DeleteBindingRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvDeleteBindingResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(DeleteBindingRequest, scope, bindingId, user, delta, byteSize, false);
- return;
- }
-
- std::shared_ptr<std::pair<YandexQuery::DeleteBindingResult, TAuditDetails<YandexQuery::Binding>>> response = std::make_shared<std::pair<YandexQuery::DeleteBindingResult, TAuditDetails<YandexQuery::Binding>>>();
-
+ writeQueryBuilder.AddString("scope", scope);
+ writeQueryBuilder.AddString("binding_id", bindingId);
+ writeQueryBuilder.AddInt64("visibility", YandexQuery::Acl::SCOPE); // TODO: fix me
+ writeQueryBuilder.AddString("name", binding.content().name());
+ writeQueryBuilder.AddInt64("revision", meta.revision());
+ writeQueryBuilder.AddString("internal", bindingInternal.SerializeAsString());
+ writeQueryBuilder.AddString("binding", binding.SerializeAsString());
+ InsertIdempotencyKey(writeQueryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), TInstant::Now() + Config.IdempotencyKeyTtl);
+ writeQueryBuilder.AddText(
+ "UPDATE `" BINDINGS_TABLE_NAME "` SET `" VISIBILITY_COLUMN_NAME "` = $visibility, `" NAME_COLUMN_NAME "` = $name, `" REVISION_COLUMN_NAME "` = $revision, `" INTERNAL_COLUMN_NAME "` = $internal, `" BINDING_COLUMN_NAME "` = $binding\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" BINDING_ID_COLUMN_NAME "` = $binding_id;\n"
+ );
+ const auto writeQuery = writeQueryBuilder.Build();
+ return make_pair(writeQuery.Sql, writeQuery.Params);
+ };
+
+ TVector<TValidationQuery> validators;
+ if (idempotencyKey) {
+ validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
+ }
+
+ auto accessValidator = CreateManageAccessValidator(
+ BINDINGS_TABLE_NAME,
+ BINDING_ID_COLUMN_NAME,
+ scope,
+ bindingId,
+ user,
+ "Binding does not exist or permission denied. Please check the id binding or your access rights",
+ permissions,
+ YdbConnection->TablePathPrefix);
+ validators.push_back(accessValidator);
+
+ if (previousRevision > 0) {
+ auto revisionValidator = CreateRevisionValidator(
+ BINDINGS_TABLE_NAME,
+ BINDING_ID_COLUMN_NAME,
+ scope,
+ bindingId,
+ previousRevision,
+ "Revision of the binding has been changed already. Please restart the request with a new revision",
+ YdbConnection->TablePathPrefix);
+ validators.push_back(revisionValidator);
+ }
+
+ {
+ auto modifyUniqueNameValidator = CreateModifyUniqueNameValidator(
+ BINDINGS_TABLE_NAME,
+ BINDING_ID_COLUMN_NAME,
+ request.content().acl().visibility(),
+ scope,
+ request.content().name(),
+ user,
+ bindingId,
+ "Binding with the same name already exists. Please choose another name",
+ YdbConnection->TablePathPrefix);
+ validators.push_back(modifyUniqueNameValidator);
+ }
+
+ const auto readQuery = readQueryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto result = ReadModifyWrite(NActors::TActivationContext::ActorSystem(), readQuery.Sql, readQuery.Params, prepareParams, requestCounters, debugInfo, validators);
+ auto prepare = [response] { return *response; };
+ auto success = SendAuditResponse<TEvControlPlaneStorage::TEvModifyBindingResponse, YandexQuery::ModifyBindingResult, TAuditDetails<YandexQuery::Binding>>(
+ MakeLogPrefix(scope, user, bindingId) + "ModifyBindingRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(ModifyBindingRequest, scope, user, bindingId, delta, byteSize, future.GetValue());
+ });
+}
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDeleteBindingRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_DELETE_BINDING];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::DeleteBindingRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ const TString token = ev->Get()->Token;
+ const TString bindingId = request.binding_id();
+ const TString idempotencyKey = request.idempotency_key();
+ const int byteSize = ev->Get()->Request.ByteSize();
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::MANAGE_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const int previousRevision = request.previous_revision();
+
+ CPS_LOG_T(MakeLogPrefix(scope, user, bindingId)
+ << "DeleteBindingRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+
+ NYql::TIssues issues = ValidateEvent(ev);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user, bindingId)
+ << "DeleteBindingRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvDeleteBindingResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(DeleteBindingRequest, scope, bindingId, user, delta, byteSize, false);
+ return;
+ }
+
+ std::shared_ptr<std::pair<YandexQuery::DeleteBindingResult, TAuditDetails<YandexQuery::Binding>>> response = std::make_shared<std::pair<YandexQuery::DeleteBindingResult, TAuditDetails<YandexQuery::Binding>>>();
+
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "DeleteBinding");
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("binding_id", bindingId);
-
- InsertIdempotencyKey(queryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), TInstant::Now() + Config.IdempotencyKeyTtl);
- queryBuilder.AddText(
- "DELETE FROM `" BINDINGS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" BINDING_ID_COLUMN_NAME "` = $binding_id;"
- );
-
- TVector<TValidationQuery> validators;
- if (idempotencyKey) {
- validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
- }
-
- auto accessValidator = CreateManageAccessValidator(
- BINDINGS_TABLE_NAME,
- BINDING_ID_COLUMN_NAME,
- scope,
- bindingId,
- user,
- "Binding does not exist or permission denied. Please check the id binding or your access rights",
- permissions,
- YdbConnection->TablePathPrefix);
- validators.push_back(accessValidator);
-
- if (previousRevision > 0) {
- auto revisionValidator = CreateRevisionValidator(
- BINDINGS_TABLE_NAME,
- BINDING_ID_COLUMN_NAME,
- scope,
- bindingId,
- previousRevision,
- "Revision of the binding has been changed already. Please restart the request with a new revision",
- YdbConnection->TablePathPrefix);
- validators.push_back(revisionValidator);
- }
-
- validators.push_back(CreateEntityExtractor(
- scope,
- bindingId,
- BINDING_COLUMN_NAME,
- BINDING_ID_COLUMN_NAME,
- BINDINGS_TABLE_NAME,
- response,
- YdbConnection->TablePathPrefix));
-
- const auto query = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto result = Write(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo, validators);
- auto prepare = [response] { return *response; };
- auto success = SendAuditResponse<TEvControlPlaneStorage::TEvDeleteBindingResponse, YandexQuery::DeleteBindingResult, TAuditDetails<YandexQuery::Binding>>(
- MakeLogPrefix(scope, user, bindingId) + "DeleteBindingRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(DeleteBindingRequest, scope, user, bindingId, delta, byteSize, future.GetValue());
- });
-}
-
-} // NYq
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("binding_id", bindingId);
+
+ InsertIdempotencyKey(queryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), TInstant::Now() + Config.IdempotencyKeyTtl);
+ queryBuilder.AddText(
+ "DELETE FROM `" BINDINGS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" BINDING_ID_COLUMN_NAME "` = $binding_id;"
+ );
+
+ TVector<TValidationQuery> validators;
+ if (idempotencyKey) {
+ validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
+ }
+
+ auto accessValidator = CreateManageAccessValidator(
+ BINDINGS_TABLE_NAME,
+ BINDING_ID_COLUMN_NAME,
+ scope,
+ bindingId,
+ user,
+ "Binding does not exist or permission denied. Please check the id binding or your access rights",
+ permissions,
+ YdbConnection->TablePathPrefix);
+ validators.push_back(accessValidator);
+
+ if (previousRevision > 0) {
+ auto revisionValidator = CreateRevisionValidator(
+ BINDINGS_TABLE_NAME,
+ BINDING_ID_COLUMN_NAME,
+ scope,
+ bindingId,
+ previousRevision,
+ "Revision of the binding has been changed already. Please restart the request with a new revision",
+ YdbConnection->TablePathPrefix);
+ validators.push_back(revisionValidator);
+ }
+
+ validators.push_back(CreateEntityExtractor(
+ scope,
+ bindingId,
+ BINDING_COLUMN_NAME,
+ BINDING_ID_COLUMN_NAME,
+ BINDINGS_TABLE_NAME,
+ response,
+ YdbConnection->TablePathPrefix));
+
+ const auto query = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto result = Write(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo, validators);
+ auto prepare = [response] { return *response; };
+ auto success = SendAuditResponse<TEvControlPlaneStorage::TEvDeleteBindingResponse, YandexQuery::DeleteBindingResult, TAuditDetails<YandexQuery::Binding>>(
+ MakeLogPrefix(scope, user, bindingId) + "DeleteBindingRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(DeleteBindingRequest, scope, user, bindingId, delta, byteSize, future.GetValue());
+ });
+}
+
+} // NYq
diff --git a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_connections.cpp b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_connections.cpp
index ddb15b16c4..f22c782dce 100644
--- a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_connections.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_connections.cpp
@@ -1,640 +1,640 @@
-#include "validators.h"
-#include "ydb_control_plane_storage_impl.h"
-
-#include <util/string/join.h>
-
+#include "validators.h"
+#include "ydb_control_plane_storage_impl.h"
+
+#include <util/string/join.h>
+
#include <ydb/public/api/protos/yq.pb.h>
-
+
#include <ydb/core/yq/libs/config/protos/issue_id.pb.h>
#include <ydb/core/yq/libs/db_schema/db_schema.h>
-
-namespace NYq {
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvCreateConnectionRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_CREATE_CONNECTION];
- requestCounters->InFly->Inc();
-
- const YandexQuery::CreateConnectionRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- const TString token = ev->Get()->Token;
- const TString cloudId = ev->Get()->CloudId;
- const int byteSize = ev->Get()->Request.ByteSize();
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::MANAGE_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const TString idempotencyKey = request.idempotency_key();
- const TString connectionId = GetEntityIdAsString(Config.IdsPrefix, EEntityType::CONNECTION);
-
- CPS_LOG_T(MakeLogPrefix(scope, user, connectionId)
- << "CreateConnectionRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
-
- NYql::TIssues issues = ValidateConnection(ev);
- if (request.content().acl().visibility() == YandexQuery::Acl::SCOPE && !permissions.Check(TPermissions::MANAGE_PUBLIC)) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::ACCESS_DENIED, "Permission denied to create a connection with these parameters. Please receive a permission yq.resources.managePublic"));
- }
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, connectionId)
- << "CreateConnectionRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvCreateConnectionResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(CreateConnectionRequest, scope, user, delta, byteSize, false);
+
+namespace NYq {
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvCreateConnectionRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_CREATE_CONNECTION];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::CreateConnectionRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ const TString token = ev->Get()->Token;
+ const TString cloudId = ev->Get()->CloudId;
+ const int byteSize = ev->Get()->Request.ByteSize();
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::MANAGE_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const TString idempotencyKey = request.idempotency_key();
+ const TString connectionId = GetEntityIdAsString(Config.IdsPrefix, EEntityType::CONNECTION);
+
+ CPS_LOG_T(MakeLogPrefix(scope, user, connectionId)
+ << "CreateConnectionRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+
+ NYql::TIssues issues = ValidateConnection(ev);
+ if (request.content().acl().visibility() == YandexQuery::Acl::SCOPE && !permissions.Check(TPermissions::MANAGE_PUBLIC)) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::ACCESS_DENIED, "Permission denied to create a connection with these parameters. Please receive a permission yq.resources.managePublic"));
+ }
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user, connectionId)
+ << "CreateConnectionRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvCreateConnectionResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(CreateConnectionRequest, scope, user, delta, byteSize, false);
return;
- }
-
- YandexQuery::Connection connection;
- YandexQuery::ConnectionContent& content = *connection.mutable_content();
- content = request.content();
- *connection.mutable_meta() = CreateCommonMeta(connectionId, user, startTime, InitialRevision);
-
- YandexQuery::Internal::ConnectionInternal connectionInternal;
- connectionInternal.set_cloud_id(cloudId);
-
- std::shared_ptr<std::pair<YandexQuery::CreateConnectionResult, TAuditDetails<YandexQuery::Connection>>> response = std::make_shared<std::pair<YandexQuery::CreateConnectionResult, TAuditDetails<YandexQuery::Connection>>>();
- response->first.set_connection_id(connectionId);
- response->second.After.ConstructInPlace().CopyFrom(connection);
- response->second.CloudId = cloudId;
-
+ }
+
+ YandexQuery::Connection connection;
+ YandexQuery::ConnectionContent& content = *connection.mutable_content();
+ content = request.content();
+ *connection.mutable_meta() = CreateCommonMeta(connectionId, user, startTime, InitialRevision);
+
+ YandexQuery::Internal::ConnectionInternal connectionInternal;
+ connectionInternal.set_cloud_id(cloudId);
+
+ std::shared_ptr<std::pair<YandexQuery::CreateConnectionResult, TAuditDetails<YandexQuery::Connection>>> response = std::make_shared<std::pair<YandexQuery::CreateConnectionResult, TAuditDetails<YandexQuery::Connection>>>();
+ response->first.set_connection_id(connectionId);
+ response->second.After.ConstructInPlace().CopyFrom(connection);
+ response->second.CloudId = cloudId;
+
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "CreateConnection");
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("connection_id", connectionId);
- queryBuilder.AddString("user", user);
- queryBuilder.AddInt64("visibility", content.acl().visibility());
- queryBuilder.AddString("name", content.name());
- queryBuilder.AddInt64("connection_type", content.setting().connection_case());
- queryBuilder.AddString("connection", connection.SerializeAsString());
- queryBuilder.AddInt64("revision", InitialRevision);
- queryBuilder.AddString("internal", connectionInternal.SerializeAsString());
-
- InsertIdempotencyKey(queryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), startTime + Config.IdempotencyKeyTtl);
-
- queryBuilder.AddText(
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("connection_id", connectionId);
+ queryBuilder.AddString("user", user);
+ queryBuilder.AddInt64("visibility", content.acl().visibility());
+ queryBuilder.AddString("name", content.name());
+ queryBuilder.AddInt64("connection_type", content.setting().connection_case());
+ queryBuilder.AddString("connection", connection.SerializeAsString());
+ queryBuilder.AddInt64("revision", InitialRevision);
+ queryBuilder.AddString("internal", connectionInternal.SerializeAsString());
+
+ InsertIdempotencyKey(queryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), startTime + Config.IdempotencyKeyTtl);
+
+ queryBuilder.AddText(
"INSERT INTO `" CONNECTIONS_TABLE_NAME "` (`" SCOPE_COLUMN_NAME "`, `" CONNECTION_ID_COLUMN_NAME "`, `" USER_COLUMN_NAME "`, `" VISIBILITY_COLUMN_NAME "`, `" NAME_COLUMN_NAME "`, `" CONNECTION_TYPE_COLUMN_NAME "`, `" CONNECTION_COLUMN_NAME "`, `" REVISION_COLUMN_NAME "`, `" INTERNAL_COLUMN_NAME "`) VALUES\n"
- " ($scope, $connection_id, $user, $visibility, $name, $connection_type, $connection, $revision, $internal);"
- );
-
- auto validatorName = CreateUniqueNameValidator(
- CONNECTIONS_TABLE_NAME,
- content.acl().visibility(),
- scope,
- content.name(),
- user,
- "Connection with the same name already exists. Please choose another name",
- YdbConnection->TablePathPrefix);
-
- auto validatorCountConnections = CreateCountEntitiesValidator(
- scope,
- CONNECTIONS_TABLE_NAME,
- Config.Proto.GetMaxCountConnections(),
- "Too many connections in folder: " + ToString(Config.Proto.GetMaxCountConnections()) + ". Please remove unused connections",
- YdbConnection->TablePathPrefix);
-
- TVector<TValidationQuery> validators;
- if (idempotencyKey) {
- validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
- }
- validators.push_back(validatorName);
- validators.push_back(validatorCountConnections);
-
- const auto query = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- TAsyncStatus result = Write(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo, validators);
- auto prepare = [response] { return *response; };
- auto success = SendAuditResponse<TEvControlPlaneStorage::TEvCreateConnectionResponse, YandexQuery::CreateConnectionResult, TAuditDetails<YandexQuery::Connection>>(
- MakeLogPrefix(scope, user, connectionId) + "CreateConnectionRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(CreateConnectionRequest, scope, user, delta, byteSize, future.GetValue());
- });
-}
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvListConnectionsRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_CONNECTIONS];
- requestCounters->InFly->Inc();
-
- const YandexQuery::ListConnectionsRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- const TString pageToken = request.page_token();
- const int byteSize = ev->Get()->Request.ByteSize();
- const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::VIEW_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const int64_t limit = request.limit();
- CPS_LOG_T(MakeLogPrefix(scope, user)
- << "ListConnectionsRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
-
- NYql::TIssues issues = ValidateEvent(ev);
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user)
- << "ListConnectionsRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvListConnectionsResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(ListConnectionsRequest, scope, user, delta, byteSize, false);
+ " ($scope, $connection_id, $user, $visibility, $name, $connection_type, $connection, $revision, $internal);"
+ );
+
+ auto validatorName = CreateUniqueNameValidator(
+ CONNECTIONS_TABLE_NAME,
+ content.acl().visibility(),
+ scope,
+ content.name(),
+ user,
+ "Connection with the same name already exists. Please choose another name",
+ YdbConnection->TablePathPrefix);
+
+ auto validatorCountConnections = CreateCountEntitiesValidator(
+ scope,
+ CONNECTIONS_TABLE_NAME,
+ Config.Proto.GetMaxCountConnections(),
+ "Too many connections in folder: " + ToString(Config.Proto.GetMaxCountConnections()) + ". Please remove unused connections",
+ YdbConnection->TablePathPrefix);
+
+ TVector<TValidationQuery> validators;
+ if (idempotencyKey) {
+ validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
+ }
+ validators.push_back(validatorName);
+ validators.push_back(validatorCountConnections);
+
+ const auto query = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ TAsyncStatus result = Write(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo, validators);
+ auto prepare = [response] { return *response; };
+ auto success = SendAuditResponse<TEvControlPlaneStorage::TEvCreateConnectionResponse, YandexQuery::CreateConnectionResult, TAuditDetails<YandexQuery::Connection>>(
+ MakeLogPrefix(scope, user, connectionId) + "CreateConnectionRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(CreateConnectionRequest, scope, user, delta, byteSize, future.GetValue());
+ });
+}
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvListConnectionsRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_CONNECTIONS];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::ListConnectionsRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ const TString pageToken = request.page_token();
+ const int byteSize = ev->Get()->Request.ByteSize();
+ const TString token = ev->Get()->Token;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::VIEW_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const int64_t limit = request.limit();
+ CPS_LOG_T(MakeLogPrefix(scope, user)
+ << "ListConnectionsRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+
+ NYql::TIssues issues = ValidateEvent(ev);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user)
+ << "ListConnectionsRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvListConnectionsResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(ListConnectionsRequest, scope, user, delta, byteSize, false);
return;
- }
-
+ }
+
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "ListConnections");
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("last_connection", pageToken);
- queryBuilder.AddUint64("limit", limit + 1);
-
- queryBuilder.AddText(
- "SELECT `" CONNECTION_ID_COLUMN_NAME "`, `" CONNECTION_COLUMN_NAME "` FROM `" CONNECTIONS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" CONNECTION_ID_COLUMN_NAME "` >= $last_connection\n"
- );
-
- TString filter;
- if (request.has_filter()) {
- TVector<TString> filters;
- if (request.filter().name()) {
- queryBuilder.AddString("filter_name", request.filter().name());
- filters.push_back("`" NAME_COLUMN_NAME "` LIKE '%' || $filter_name || '%'");
- }
-
- if (request.filter().created_by_me()) {
- queryBuilder.AddString("user", user);
- filters.push_back("`" USER_COLUMN_NAME "` = $user");
- }
-
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("last_connection", pageToken);
+ queryBuilder.AddUint64("limit", limit + 1);
+
+ queryBuilder.AddText(
+ "SELECT `" CONNECTION_ID_COLUMN_NAME "`, `" CONNECTION_COLUMN_NAME "` FROM `" CONNECTIONS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" CONNECTION_ID_COLUMN_NAME "` >= $last_connection\n"
+ );
+
+ TString filter;
+ if (request.has_filter()) {
+ TVector<TString> filters;
+ if (request.filter().name()) {
+ queryBuilder.AddString("filter_name", request.filter().name());
+ filters.push_back("`" NAME_COLUMN_NAME "` LIKE '%' || $filter_name || '%'");
+ }
+
+ if (request.filter().created_by_me()) {
+ queryBuilder.AddString("user", user);
+ filters.push_back("`" USER_COLUMN_NAME "` = $user");
+ }
+
if (request.filter().connection_type() != YandexQuery::ConnectionSetting::CONNECTION_TYPE_UNSPECIFIED) {
- queryBuilder.AddInt64("connection_type", request.filter().connection_type());
- filters.push_back("`" CONNECTION_TYPE_COLUMN_NAME "` = $connection_type");
+ queryBuilder.AddInt64("connection_type", request.filter().connection_type());
+ filters.push_back("`" CONNECTION_TYPE_COLUMN_NAME "` = $connection_type");
}
filter = JoinSeq(" AND ", filters);
- }
-
- PrepareViewAccessCondition(queryBuilder, permissions, user);
-
- if (filter) {
- queryBuilder.AddText(" AND (" + filter + ")\n");
- }
-
- queryBuilder.AddText(
- "ORDER BY `" CONNECTION_ID_COLUMN_NAME "`\n"
- "LIMIT $limit;"
- );
-
- const auto query = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
- auto prepare = [resultSets=resultSets, limit] {
- if (resultSets->size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
- }
-
- YandexQuery::ListConnectionsResult result;
- TResultSetParser parser(resultSets->front());
- while (parser.TryNextRow()) {
- auto& connection = *result.add_connection();
- if (!connection.ParseFromString(*parser.ColumnParser(CONNECTION_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for connection. Please contact internal support";
- }
- auto& setting = *connection.mutable_content()->mutable_setting();
- if (setting.has_clickhouse_cluster()) {
- auto& ch = *setting.mutable_clickhouse_cluster();
- ch.set_password("");
- }
- }
-
- if (result.connection_size() == limit + 1) {
- result.set_next_page_token(result.connection(result.connection_size() - 1).meta().id());
- result.mutable_connection()->RemoveLast();
- }
- return result;
- };
-
- auto success = SendResponse<TEvControlPlaneStorage::TEvListConnectionsResponse, YandexQuery::ListConnectionsResult>(
- MakeLogPrefix(scope, user) + "ListConnectionsRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(ListConnectionsRequest, scope, user, delta, byteSize, future.GetValue());
- });
-}
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDescribeConnectionRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_DESCRIBE_CONNECTION];
- requestCounters->InFly->Inc();
-
- const YandexQuery::DescribeConnectionRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- const TString connectionId = request.connection_id();
- const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::VIEW_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const int byteSize = request.ByteSize();
-
- CPS_LOG_T(MakeLogPrefix(scope, user, connectionId)
- << "DescribeConnectionRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
-
- NYql::TIssues issues = ValidateEvent(ev);
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, connectionId)
- << "DescribeConnectionRequest, validation failed: "
- << NKikimr::MaskTicket(token)<< " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvDescribeConnectionResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(DescribeConnectionRequest, scope, connectionId, user, delta, byteSize, false);
+ }
+
+ PrepareViewAccessCondition(queryBuilder, permissions, user);
+
+ if (filter) {
+ queryBuilder.AddText(" AND (" + filter + ")\n");
+ }
+
+ queryBuilder.AddText(
+ "ORDER BY `" CONNECTION_ID_COLUMN_NAME "`\n"
+ "LIMIT $limit;"
+ );
+
+ const auto query = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ auto prepare = [resultSets=resultSets, limit] {
+ if (resultSets->size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
+ }
+
+ YandexQuery::ListConnectionsResult result;
+ TResultSetParser parser(resultSets->front());
+ while (parser.TryNextRow()) {
+ auto& connection = *result.add_connection();
+ if (!connection.ParseFromString(*parser.ColumnParser(CONNECTION_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for connection. Please contact internal support";
+ }
+ auto& setting = *connection.mutable_content()->mutable_setting();
+ if (setting.has_clickhouse_cluster()) {
+ auto& ch = *setting.mutable_clickhouse_cluster();
+ ch.set_password("");
+ }
+ }
+
+ if (result.connection_size() == limit + 1) {
+ result.set_next_page_token(result.connection(result.connection_size() - 1).meta().id());
+ result.mutable_connection()->RemoveLast();
+ }
+ return result;
+ };
+
+ auto success = SendResponse<TEvControlPlaneStorage::TEvListConnectionsResponse, YandexQuery::ListConnectionsResult>(
+ MakeLogPrefix(scope, user) + "ListConnectionsRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(ListConnectionsRequest, scope, user, delta, byteSize, future.GetValue());
+ });
+}
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDescribeConnectionRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_DESCRIBE_CONNECTION];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::DescribeConnectionRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ const TString connectionId = request.connection_id();
+ const TString token = ev->Get()->Token;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::VIEW_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const int byteSize = request.ByteSize();
+
+ CPS_LOG_T(MakeLogPrefix(scope, user, connectionId)
+ << "DescribeConnectionRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+
+ NYql::TIssues issues = ValidateEvent(ev);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user, connectionId)
+ << "DescribeConnectionRequest, validation failed: "
+ << NKikimr::MaskTicket(token)<< " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvDescribeConnectionResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(DescribeConnectionRequest, scope, connectionId, user, delta, byteSize, false);
return;
- }
-
+ }
+
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "DescribeConnection");
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("connection_id", connectionId);
-
- queryBuilder.AddText(
- "SELECT `" CONNECTION_COLUMN_NAME "` FROM `" CONNECTIONS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" CONNECTION_ID_COLUMN_NAME "` = $connection_id;"
- );
-
- const auto query = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
- auto prepare = [=, resultSets=resultSets] {
- if (resultSets->size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
- }
-
- YandexQuery::DescribeConnectionResult result;
- TResultSetParser parser(resultSets->front());
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Connection does not exist or permission denied. Please check the id connection or your access rights";
- }
-
- if (!result.mutable_connection()->ParseFromString(*parser.ColumnParser(CONNECTION_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for connection. Please contact internal support";
- }
-
- bool hasViewAccess = HasViewAccess(permissions, result.connection().content().acl().visibility(), result.connection().meta().created_by(), user);
- if (!hasViewAccess) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Connection does not exist or permission denied. Please check the id connection or your access rights";
- }
-
- auto& setting = *result.mutable_connection()->mutable_content()->mutable_setting();
- if (setting.has_clickhouse_cluster()) {
- auto& ch = *setting.mutable_clickhouse_cluster();
- ch.set_password("");
- }
- return result;
- };
-
- auto success = SendResponse<TEvControlPlaneStorage::TEvDescribeConnectionResponse, YandexQuery::DescribeConnectionResult>(
- MakeLogPrefix(scope, user, connectionId) + "DescribeConnectionRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(DescribeConnectionRequest, scope, connectionId, user, delta, byteSize, future.GetValue());
- });
-}
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvModifyConnectionRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_MODIFY_CONNECTION];
- requestCounters->InFly->Inc();
-
- const YandexQuery::ModifyConnectionRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::MANAGE_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const TString connectionId = request.connection_id();
- const int64_t previousRevision = request.previous_revision();
- const TString idempotencyKey = request.idempotency_key();
- const int byteSize = request.ByteSize();
- CPS_LOG_T(MakeLogPrefix(scope, user, connectionId)
- << "ModifyConnectionRequest: "
- << NKikimr::MaskTicket(token)
- << " " << request.DebugString());
-
- NYql::TIssues issues = ValidateConnection(ev, false);
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, connectionId)
- << "ModifyConnectionRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvModifyConnectionResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(ModifyConnectionRequest, scope, connectionId, user, delta, byteSize, false);
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("connection_id", connectionId);
+
+ queryBuilder.AddText(
+ "SELECT `" CONNECTION_COLUMN_NAME "` FROM `" CONNECTIONS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" CONNECTION_ID_COLUMN_NAME "` = $connection_id;"
+ );
+
+ const auto query = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ auto prepare = [=, resultSets=resultSets] {
+ if (resultSets->size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
+ }
+
+ YandexQuery::DescribeConnectionResult result;
+ TResultSetParser parser(resultSets->front());
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Connection does not exist or permission denied. Please check the id connection or your access rights";
+ }
+
+ if (!result.mutable_connection()->ParseFromString(*parser.ColumnParser(CONNECTION_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for connection. Please contact internal support";
+ }
+
+ bool hasViewAccess = HasViewAccess(permissions, result.connection().content().acl().visibility(), result.connection().meta().created_by(), user);
+ if (!hasViewAccess) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Connection does not exist or permission denied. Please check the id connection or your access rights";
+ }
+
+ auto& setting = *result.mutable_connection()->mutable_content()->mutable_setting();
+ if (setting.has_clickhouse_cluster()) {
+ auto& ch = *setting.mutable_clickhouse_cluster();
+ ch.set_password("");
+ }
+ return result;
+ };
+
+ auto success = SendResponse<TEvControlPlaneStorage::TEvDescribeConnectionResponse, YandexQuery::DescribeConnectionResult>(
+ MakeLogPrefix(scope, user, connectionId) + "DescribeConnectionRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(DescribeConnectionRequest, scope, connectionId, user, delta, byteSize, future.GetValue());
+ });
+}
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvModifyConnectionRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_MODIFY_CONNECTION];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::ModifyConnectionRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ const TString token = ev->Get()->Token;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::MANAGE_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const TString connectionId = request.connection_id();
+ const int64_t previousRevision = request.previous_revision();
+ const TString idempotencyKey = request.idempotency_key();
+ const int byteSize = request.ByteSize();
+ CPS_LOG_T(MakeLogPrefix(scope, user, connectionId)
+ << "ModifyConnectionRequest: "
+ << NKikimr::MaskTicket(token)
+ << " " << request.DebugString());
+
+ NYql::TIssues issues = ValidateConnection(ev, false);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user, connectionId)
+ << "ModifyConnectionRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvModifyConnectionResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(ModifyConnectionRequest, scope, connectionId, user, delta, byteSize, false);
return;
- }
+ }
TSqlQueryBuilder readQueryBuilder(YdbConnection->TablePathPrefix, "ModifyConnection(read)");
- readQueryBuilder.AddString("scope", scope);
- readQueryBuilder.AddString("connection_id", connectionId);
- readQueryBuilder.AddText(
- "SELECT `" CONNECTION_COLUMN_NAME "` FROM `" CONNECTIONS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" CONNECTION_ID_COLUMN_NAME "` = $connection_id;"
- );
-
- std::shared_ptr<std::pair<YandexQuery::ModifyConnectionResult, TAuditDetails<YandexQuery::Connection>>> response = std::make_shared<std::pair<YandexQuery::ModifyConnectionResult, TAuditDetails<YandexQuery::Connection>>>();
- auto prepareParams = [=, config=Config](const TVector<TResultSet>& resultSets) {
- if (resultSets.size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
- }
-
- TResultSetParser parser(resultSets.front());
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Connection does not exist or permission denied. Please check the id connection or your access rights";
- }
-
- YandexQuery::Connection connection;
- if (!connection.ParseFromString(*parser.ColumnParser(CONNECTION_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for connection. Please contact internal support";
- }
-
- auto& meta = *connection.mutable_meta();
- meta.set_revision(meta.revision() + 1);
- meta.set_modified_by(user);
+ readQueryBuilder.AddString("scope", scope);
+ readQueryBuilder.AddString("connection_id", connectionId);
+ readQueryBuilder.AddText(
+ "SELECT `" CONNECTION_COLUMN_NAME "` FROM `" CONNECTIONS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" CONNECTION_ID_COLUMN_NAME "` = $connection_id;"
+ );
+
+ std::shared_ptr<std::pair<YandexQuery::ModifyConnectionResult, TAuditDetails<YandexQuery::Connection>>> response = std::make_shared<std::pair<YandexQuery::ModifyConnectionResult, TAuditDetails<YandexQuery::Connection>>>();
+ auto prepareParams = [=, config=Config](const TVector<TResultSet>& resultSets) {
+ if (resultSets.size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets.size() << ". Please contact internal support";
+ }
+
+ TResultSetParser parser(resultSets.front());
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Connection does not exist or permission denied. Please check the id connection or your access rights";
+ }
+
+ YandexQuery::Connection connection;
+ if (!connection.ParseFromString(*parser.ColumnParser(CONNECTION_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for connection. Please contact internal support";
+ }
+
+ auto& meta = *connection.mutable_meta();
+ meta.set_revision(meta.revision() + 1);
+ meta.set_modified_by(user);
*meta.mutable_modified_at() = NProtoInterop::CastToProto(TInstant::Now());
-
- auto& content = *connection.mutable_content();
-
- bool validateType = content.setting().connection_case() == request.content().setting().connection_case();
-
- if (!validateType) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Connection type cannot be changed. Please specify the same connection type";
- }
-
- if (content.acl().visibility() == YandexQuery::Acl::SCOPE && request.content().acl().visibility() == YandexQuery::Acl::PRIVATE) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Changing visibility from SCOPE to PRIVATE is forbidden. Please create a new connection with visibility PRIVATE";
- }
-
- TString clickHousePassword;
- if (request.content().setting().has_clickhouse_cluster()) {
- clickHousePassword = request.content().setting().clickhouse_cluster().password();
- if (!clickHousePassword) {
- clickHousePassword = content.setting().clickhouse_cluster().password();
- }
- content = request.content();
- content.mutable_setting()->mutable_clickhouse_cluster()->set_password(clickHousePassword);
- } else {
- content = request.content();
- }
-
- YandexQuery::Internal::ConnectionInternal connectionInternal;
- response->second.After.ConstructInPlace().CopyFrom(connection);
- response->second.CloudId = connectionInternal.cloud_id();
-
+
+ auto& content = *connection.mutable_content();
+
+ bool validateType = content.setting().connection_case() == request.content().setting().connection_case();
+
+ if (!validateType) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Connection type cannot be changed. Please specify the same connection type";
+ }
+
+ if (content.acl().visibility() == YandexQuery::Acl::SCOPE && request.content().acl().visibility() == YandexQuery::Acl::PRIVATE) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Changing visibility from SCOPE to PRIVATE is forbidden. Please create a new connection with visibility PRIVATE";
+ }
+
+ TString clickHousePassword;
+ if (request.content().setting().has_clickhouse_cluster()) {
+ clickHousePassword = request.content().setting().clickhouse_cluster().password();
+ if (!clickHousePassword) {
+ clickHousePassword = content.setting().clickhouse_cluster().password();
+ }
+ content = request.content();
+ content.mutable_setting()->mutable_clickhouse_cluster()->set_password(clickHousePassword);
+ } else {
+ content = request.content();
+ }
+
+ YandexQuery::Internal::ConnectionInternal connectionInternal;
+ response->second.After.ConstructInPlace().CopyFrom(connection);
+ response->second.CloudId = connectionInternal.cloud_id();
+
TSqlQueryBuilder writeQueryBuilder(YdbConnection->TablePathPrefix, "ModifyConnection(write)");
- writeQueryBuilder.AddString("scope", scope);
- writeQueryBuilder.AddString("connection_id", connectionId);
- writeQueryBuilder.AddInt64("visibility", connection.content().acl().visibility());
- writeQueryBuilder.AddString("name", connection.content().name());
- writeQueryBuilder.AddInt64("revision", meta.revision());
- writeQueryBuilder.AddString("internal", connectionInternal.SerializeAsString());
- writeQueryBuilder.AddString("connection", connection.SerializeAsString());
- InsertIdempotencyKey(writeQueryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), TInstant::Now() + Config.IdempotencyKeyTtl);
- writeQueryBuilder.AddText(
- "UPDATE `" CONNECTIONS_TABLE_NAME "` SET `" VISIBILITY_COLUMN_NAME "` = $visibility, `" NAME_COLUMN_NAME "` = $name, `" REVISION_COLUMN_NAME "` = $revision, `" INTERNAL_COLUMN_NAME "` = $internal, `" CONNECTION_COLUMN_NAME "` = $connection\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" CONNECTION_ID_COLUMN_NAME "` = $connection_id;"
- );
- const auto writeQuery = writeQueryBuilder.Build();
- return make_pair(writeQuery.Sql, writeQuery.Params);
- };
-
- TVector<TValidationQuery> validators;
- if (idempotencyKey) {
- validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
- }
-
- auto accessValidator = CreateManageAccessValidator(
- CONNECTIONS_TABLE_NAME,
- CONNECTION_ID_COLUMN_NAME,
- scope,
- connectionId,
- user,
- "Connection does not exist or permission denied. Please check the id connection or your access rights",
- permissions,
- YdbConnection->TablePathPrefix);
- validators.push_back(accessValidator);
-
- if (previousRevision > 0) {
- auto revisionValidator = CreateRevisionValidator(
- CONNECTIONS_TABLE_NAME,
- CONNECTION_ID_COLUMN_NAME,
- scope,
- connectionId,
- previousRevision,
- "Revision of the connection has been changed already. Please restart the request with a new revision",
- YdbConnection->TablePathPrefix);
- validators.push_back(revisionValidator);
- }
-
- {
- auto modifyUniqueNameValidator = CreateModifyUniqueNameValidator(
- CONNECTIONS_TABLE_NAME,
- CONNECTION_ID_COLUMN_NAME,
- request.content().acl().visibility(),
- scope,
- request.content().name(),
- user,
- connectionId,
- "Connection with the same name already exists. Please choose another name",
- YdbConnection->TablePathPrefix);
- validators.push_back(modifyUniqueNameValidator);
- }
-
- const auto readQuery = readQueryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto result = ReadModifyWrite(NActors::TActivationContext::ActorSystem(), readQuery.Sql, readQuery.Params, prepareParams, requestCounters, debugInfo, validators);
- auto prepare = [response] { return *response; };
- auto success = SendAuditResponse<TEvControlPlaneStorage::TEvModifyConnectionResponse, YandexQuery::ModifyConnectionResult, TAuditDetails<YandexQuery::Connection>>(
- MakeLogPrefix(scope, user, connectionId) + "ModifyConnectionRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(ModifyConnectionRequest, scope, user, connectionId, delta, byteSize, future.GetValue());
- });
-}
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDeleteConnectionRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_DELETE_CONNECTION];
- requestCounters->InFly->Inc();
-
- const YandexQuery::DeleteConnectionRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::MANAGE_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const TString connectionId = request.connection_id();
- const TString idempotencyKey = request.idempotency_key();
- const int byteSize = request.ByteSize();
- const int previousRevision = request.previous_revision();
- CPS_LOG_T(MakeLogPrefix(scope, user, connectionId)
- << "DeleteConnectionRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
-
- NYql::TIssues issues = ValidateEvent(ev);
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, connectionId)
- << "DeleteConnectionRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvDeleteConnectionResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(DeleteConnectionRequest, scope, connectionId, user, delta, byteSize, false);
+ writeQueryBuilder.AddString("scope", scope);
+ writeQueryBuilder.AddString("connection_id", connectionId);
+ writeQueryBuilder.AddInt64("visibility", connection.content().acl().visibility());
+ writeQueryBuilder.AddString("name", connection.content().name());
+ writeQueryBuilder.AddInt64("revision", meta.revision());
+ writeQueryBuilder.AddString("internal", connectionInternal.SerializeAsString());
+ writeQueryBuilder.AddString("connection", connection.SerializeAsString());
+ InsertIdempotencyKey(writeQueryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), TInstant::Now() + Config.IdempotencyKeyTtl);
+ writeQueryBuilder.AddText(
+ "UPDATE `" CONNECTIONS_TABLE_NAME "` SET `" VISIBILITY_COLUMN_NAME "` = $visibility, `" NAME_COLUMN_NAME "` = $name, `" REVISION_COLUMN_NAME "` = $revision, `" INTERNAL_COLUMN_NAME "` = $internal, `" CONNECTION_COLUMN_NAME "` = $connection\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" CONNECTION_ID_COLUMN_NAME "` = $connection_id;"
+ );
+ const auto writeQuery = writeQueryBuilder.Build();
+ return make_pair(writeQuery.Sql, writeQuery.Params);
+ };
+
+ TVector<TValidationQuery> validators;
+ if (idempotencyKey) {
+ validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
+ }
+
+ auto accessValidator = CreateManageAccessValidator(
+ CONNECTIONS_TABLE_NAME,
+ CONNECTION_ID_COLUMN_NAME,
+ scope,
+ connectionId,
+ user,
+ "Connection does not exist or permission denied. Please check the id connection or your access rights",
+ permissions,
+ YdbConnection->TablePathPrefix);
+ validators.push_back(accessValidator);
+
+ if (previousRevision > 0) {
+ auto revisionValidator = CreateRevisionValidator(
+ CONNECTIONS_TABLE_NAME,
+ CONNECTION_ID_COLUMN_NAME,
+ scope,
+ connectionId,
+ previousRevision,
+ "Revision of the connection has been changed already. Please restart the request with a new revision",
+ YdbConnection->TablePathPrefix);
+ validators.push_back(revisionValidator);
+ }
+
+ {
+ auto modifyUniqueNameValidator = CreateModifyUniqueNameValidator(
+ CONNECTIONS_TABLE_NAME,
+ CONNECTION_ID_COLUMN_NAME,
+ request.content().acl().visibility(),
+ scope,
+ request.content().name(),
+ user,
+ connectionId,
+ "Connection with the same name already exists. Please choose another name",
+ YdbConnection->TablePathPrefix);
+ validators.push_back(modifyUniqueNameValidator);
+ }
+
+ const auto readQuery = readQueryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto result = ReadModifyWrite(NActors::TActivationContext::ActorSystem(), readQuery.Sql, readQuery.Params, prepareParams, requestCounters, debugInfo, validators);
+ auto prepare = [response] { return *response; };
+ auto success = SendAuditResponse<TEvControlPlaneStorage::TEvModifyConnectionResponse, YandexQuery::ModifyConnectionResult, TAuditDetails<YandexQuery::Connection>>(
+ MakeLogPrefix(scope, user, connectionId) + "ModifyConnectionRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(ModifyConnectionRequest, scope, user, connectionId, delta, byteSize, future.GetValue());
+ });
+}
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDeleteConnectionRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_DELETE_CONNECTION];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::DeleteConnectionRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ const TString token = ev->Get()->Token;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::MANAGE_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const TString connectionId = request.connection_id();
+ const TString idempotencyKey = request.idempotency_key();
+ const int byteSize = request.ByteSize();
+ const int previousRevision = request.previous_revision();
+ CPS_LOG_T(MakeLogPrefix(scope, user, connectionId)
+ << "DeleteConnectionRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+
+ NYql::TIssues issues = ValidateEvent(ev);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user, connectionId)
+ << "DeleteConnectionRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvDeleteConnectionResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(DeleteConnectionRequest, scope, connectionId, user, delta, byteSize, false);
return;
- }
-
- std::shared_ptr<std::pair<YandexQuery::DeleteConnectionResult, TAuditDetails<YandexQuery::Connection>>> response = std::make_shared<std::pair<YandexQuery::DeleteConnectionResult, TAuditDetails<YandexQuery::Connection>>>();
+ }
+ std::shared_ptr<std::pair<YandexQuery::DeleteConnectionResult, TAuditDetails<YandexQuery::Connection>>> response = std::make_shared<std::pair<YandexQuery::DeleteConnectionResult, TAuditDetails<YandexQuery::Connection>>>();
+
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "DeleteConnection");
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("connection_id", connectionId);
-
- InsertIdempotencyKey(queryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), TInstant::Now() + Config.IdempotencyKeyTtl);
- queryBuilder.AddText(
- "DELETE FROM `" CONNECTIONS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" CONNECTION_ID_COLUMN_NAME "` = $connection_id;"
- );
-
- TVector<TValidationQuery> validators;
- if (idempotencyKey) {
- validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
- }
-
- auto accessValidator = CreateManageAccessValidator(
- CONNECTIONS_TABLE_NAME,
- CONNECTION_ID_COLUMN_NAME,
- scope,
- connectionId,
- user,
- "Connection does not exist or permission denied. Please check the id connection or your access rights",
- permissions,
- YdbConnection->TablePathPrefix);
- validators.push_back(accessValidator);
-
- if (previousRevision > 0) {
- auto revisionValidator = CreateRevisionValidator(
- CONNECTIONS_TABLE_NAME,
- CONNECTION_ID_COLUMN_NAME,
- scope,
- connectionId,
- previousRevision,
- "Revision of the connection has been changed already. Please restart the request with a new revision",
- YdbConnection->TablePathPrefix);
- validators.push_back(revisionValidator);
- }
-
- {
- auto relatedBindingsValidator = CreateRelatedBindingsValidator(scope,
- connectionId,
- "There are bindings related with connection. Please remove them at the beginning",
- YdbConnection->TablePathPrefix);
- validators.push_back(relatedBindingsValidator);
- }
-
- validators.push_back(CreateEntityExtractor(
- scope,
- connectionId,
- CONNECTION_COLUMN_NAME,
- CONNECTION_ID_COLUMN_NAME,
- CONNECTIONS_TABLE_NAME,
- response,
- YdbConnection->TablePathPrefix));
-
- const auto query = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto result = Write(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo, validators);
- auto prepare = [response] { return *response; };
- auto success = SendAuditResponse<TEvControlPlaneStorage::TEvDeleteConnectionResponse, YandexQuery::DeleteConnectionResult, TAuditDetails<YandexQuery::Connection>>(
- MakeLogPrefix(scope, user, connectionId) + "DeleteConnectionRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(DeleteConnectionRequest, scope, user, connectionId, delta, byteSize, future.GetValue());
- });
-}
-
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("connection_id", connectionId);
+
+ InsertIdempotencyKey(queryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), TInstant::Now() + Config.IdempotencyKeyTtl);
+ queryBuilder.AddText(
+ "DELETE FROM `" CONNECTIONS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" CONNECTION_ID_COLUMN_NAME "` = $connection_id;"
+ );
+
+ TVector<TValidationQuery> validators;
+ if (idempotencyKey) {
+ validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
+ }
+
+ auto accessValidator = CreateManageAccessValidator(
+ CONNECTIONS_TABLE_NAME,
+ CONNECTION_ID_COLUMN_NAME,
+ scope,
+ connectionId,
+ user,
+ "Connection does not exist or permission denied. Please check the id connection or your access rights",
+ permissions,
+ YdbConnection->TablePathPrefix);
+ validators.push_back(accessValidator);
+
+ if (previousRevision > 0) {
+ auto revisionValidator = CreateRevisionValidator(
+ CONNECTIONS_TABLE_NAME,
+ CONNECTION_ID_COLUMN_NAME,
+ scope,
+ connectionId,
+ previousRevision,
+ "Revision of the connection has been changed already. Please restart the request with a new revision",
+ YdbConnection->TablePathPrefix);
+ validators.push_back(revisionValidator);
+ }
+
+ {
+ auto relatedBindingsValidator = CreateRelatedBindingsValidator(scope,
+ connectionId,
+ "There are bindings related with connection. Please remove them at the beginning",
+ YdbConnection->TablePathPrefix);
+ validators.push_back(relatedBindingsValidator);
+ }
+
+ validators.push_back(CreateEntityExtractor(
+ scope,
+ connectionId,
+ CONNECTION_COLUMN_NAME,
+ CONNECTION_ID_COLUMN_NAME,
+ CONNECTIONS_TABLE_NAME,
+ response,
+ YdbConnection->TablePathPrefix));
+
+ const auto query = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto result = Write(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo, validators);
+ auto prepare = [response] { return *response; };
+ auto success = SendAuditResponse<TEvControlPlaneStorage::TEvDeleteConnectionResponse, YandexQuery::DeleteConnectionResult, TAuditDetails<YandexQuery::Connection>>(
+ MakeLogPrefix(scope, user, connectionId) + "DeleteConnectionRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(DeleteConnectionRequest, scope, user, connectionId, delta, byteSize, future.GetValue());
+ });
+}
+
} // NYq
diff --git a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_impl.h b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_impl.h
index 1c8cda7ee7..3e8169f8a7 100644
--- a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_impl.h
+++ b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_impl.h
@@ -1,30 +1,30 @@
-#pragma once
-
-#include "control_plane_storage.h"
+#pragma once
+
+#include "control_plane_storage.h"
#include "control_plane_storage_counters.h"
-#include "exceptions.h"
-#include "extractors.h"
+#include "exceptions.h"
+#include "extractors.h"
#include <ydb/core/yq/libs/control_plane_storage/internal/response_tasks.h>
-#include "probes.h"
-#include "util.h"
-#include "validators.h"
-
-#include <util/generic/guid.h>
-#include <util/system/yassert.h>
-
-#include <library/cpp/actors/core/actor_bootstrapped.h>
-#include <library/cpp/lwtrace/mon/mon_lwtrace.h>
-#include <library/cpp/monlib/service/pages/templates.h>
+#include "probes.h"
+#include "util.h"
+#include "validators.h"
+
+#include <util/generic/guid.h>
+#include <util/system/yassert.h>
+
+#include <library/cpp/actors/core/actor_bootstrapped.h>
+#include <library/cpp/lwtrace/mon/mon_lwtrace.h>
+#include <library/cpp/monlib/service/pages/templates.h>
#include <library/cpp/protobuf/interop/cast.h>
-
+
#include <ydb/public/api/protos/yq.pb.h>
#include <ydb/public/sdk/cpp/client/ydb_scheme/scheme.h>
-
+
#include <ydb/library/security/util.h>
-
+
#include <ydb/core/base/appdata.h>
#include <ydb/core/mon/mon.h>
-
+
#include <ydb/core/yq/libs/common/entity_id.h>
#include <ydb/core/yq/libs/config/protos/issue_id.pb.h>
#include <ydb/core/yq/libs/config/yq_issue.h>
@@ -33,371 +33,371 @@
#include <ydb/core/yq/libs/db_schema/db_schema.h>
#include <ydb/core/yq/libs/ydb/util.h>
#include <ydb/core/yq/libs/ydb/ydb.h>
-
-namespace NYq {
-
-using namespace NActors;
-using namespace NConfig;
-using namespace NKikimr;
-using namespace NThreading;
-using namespace NYdb;
-using namespace NYdb::NTable;
-
-inline static void PrepareAccessConditionImpl(TSqlQueryBuilder& builder, TPermissions permissions, const TString& user, TPermissions::TPermission privatePermission, TPermissions::TPermission publicPermission) {
- if (permissions.Check(publicPermission) && permissions.Check(privatePermission)) {
- // any row
- } else if (permissions.Check(publicPermission)) {
- builder.AddString("user", user);
- builder.AddInt64("visibility_scope", YandexQuery::Acl::SCOPE);
- builder.AddText(" AND (`" VISIBILITY_COLUMN_NAME "` = $visibility_scope OR `" USER_COLUMN_NAME "` = $user)");
- } else if (permissions.Check(privatePermission)) {
- builder.AddInt64("visibility_private", YandexQuery::Acl::PRIVATE);
- builder.AddText(" AND (`" VISIBILITY_COLUMN_NAME "` = $visibility_private)");
- } else {
- builder.AddString("user", user);
- builder.AddInt64("visibility_private", YandexQuery::Acl::PRIVATE);
- builder.AddText(" AND (`" VISIBILITY_COLUMN_NAME "` = $visibility_private AND `" USER_COLUMN_NAME "` = $user)");
- }
-}
-
-inline static void PrepareViewAccessCondition(TSqlQueryBuilder& builder, TPermissions permissions, const TString& user) {
- PrepareAccessConditionImpl(builder, permissions, user, TPermissions::VIEW_PRIVATE, TPermissions::VIEW_PUBLIC);
-}
-
-inline static void PrepareManageAccessCondition(TSqlQueryBuilder& builder, TPermissions permissions, const TString& user) {
- PrepareAccessConditionImpl(builder, permissions, user, TPermissions::MANAGE_PRIVATE, TPermissions::MANAGE_PUBLIC);
-}
-
-inline static bool HasAccessImpl(TPermissions permissions, YandexQuery::Acl::Visibility entityVisibility, const TString& entityUser, const TString& user, TPermissions::TPermission privatePermission, TPermissions::TPermission publicPermission) {
- return (permissions.Check(publicPermission) && permissions.Check(privatePermission))
- || (permissions.Check(publicPermission) && (entityVisibility == YandexQuery::Acl::SCOPE || entityUser == user))
- || (permissions.Check(privatePermission) && entityVisibility == YandexQuery::Acl::PRIVATE)
- || (entityVisibility == YandexQuery::Acl::PRIVATE && entityUser == user);
-}
-
-
-inline static bool HasViewAccess(TPermissions permissions, YandexQuery::Acl::Visibility entityVisibility, const TString& entityUser, const TString& user) {
- return HasAccessImpl(permissions, entityVisibility, entityUser, user, TPermissions::VIEW_PRIVATE, TPermissions::VIEW_PUBLIC);
-}
-
-inline static bool HasManageAccess(TPermissions permissions, YandexQuery::Acl::Visibility entityVisibility, const TString& entityUser, const TString& user) {
- return HasAccessImpl(permissions, entityVisibility, entityUser, user, TPermissions::MANAGE_PRIVATE, TPermissions::MANAGE_PUBLIC);
-}
-
-LWTRACE_USING(YQ_CONTROL_PLANE_STORAGE_PROVIDER);
-
-using TRequestCountersPtr = TIntrusivePtr<TRequestCounters>;
-
-class TYdbControlPlaneStorageActor : public NActors::TActorBootstrapped<TYdbControlPlaneStorageActor> {
- enum ERequestType {
- RT_CREATE_QUERY,
- RT_LIST_QUERIES,
- RT_DESCRIBE_QUERY,
+
+namespace NYq {
+
+using namespace NActors;
+using namespace NConfig;
+using namespace NKikimr;
+using namespace NThreading;
+using namespace NYdb;
+using namespace NYdb::NTable;
+
+inline static void PrepareAccessConditionImpl(TSqlQueryBuilder& builder, TPermissions permissions, const TString& user, TPermissions::TPermission privatePermission, TPermissions::TPermission publicPermission) {
+ if (permissions.Check(publicPermission) && permissions.Check(privatePermission)) {
+ // any row
+ } else if (permissions.Check(publicPermission)) {
+ builder.AddString("user", user);
+ builder.AddInt64("visibility_scope", YandexQuery::Acl::SCOPE);
+ builder.AddText(" AND (`" VISIBILITY_COLUMN_NAME "` = $visibility_scope OR `" USER_COLUMN_NAME "` = $user)");
+ } else if (permissions.Check(privatePermission)) {
+ builder.AddInt64("visibility_private", YandexQuery::Acl::PRIVATE);
+ builder.AddText(" AND (`" VISIBILITY_COLUMN_NAME "` = $visibility_private)");
+ } else {
+ builder.AddString("user", user);
+ builder.AddInt64("visibility_private", YandexQuery::Acl::PRIVATE);
+ builder.AddText(" AND (`" VISIBILITY_COLUMN_NAME "` = $visibility_private AND `" USER_COLUMN_NAME "` = $user)");
+ }
+}
+
+inline static void PrepareViewAccessCondition(TSqlQueryBuilder& builder, TPermissions permissions, const TString& user) {
+ PrepareAccessConditionImpl(builder, permissions, user, TPermissions::VIEW_PRIVATE, TPermissions::VIEW_PUBLIC);
+}
+
+inline static void PrepareManageAccessCondition(TSqlQueryBuilder& builder, TPermissions permissions, const TString& user) {
+ PrepareAccessConditionImpl(builder, permissions, user, TPermissions::MANAGE_PRIVATE, TPermissions::MANAGE_PUBLIC);
+}
+
+inline static bool HasAccessImpl(TPermissions permissions, YandexQuery::Acl::Visibility entityVisibility, const TString& entityUser, const TString& user, TPermissions::TPermission privatePermission, TPermissions::TPermission publicPermission) {
+ return (permissions.Check(publicPermission) && permissions.Check(privatePermission))
+ || (permissions.Check(publicPermission) && (entityVisibility == YandexQuery::Acl::SCOPE || entityUser == user))
+ || (permissions.Check(privatePermission) && entityVisibility == YandexQuery::Acl::PRIVATE)
+ || (entityVisibility == YandexQuery::Acl::PRIVATE && entityUser == user);
+}
+
+
+inline static bool HasViewAccess(TPermissions permissions, YandexQuery::Acl::Visibility entityVisibility, const TString& entityUser, const TString& user) {
+ return HasAccessImpl(permissions, entityVisibility, entityUser, user, TPermissions::VIEW_PRIVATE, TPermissions::VIEW_PUBLIC);
+}
+
+inline static bool HasManageAccess(TPermissions permissions, YandexQuery::Acl::Visibility entityVisibility, const TString& entityUser, const TString& user) {
+ return HasAccessImpl(permissions, entityVisibility, entityUser, user, TPermissions::MANAGE_PRIVATE, TPermissions::MANAGE_PUBLIC);
+}
+
+LWTRACE_USING(YQ_CONTROL_PLANE_STORAGE_PROVIDER);
+
+using TRequestCountersPtr = TIntrusivePtr<TRequestCounters>;
+
+class TYdbControlPlaneStorageActor : public NActors::TActorBootstrapped<TYdbControlPlaneStorageActor> {
+ enum ERequestType {
+ RT_CREATE_QUERY,
+ RT_LIST_QUERIES,
+ RT_DESCRIBE_QUERY,
RT_GET_QUERY_STATUS,
- RT_MODIFY_QUERY,
- RT_DELETE_QUERY,
- RT_CONTROL_QUERY,
- RT_GET_RESULT_DATA,
- RT_LIST_JOBS_DATA,
+ RT_MODIFY_QUERY,
+ RT_DELETE_QUERY,
+ RT_CONTROL_QUERY,
+ RT_GET_RESULT_DATA,
+ RT_LIST_JOBS_DATA,
RT_DESCRIBE_JOB,
- RT_CREATE_CONNECTION,
- RT_LIST_CONNECTIONS,
- RT_DESCRIBE_CONNECTION,
- RT_MODIFY_CONNECTION,
- RT_DELETE_CONNECTION,
- RT_CREATE_BINDING,
- RT_LIST_BINDINGS,
- RT_DESCRIBE_BINDING,
- RT_MODIFY_BINDING,
- RT_DELETE_BINDING,
- RT_WRITE_RESULT_DATA,
- RT_GET_TASK,
- RT_PING_TASK,
+ RT_CREATE_CONNECTION,
+ RT_LIST_CONNECTIONS,
+ RT_DESCRIBE_CONNECTION,
+ RT_MODIFY_CONNECTION,
+ RT_DELETE_CONNECTION,
+ RT_CREATE_BINDING,
+ RT_LIST_BINDINGS,
+ RT_DESCRIBE_BINDING,
+ RT_MODIFY_BINDING,
+ RT_DELETE_BINDING,
+ RT_WRITE_RESULT_DATA,
+ RT_GET_TASK,
+ RT_PING_TASK,
RT_NODES_HEALTH_CHECK,
- RT_MAX,
- };
-
- struct TCounters: public virtual TThrRefBase {
- std::array<TRequestCountersPtr, RT_MAX> Requests = CreateArray<RT_MAX, TRequestCountersPtr>({
- { MakeIntrusive<TRequestCounters>("CreateQuery") },
- { MakeIntrusive<TRequestCounters>("ListQueries") },
- { MakeIntrusive<TRequestCounters>("DescribeQuery") },
+ RT_MAX,
+ };
+
+ struct TCounters: public virtual TThrRefBase {
+ std::array<TRequestCountersPtr, RT_MAX> Requests = CreateArray<RT_MAX, TRequestCountersPtr>({
+ { MakeIntrusive<TRequestCounters>("CreateQuery") },
+ { MakeIntrusive<TRequestCounters>("ListQueries") },
+ { MakeIntrusive<TRequestCounters>("DescribeQuery") },
{ MakeIntrusive<TRequestCounters>("GetQueryStatus") },
- { MakeIntrusive<TRequestCounters>("ModifyQuery") },
- { MakeIntrusive<TRequestCounters>("DeleteQuery") },
- { MakeIntrusive<TRequestCounters>("ControlQuery") },
- { MakeIntrusive<TRequestCounters>("GetResultData") },
- { MakeIntrusive<TRequestCounters>("ListJobs") },
+ { MakeIntrusive<TRequestCounters>("ModifyQuery") },
+ { MakeIntrusive<TRequestCounters>("DeleteQuery") },
+ { MakeIntrusive<TRequestCounters>("ControlQuery") },
+ { MakeIntrusive<TRequestCounters>("GetResultData") },
+ { MakeIntrusive<TRequestCounters>("ListJobs") },
{ MakeIntrusive<TRequestCounters>("DescribeJob") },
- { MakeIntrusive<TRequestCounters>("CreateConnection") },
- { MakeIntrusive<TRequestCounters>("ListConnections") },
- { MakeIntrusive<TRequestCounters>("DescribeConnection") },
- { MakeIntrusive<TRequestCounters>("ModifyConnection") },
- { MakeIntrusive<TRequestCounters>("DeleteConnection") },
- { MakeIntrusive<TRequestCounters>("CreateBinding") },
- { MakeIntrusive<TRequestCounters>("ListBindings") },
- { MakeIntrusive<TRequestCounters>("DescribeBinding") },
- { MakeIntrusive<TRequestCounters>("ModifyBinding") },
- { MakeIntrusive<TRequestCounters>("DeleteBinding") },
- { MakeIntrusive<TRequestCounters>("WriteResultData") },
- { MakeIntrusive<TRequestCounters>("GetTask") },
- { MakeIntrusive<TRequestCounters>("PingTask") },
+ { MakeIntrusive<TRequestCounters>("CreateConnection") },
+ { MakeIntrusive<TRequestCounters>("ListConnections") },
+ { MakeIntrusive<TRequestCounters>("DescribeConnection") },
+ { MakeIntrusive<TRequestCounters>("ModifyConnection") },
+ { MakeIntrusive<TRequestCounters>("DeleteConnection") },
+ { MakeIntrusive<TRequestCounters>("CreateBinding") },
+ { MakeIntrusive<TRequestCounters>("ListBindings") },
+ { MakeIntrusive<TRequestCounters>("DescribeBinding") },
+ { MakeIntrusive<TRequestCounters>("ModifyBinding") },
+ { MakeIntrusive<TRequestCounters>("DeleteBinding") },
+ { MakeIntrusive<TRequestCounters>("WriteResultData") },
+ { MakeIntrusive<TRequestCounters>("GetTask") },
+ { MakeIntrusive<TRequestCounters>("PingTask") },
{ MakeIntrusive<TRequestCounters>("NodesHealthCheck") },
- });
-
- NMonitoring::TDynamicCounterPtr Counters;
-
- explicit TCounters(const NMonitoring::TDynamicCounterPtr& counters)
- : Counters(counters)
- {
- for (auto& request: Requests) {
- request->Register(Counters);
- }
- }
- };
-
- struct TConfig {
- NConfig::TControlPlaneStorageConfig Proto;
- TString IdsPrefix;
- TDuration IdempotencyKeyTtl;
- TDuration AutomaticQueriesTtl;
+ });
+
+ NMonitoring::TDynamicCounterPtr Counters;
+
+ explicit TCounters(const NMonitoring::TDynamicCounterPtr& counters)
+ : Counters(counters)
+ {
+ for (auto& request: Requests) {
+ request->Register(Counters);
+ }
+ }
+ };
+
+ struct TConfig {
+ NConfig::TControlPlaneStorageConfig Proto;
+ TString IdsPrefix;
+ TDuration IdempotencyKeyTtl;
+ TDuration AutomaticQueriesTtl;
TDuration ResultSetsTtl;
- TDuration AnalyticsRetryCounterUpdateTime;
- TDuration StreamingRetryCounterUpdateTime;
- TDuration TaskLeaseTtl;
- TSet<YandexQuery::ConnectionSetting::ConnectionCase> AvailableConnections;
- TSet<YandexQuery::BindingSetting::BindingCase> AvailableBindings;
-
- TConfig(const NConfig::TControlPlaneStorageConfig& config, const NConfig::TCommonConfig& common);
- };
-
- TCounters Counters;
+ TDuration AnalyticsRetryCounterUpdateTime;
+ TDuration StreamingRetryCounterUpdateTime;
+ TDuration TaskLeaseTtl;
+ TSet<YandexQuery::ConnectionSetting::ConnectionCase> AvailableConnections;
+ TSet<YandexQuery::BindingSetting::BindingCase> AvailableBindings;
+
+ TConfig(const NConfig::TControlPlaneStorageConfig& config, const NConfig::TCommonConfig& common);
+ };
+
+ TCounters Counters;
TFinalStatusCounters FinalStatusCounters;
-
- TConfig Config;
-
+
+ TConfig Config;
+
TYdbConnectionPtr YdbConnection;
-
+
::NYq::TYqSharedResources::TPtr YqSharedResources;
TDbPool::TPtr DbPool;
-
- static constexpr int64_t InitialRevision = 1;
+
+ static constexpr int64_t InitialRevision = 1;
NKikimr::TYdbCredentialsProviderFactory CredProviderFactory;
-public:
+public:
TYdbControlPlaneStorageActor(
- const NConfig::TControlPlaneStorageConfig& config,
- const NConfig::TCommonConfig& common,
+ const NConfig::TControlPlaneStorageConfig& config,
+ const NConfig::TCommonConfig& common,
const NMonitoring::TDynamicCounterPtr& counters,
const ::NYq::TYqSharedResources::TPtr& yqSharedResources,
const NKikimr::TYdbCredentialsProviderFactory& credProviderFactory)
- : Counters(counters)
+ : Counters(counters)
, FinalStatusCounters(counters)
- , Config(config, common)
+ , Config(config, common)
, YqSharedResources(yqSharedResources)
, CredProviderFactory(credProviderFactory)
- {
- }
-
+ {
+ }
+
static constexpr char ActorName[] = "YQ_CONTROL_PLANE_STORAGE";
- void Bootstrap();
-
- STRICT_STFUNC(StateFunc,
- hFunc(TEvControlPlaneStorage::TEvCreateQueryRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvListQueriesRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvDescribeQueryRequest, Handle);
+ void Bootstrap();
+
+ STRICT_STFUNC(StateFunc,
+ hFunc(TEvControlPlaneStorage::TEvCreateQueryRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvListQueriesRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvDescribeQueryRequest, Handle);
hFunc(TEvControlPlaneStorage::TEvGetQueryStatusRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvModifyQueryRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvDeleteQueryRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvControlQueryRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvGetResultDataRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvListJobsRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvModifyQueryRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvDeleteQueryRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvControlQueryRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvGetResultDataRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvListJobsRequest, Handle);
hFunc(TEvControlPlaneStorage::TEvDescribeJobRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvCreateConnectionRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvListConnectionsRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvDescribeConnectionRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvModifyConnectionRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvDeleteConnectionRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvCreateBindingRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvListBindingsRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvDescribeBindingRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvModifyBindingRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvDeleteBindingRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvWriteResultDataRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvGetTaskRequest, Handle);
- hFunc(TEvControlPlaneStorage::TEvPingTaskRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvCreateConnectionRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvListConnectionsRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvDescribeConnectionRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvModifyConnectionRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvDeleteConnectionRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvCreateBindingRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvListBindingsRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvDescribeBindingRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvModifyBindingRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvDeleteBindingRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvWriteResultDataRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvGetTaskRequest, Handle);
+ hFunc(TEvControlPlaneStorage::TEvPingTaskRequest, Handle);
hFunc(TEvControlPlaneStorage::TEvNodesHealthCheckRequest, Handle);
- hFunc(NMon::TEvHttpInfo, Handle);
- )
-
- void Handle(TEvControlPlaneStorage::TEvCreateQueryRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvListQueriesRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvDescribeQueryRequest::TPtr& ev);
+ hFunc(NMon::TEvHttpInfo, Handle);
+ )
+
+ void Handle(TEvControlPlaneStorage::TEvCreateQueryRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvListQueriesRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvDescribeQueryRequest::TPtr& ev);
void Handle(TEvControlPlaneStorage::TEvGetQueryStatusRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvModifyQueryRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvDeleteQueryRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvControlQueryRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvGetResultDataRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvListJobsRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvModifyQueryRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvDeleteQueryRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvControlQueryRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvGetResultDataRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvListJobsRequest::TPtr& ev);
void Handle(TEvControlPlaneStorage::TEvDescribeJobRequest::TPtr& ev);
-
- void Handle(TEvControlPlaneStorage::TEvCreateConnectionRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvListConnectionsRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvDescribeConnectionRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvModifyConnectionRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvDeleteConnectionRequest::TPtr& ev);
-
- void Handle(TEvControlPlaneStorage::TEvCreateBindingRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvListBindingsRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvDescribeBindingRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvModifyBindingRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvDeleteBindingRequest::TPtr& ev);
-
- void Handle(TEvControlPlaneStorage::TEvWriteResultDataRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvGetTaskRequest::TPtr& ev);
- void Handle(TEvControlPlaneStorage::TEvPingTaskRequest::TPtr& ev);
-
+
+ void Handle(TEvControlPlaneStorage::TEvCreateConnectionRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvListConnectionsRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvDescribeConnectionRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvModifyConnectionRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvDeleteConnectionRequest::TPtr& ev);
+
+ void Handle(TEvControlPlaneStorage::TEvCreateBindingRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvListBindingsRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvDescribeBindingRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvModifyBindingRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvDeleteBindingRequest::TPtr& ev);
+
+ void Handle(TEvControlPlaneStorage::TEvWriteResultDataRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvGetTaskRequest::TPtr& ev);
+ void Handle(TEvControlPlaneStorage::TEvPingTaskRequest::TPtr& ev);
+
void Handle(TEvControlPlaneStorage::TEvNodesHealthCheckRequest::TPtr& ev);
- template<typename T>
- NYql::TIssues ValidateConnection(T& ev, bool clickHousePasswordRequire = true)
- {
- const auto& request = ev->Get()->Request;
- NYql::TIssues issues = ValidateEvent(ev);
-
- if (!request.has_content()) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content field is not specified"));
- }
-
- const YandexQuery::ConnectionContent& content = request.content();
- if (content.acl().visibility() == YandexQuery::Acl::VISIBILITY_UNSPECIFIED) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.acl.visibility field is not specified"));
- }
-
+ template<typename T>
+ NYql::TIssues ValidateConnection(T& ev, bool clickHousePasswordRequire = true)
+ {
+ const auto& request = ev->Get()->Request;
+ NYql::TIssues issues = ValidateEvent(ev);
+
+ if (!request.has_content()) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content field is not specified"));
+ }
+
+ const YandexQuery::ConnectionContent& content = request.content();
+ if (content.acl().visibility() == YandexQuery::Acl::VISIBILITY_UNSPECIFIED) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.acl.visibility field is not specified"));
+ }
+
if (content.name() != to_lower(content.name())) {
issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "Incorrect connection name: " + content.name() + ". Please use only lower case"));
}
- if (!content.has_setting()) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting field is not specified"));
- }
-
- const YandexQuery::ConnectionSetting& setting = content.setting();
- if (!Config.AvailableConnections.contains(setting.connection_case())) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "connection of the specified type is disabled"));
- }
-
- switch (setting.connection_case()) {
- case YandexQuery::ConnectionSetting::kYdbDatabase: {
- const YandexQuery::YdbDatabase database = setting.ydb_database();
- if (!database.has_auth() || database.auth().identity_case() == YandexQuery::IamAuth::IDENTITY_NOT_SET) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.ydb_database.auth field is not specified"));
- }
-
- if (database.auth().identity_case() == YandexQuery::IamAuth::kCurrentIam && Config.Proto.GetDisableCurrentIam()) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "current iam authorization is disabled"));
- }
-
- if (!database.database_id() && !(database.endpoint() && database.database())) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.ydb_database.{database_id||database,endpoint} field is not specified"));
- }
- break;
- }
- case YandexQuery::ConnectionSetting::kClickhouseCluster: {
- const YandexQuery::ClickHouseCluster ch = setting.clickhouse_cluster();
- if (!ch.has_auth() || ch.auth().identity_case() == YandexQuery::IamAuth::IDENTITY_NOT_SET) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.clickhouse_cluster.auth field is not specified"));
- }
-
- if (ch.auth().identity_case() == YandexQuery::IamAuth::kCurrentIam && Config.Proto.GetDisableCurrentIam()) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "current iam authorization is disabled"));
- }
-
- if (!ch.database_id() && !(ch.host() && ch.port())) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.clickhouse_cluster.{database_id||host,port} field is not specified"));
- }
-
- if (!ch.login()) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.clickhouse_cluster.login field is not specified"));
- }
-
- if (!ch.password() && clickHousePasswordRequire) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.clickhouse_cluster.password field is not specified"));
- }
- break;
- }
- case YandexQuery::ConnectionSetting::kObjectStorage: {
- const YandexQuery::ObjectStorageConnection objectStorage = setting.object_storage();
- if (!objectStorage.has_auth() || objectStorage.auth().identity_case() == YandexQuery::IamAuth::IDENTITY_NOT_SET) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.object_storage.auth field is not specified"));
- }
-
- if (objectStorage.auth().identity_case() == YandexQuery::IamAuth::kCurrentIam && Config.Proto.GetDisableCurrentIam()) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "current iam authorization is disabled"));
- }
-
- if (!objectStorage.bucket()) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.object_storage.bucket field is not specified"));
- }
- break;
- }
- case YandexQuery::ConnectionSetting::kDataStreams: {
- const YandexQuery::DataStreams dataStreams = setting.data_streams();
- if (!dataStreams.has_auth() || dataStreams.auth().identity_case() == YandexQuery::IamAuth::IDENTITY_NOT_SET) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.data_streams.auth field is not specified"));
- }
-
- if (dataStreams.auth().identity_case() == YandexQuery::IamAuth::kCurrentIam && Config.Proto.GetDisableCurrentIam()) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "current iam authorization is disabled"));
- }
-
- if (!dataStreams.database_id() && !(dataStreams.endpoint() && dataStreams.database())) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.data_streams.{database_id||database,endpoint} field is not specified"));
- }
- break;
- }
- case YandexQuery::ConnectionSetting::kMonitoring: {
- const YandexQuery::Monitoring monitoring = setting.monitoring();
- if (!monitoring.has_auth() || monitoring.auth().identity_case() == YandexQuery::IamAuth::IDENTITY_NOT_SET) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.monitoring.auth field is not specified"));
- }
-
- if (monitoring.auth().identity_case() == YandexQuery::IamAuth::kCurrentIam && Config.Proto.GetDisableCurrentIam()) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "current iam authorization is disabled"));
- }
-
- if (!monitoring.project()) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.monitoring.project field is not specified"));
- }
-
- if (!monitoring.cluster()) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.monitoring.cluster field is not specified"));
- }
- break;
- }
- case YandexQuery::ConnectionSetting::CONNECTION_NOT_SET: {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "connection is not set"));
- break;
- }
- // Do not add default. Adding a new connection should cause a compilation error
- }
- return issues;
- }
-
- template<typename T>
- NYql::TIssues ValidateBinding(T& ev)
- {
- const auto& request = ev->Get()->Request;
- NYql::TIssues issues = ValidateEvent(ev);
-
+ if (!content.has_setting()) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting field is not specified"));
+ }
+
+ const YandexQuery::ConnectionSetting& setting = content.setting();
+ if (!Config.AvailableConnections.contains(setting.connection_case())) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "connection of the specified type is disabled"));
+ }
+
+ switch (setting.connection_case()) {
+ case YandexQuery::ConnectionSetting::kYdbDatabase: {
+ const YandexQuery::YdbDatabase database = setting.ydb_database();
+ if (!database.has_auth() || database.auth().identity_case() == YandexQuery::IamAuth::IDENTITY_NOT_SET) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.ydb_database.auth field is not specified"));
+ }
+
+ if (database.auth().identity_case() == YandexQuery::IamAuth::kCurrentIam && Config.Proto.GetDisableCurrentIam()) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "current iam authorization is disabled"));
+ }
+
+ if (!database.database_id() && !(database.endpoint() && database.database())) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.ydb_database.{database_id||database,endpoint} field is not specified"));
+ }
+ break;
+ }
+ case YandexQuery::ConnectionSetting::kClickhouseCluster: {
+ const YandexQuery::ClickHouseCluster ch = setting.clickhouse_cluster();
+ if (!ch.has_auth() || ch.auth().identity_case() == YandexQuery::IamAuth::IDENTITY_NOT_SET) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.clickhouse_cluster.auth field is not specified"));
+ }
+
+ if (ch.auth().identity_case() == YandexQuery::IamAuth::kCurrentIam && Config.Proto.GetDisableCurrentIam()) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "current iam authorization is disabled"));
+ }
+
+ if (!ch.database_id() && !(ch.host() && ch.port())) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.clickhouse_cluster.{database_id||host,port} field is not specified"));
+ }
+
+ if (!ch.login()) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.clickhouse_cluster.login field is not specified"));
+ }
+
+ if (!ch.password() && clickHousePasswordRequire) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.clickhouse_cluster.password field is not specified"));
+ }
+ break;
+ }
+ case YandexQuery::ConnectionSetting::kObjectStorage: {
+ const YandexQuery::ObjectStorageConnection objectStorage = setting.object_storage();
+ if (!objectStorage.has_auth() || objectStorage.auth().identity_case() == YandexQuery::IamAuth::IDENTITY_NOT_SET) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.object_storage.auth field is not specified"));
+ }
+
+ if (objectStorage.auth().identity_case() == YandexQuery::IamAuth::kCurrentIam && Config.Proto.GetDisableCurrentIam()) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "current iam authorization is disabled"));
+ }
+
+ if (!objectStorage.bucket()) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.object_storage.bucket field is not specified"));
+ }
+ break;
+ }
+ case YandexQuery::ConnectionSetting::kDataStreams: {
+ const YandexQuery::DataStreams dataStreams = setting.data_streams();
+ if (!dataStreams.has_auth() || dataStreams.auth().identity_case() == YandexQuery::IamAuth::IDENTITY_NOT_SET) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.data_streams.auth field is not specified"));
+ }
+
+ if (dataStreams.auth().identity_case() == YandexQuery::IamAuth::kCurrentIam && Config.Proto.GetDisableCurrentIam()) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "current iam authorization is disabled"));
+ }
+
+ if (!dataStreams.database_id() && !(dataStreams.endpoint() && dataStreams.database())) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.data_streams.{database_id||database,endpoint} field is not specified"));
+ }
+ break;
+ }
+ case YandexQuery::ConnectionSetting::kMonitoring: {
+ const YandexQuery::Monitoring monitoring = setting.monitoring();
+ if (!monitoring.has_auth() || monitoring.auth().identity_case() == YandexQuery::IamAuth::IDENTITY_NOT_SET) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.monitoring.auth field is not specified"));
+ }
+
+ if (monitoring.auth().identity_case() == YandexQuery::IamAuth::kCurrentIam && Config.Proto.GetDisableCurrentIam()) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "current iam authorization is disabled"));
+ }
+
+ if (!monitoring.project()) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.monitoring.project field is not specified"));
+ }
+
+ if (!monitoring.cluster()) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "content.setting.monitoring.cluster field is not specified"));
+ }
+ break;
+ }
+ case YandexQuery::ConnectionSetting::CONNECTION_NOT_SET: {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "connection is not set"));
+ break;
+ }
+ // Do not add default. Adding a new connection should cause a compilation error
+ }
+ return issues;
+ }
+
+ template<typename T>
+ NYql::TIssues ValidateBinding(T& ev)
+ {
+ const auto& request = ev->Get()->Request;
+ NYql::TIssues issues = ValidateEvent(ev);
+
if (request.has_content()) {
const YandexQuery::BindingContent& content = request.content();
if (content.acl().visibility() == YandexQuery::Acl::VISIBILITY_UNSPECIFIED) {
issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "binding.acl.visibility field is not specified"));
}
-
+
if (content.name() != to_lower(content.name())) {
issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "Incorrect binding name: " + content.name() + ". Please use only lower case"));
}
@@ -405,12 +405,12 @@ public:
if (!content.has_setting()) {
issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "binding.setting field is not specified"));
}
-
+
const YandexQuery::BindingSetting& setting = content.setting();
- if (!Config.AvailableBindings.contains(setting.binding_case())) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "binding of the specified type is disabled"));
- }
-
+ if (!Config.AvailableBindings.contains(setting.binding_case())) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "binding of the specified type is disabled"));
+ }
+
switch (setting.binding_case()) {
case YandexQuery::BindingSetting::kDataStreams: {
const YandexQuery::DataStreamsBinding dataStreams = setting.data_streams();
@@ -429,107 +429,107 @@ public:
}
} else {
issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "binding field is not specified"));
- }
-
- return issues;
- }
-
- void Handle(NMon::TEvHttpInfo::TPtr& ev) {
- TStringStream str;
- HTML(str) {
- PRE() {
- str << "Current config:" << Endl;
- str << Config.Proto.DebugString() << Endl;
- str << Endl;
- }
- }
- Send(ev->Sender, new NMon::TEvHttpInfoRes(str.Str()));
- }
-
- template<typename T>
- NYql::TIssues ValidateQuery(T& ev)
- {
- NYql::TIssues issues = ValidateEvent(ev);
- auto& request = ev->Get()->Request;
- const auto& content = request.content();
-
- if (request.execute_mode() == YandexQuery::ExecuteMode::EXECUTE_MODE_UNSPECIFIED) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "mode field is not specified"));
- }
-
- if (content.type() == YandexQuery::QueryContent::QUERY_TYPE_UNSPECIFIED) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "type field is not specified"));
- }
-
- if (content.acl().visibility() == YandexQuery::Acl::VISIBILITY_UNSPECIFIED) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "acl.visibility field is not specified"));
- }
-
- if (content.type() == YandexQuery::QueryContent::STREAMING && !request.has_disposition()) {
- request.mutable_disposition()->mutable_fresh();
- }
-
- return issues;
- }
-
- template<class P>
- NYql::TIssues ValidateEvent(P& ev)
- {
- const auto& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- const TString token = ev->Get()->Token;
- const int byteSize = request.ByteSize();
-
- NYql::TIssues issues;
- if (!scope) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "scope is not specified"));
- }
-
- if (!user) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "user is empty"));
- }
-
- if (!token) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "token is empty"));
- }
-
- if (byteSize > static_cast<int>(Config.Proto.GetMaxRequestSize())) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "request size exceeded " + ToString(request.ByteSize()) + " out of " + ToString(Config.Proto.GetMaxRequestSize()) + " bytes"));
- }
-
- TString error;
- if (!request.validate(error)) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, error));
- }
-
+ }
+
return issues;
- }
-
- /*
- * Creating tables
- */
- TAsyncStatus CreateDirectory(TActorSystem* as);
- TAsyncStatus CreateQueriesTable(TActorSystem* as);
- TAsyncStatus CreatePendingTable(TActorSystem* as);
+ }
+
+ void Handle(NMon::TEvHttpInfo::TPtr& ev) {
+ TStringStream str;
+ HTML(str) {
+ PRE() {
+ str << "Current config:" << Endl;
+ str << Config.Proto.DebugString() << Endl;
+ str << Endl;
+ }
+ }
+ Send(ev->Sender, new NMon::TEvHttpInfoRes(str.Str()));
+ }
+
+ template<typename T>
+ NYql::TIssues ValidateQuery(T& ev)
+ {
+ NYql::TIssues issues = ValidateEvent(ev);
+ auto& request = ev->Get()->Request;
+ const auto& content = request.content();
+
+ if (request.execute_mode() == YandexQuery::ExecuteMode::EXECUTE_MODE_UNSPECIFIED) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "mode field is not specified"));
+ }
+
+ if (content.type() == YandexQuery::QueryContent::QUERY_TYPE_UNSPECIFIED) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "type field is not specified"));
+ }
+
+ if (content.acl().visibility() == YandexQuery::Acl::VISIBILITY_UNSPECIFIED) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "acl.visibility field is not specified"));
+ }
+
+ if (content.type() == YandexQuery::QueryContent::STREAMING && !request.has_disposition()) {
+ request.mutable_disposition()->mutable_fresh();
+ }
+
+ return issues;
+ }
+
+ template<class P>
+ NYql::TIssues ValidateEvent(P& ev)
+ {
+ const auto& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ const TString token = ev->Get()->Token;
+ const int byteSize = request.ByteSize();
+
+ NYql::TIssues issues;
+ if (!scope) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "scope is not specified"));
+ }
+
+ if (!user) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "user is empty"));
+ }
+
+ if (!token) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "token is empty"));
+ }
+
+ if (byteSize > static_cast<int>(Config.Proto.GetMaxRequestSize())) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "request size exceeded " + ToString(request.ByteSize()) + " out of " + ToString(Config.Proto.GetMaxRequestSize()) + " bytes"));
+ }
+
+ TString error;
+ if (!request.validate(error)) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, error));
+ }
+
+ return issues;
+ }
+
+ /*
+ * Creating tables
+ */
+ TAsyncStatus CreateDirectory(TActorSystem* as);
+ TAsyncStatus CreateQueriesTable(TActorSystem* as);
+ TAsyncStatus CreatePendingTable(TActorSystem* as);
TAsyncStatus CreatePendingSmallTable(TActorSystem* as);
- TAsyncStatus CreateConnectionsTable(TActorSystem* as);
- TAsyncStatus CreateJobsTable(TActorSystem* as);
+ TAsyncStatus CreateConnectionsTable(TActorSystem* as);
+ TAsyncStatus CreateJobsTable(TActorSystem* as);
TAsyncStatus CreateNodesTable(TActorSystem* as);
- TAsyncStatus CreateBindingsTable(TActorSystem* as);
- TAsyncStatus CreateIdempotencyKeysTable(TActorSystem* as);
- TAsyncStatus CreateResultSetsTable(TActorSystem* as);
-
-private:
- /*
- * Utility
- */
- bool IsSuperUser(const TString& user);
-
- void InsertIdempotencyKey(TSqlQueryBuilder& builder, const TString& scope, const TString& idempotencyKey, const TString& response, const TInstant& expireAt);
-
- void ReadIdempotencyKeyQuery(TSqlQueryBuilder& builder, const TString& scope, const TString& idempotencyKey);
-
+ TAsyncStatus CreateBindingsTable(TActorSystem* as);
+ TAsyncStatus CreateIdempotencyKeysTable(TActorSystem* as);
+ TAsyncStatus CreateResultSetsTable(TActorSystem* as);
+
+private:
+ /*
+ * Utility
+ */
+ bool IsSuperUser(const TString& user);
+
+ void InsertIdempotencyKey(TSqlQueryBuilder& builder, const TString& scope, const TString& idempotencyKey, const TString& response, const TInstant& expireAt);
+
+ void ReadIdempotencyKeyQuery(TSqlQueryBuilder& builder, const TString& scope, const TString& idempotencyKey);
+
std::pair<TAsyncStatus, std::shared_ptr<TVector<NYdb::TResultSet>>> Read(
const TString& query,
const NYdb::TParams& params,
@@ -537,7 +537,7 @@ private:
TDebugInfoPtr debugInfo,
TTxSettings transactionMode = TTxSettings::SerializableRW(),
bool retryOnTli = true);
-
+
TAsyncStatus Validate(
std::shared_ptr<TMaybe<TTransaction>> transaction,
size_t item, const TVector<TValidationQuery>& validators,
@@ -545,7 +545,7 @@ private:
std::shared_ptr<bool> successFinish,
TDebugInfoPtr debugInfo,
TTxSettings transactionMode = TTxSettings::SerializableRW());
-
+
TAsyncStatus Write(
NActors::TActorSystem* actorSystem,
const TString& query,
@@ -555,7 +555,7 @@ private:
const TVector<TValidationQuery>& validators = {},
TTxSettings transactionMode = TTxSettings::SerializableRW(),
bool retryTli = true);
-
+
TAsyncStatus ReadModifyWrite(
NActors::TActorSystem* actorSystem,
const TString& readQuery,
@@ -566,261 +566,261 @@ private:
const TVector<TValidationQuery>& validators = {},
TTxSettings transactionMode = TTxSettings::SerializableRW(),
bool retryOnTli = true);
-
- template<typename T>
- THashMap<TString, T> GetEntitiesWithVisibilityPriority(const TResultSet& resultSet, const TString& columnName)
- {
- THashMap<TString, T> entities;
- TResultSetParser parser(resultSet);
- while (parser.TryNextRow()) {
- T entity;
- Y_VERIFY(entity.ParseFromString(*parser.ColumnParser(columnName).GetOptionalString())); // TODO: move to run actor
- const TString name = entity.content().name();
- if (auto it = entities.find(name); it != entities.end()) {
- const auto visibility = entity.content().acl().visibility();
- if (visibility == YandexQuery::Acl::PRIVATE) {
- entities[name] = std::move(entity);
- }
- } else {
- entities[name] = std::move(entity);
- }
- }
-
- return entities;
- }
-
- template<class ResponseEvent, class Result, class RequestEventPtr>
- TFuture<bool> SendResponse(const TString& name,
- NActors::TActorSystem* actorSystem,
- const TAsyncStatus& status,
- TActorId self,
- const RequestEventPtr& ev,
- const TInstant& startTime,
- const TRequestCountersPtr& requestCounters,
- const std::function<Result()>& prepare,
- TDebugInfoPtr debugInfo)
- {
- return status.Apply([=](const auto& future) {
- NYql::TIssues internalIssues;
- NYql::TIssues issues;
- Result result;
-
- try {
- TStatus status = future.GetValue();
- if (status.IsSuccess()) {
- result = prepare();
- } else {
- issues.AddIssues(status.GetIssues());
- internalIssues.AddIssues(status.GetIssues());
- }
- } catch (const TControlPlaneStorageException& exception) {
- NYql::TIssue issue = MakeErrorIssue(exception.Code, exception.GetRawMessage());
- issues.AddIssue(issue);
- NYql::TIssue internalIssue = MakeErrorIssue(exception.Code, CurrentExceptionMessage());
- internalIssues.AddIssue(internalIssue);
- } catch (const std::exception& exception) {
- NYql::TIssue issue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, exception.what());
- issues.AddIssue(issue);
- NYql::TIssue internalIssue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
- internalIssues.AddIssue(internalIssue);
- } catch (...) {
- NYql::TIssue issue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
- issues.AddIssue(issue);
- NYql::TIssue internalIssue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
- internalIssues.AddIssue(internalIssue);
- }
-
- const auto& request = ev->Get()->Request;
- if (issues) {
- CPS_LOG_AS_D(*actorSystem, name << ": " << request.DebugString() << " error: " << internalIssues.ToString());
- auto event = std::make_unique<ResponseEvent>(issues);
- event->DebugInfo = debugInfo;
- actorSystem->Send(new IEventHandle(ev->Sender, self, event.release(), 0, ev->Cookie));
- requestCounters->Error->Inc();
+
+ template<typename T>
+ THashMap<TString, T> GetEntitiesWithVisibilityPriority(const TResultSet& resultSet, const TString& columnName)
+ {
+ THashMap<TString, T> entities;
+ TResultSetParser parser(resultSet);
+ while (parser.TryNextRow()) {
+ T entity;
+ Y_VERIFY(entity.ParseFromString(*parser.ColumnParser(columnName).GetOptionalString())); // TODO: move to run actor
+ const TString name = entity.content().name();
+ if (auto it = entities.find(name); it != entities.end()) {
+ const auto visibility = entity.content().acl().visibility();
+ if (visibility == YandexQuery::Acl::PRIVATE) {
+ entities[name] = std::move(entity);
+ }
+ } else {
+ entities[name] = std::move(entity);
+ }
+ }
+
+ return entities;
+ }
+
+ template<class ResponseEvent, class Result, class RequestEventPtr>
+ TFuture<bool> SendResponse(const TString& name,
+ NActors::TActorSystem* actorSystem,
+ const TAsyncStatus& status,
+ TActorId self,
+ const RequestEventPtr& ev,
+ const TInstant& startTime,
+ const TRequestCountersPtr& requestCounters,
+ const std::function<Result()>& prepare,
+ TDebugInfoPtr debugInfo)
+ {
+ return status.Apply([=](const auto& future) {
+ NYql::TIssues internalIssues;
+ NYql::TIssues issues;
+ Result result;
+
+ try {
+ TStatus status = future.GetValue();
+ if (status.IsSuccess()) {
+ result = prepare();
+ } else {
+ issues.AddIssues(status.GetIssues());
+ internalIssues.AddIssues(status.GetIssues());
+ }
+ } catch (const TControlPlaneStorageException& exception) {
+ NYql::TIssue issue = MakeErrorIssue(exception.Code, exception.GetRawMessage());
+ issues.AddIssue(issue);
+ NYql::TIssue internalIssue = MakeErrorIssue(exception.Code, CurrentExceptionMessage());
+ internalIssues.AddIssue(internalIssue);
+ } catch (const std::exception& exception) {
+ NYql::TIssue issue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, exception.what());
+ issues.AddIssue(issue);
+ NYql::TIssue internalIssue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
+ internalIssues.AddIssue(internalIssue);
+ } catch (...) {
+ NYql::TIssue issue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
+ issues.AddIssue(issue);
+ NYql::TIssue internalIssue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
+ internalIssues.AddIssue(internalIssue);
+ }
+
+ const auto& request = ev->Get()->Request;
+ if (issues) {
+ CPS_LOG_AS_D(*actorSystem, name << ": " << request.DebugString() << " error: " << internalIssues.ToString());
+ auto event = std::make_unique<ResponseEvent>(issues);
+ event->DebugInfo = debugInfo;
+ actorSystem->Send(new IEventHandle(ev->Sender, self, event.release(), 0, ev->Cookie));
+ requestCounters->Error->Inc();
for (const auto& issue : issues) {
NYql::WalkThroughIssues(issue, true, [&requestCounters](const NYql::TIssue& err, ui16 level) {
Y_UNUSED(level);
requestCounters->Issues->GetCounter(ToString(err.GetCode()), true)->Inc();
});
}
- } else {
- CPS_LOG_AS_T(*actorSystem, name << ": " << request.DebugString() << " success");
- auto event = std::make_unique<ResponseEvent>(result);
- event->DebugInfo = debugInfo;
- actorSystem->Send(new IEventHandle(ev->Sender, self, event.release(), 0, ev->Cookie));
- requestCounters->Ok->Inc();
- }
- requestCounters->InFly->Dec();
- TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- return MakeFuture(!issues);
- });
- }
-
- template<class ResponseEvent, class Result, class AuditDetails, class RequestEventPtr>
- TFuture<bool> SendAuditResponse(const TString& name,
- NActors::TActorSystem* actorSystem,
- const TAsyncStatus& status,
- TActorId self,
- const RequestEventPtr& ev,
- const TInstant& startTime,
- const TRequestCountersPtr& requestCounters,
- const std::function<std::pair<Result, AuditDetails>()>& prepare,
- TDebugInfoPtr debugInfo)
- {
- return status.Apply([=](const auto& future) {
- NYql::TIssues internalIssues;
- NYql::TIssues issues;
- Result result;
- AuditDetails auditDetails;
-
- try {
- TStatus status = future.GetValue();
- if (status.IsSuccess()) {
- auto p = prepare();
- result = std::move(p.first);
- auditDetails = std::move(p.second);
- } else {
- issues.AddIssues(status.GetIssues());
- internalIssues.AddIssues(status.GetIssues());
- }
- } catch (const TControlPlaneStorageException& exception) {
- NYql::TIssue issue = MakeErrorIssue(exception.Code, exception.GetRawMessage());
- issues.AddIssue(issue);
- NYql::TIssue internalIssue = MakeErrorIssue(exception.Code, CurrentExceptionMessage());
- internalIssues.AddIssue(internalIssue);
- } catch (const std::exception& exception) {
- NYql::TIssue issue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, exception.what());
- issues.AddIssue(issue);
- NYql::TIssue internalIssue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
- internalIssues.AddIssue(internalIssue);
- } catch (...) {
- NYql::TIssue issue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
- issues.AddIssue(issue);
- NYql::TIssue internalIssue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
- internalIssues.AddIssue(internalIssue);
- }
-
- const auto& request = ev->Get()->Request;
- if (issues) {
- CPS_LOG_AS_D(*actorSystem, name << ": " << request.DebugString() << " error: " << internalIssues.ToString());
- auto event = std::make_unique<ResponseEvent>(issues);
- event->DebugInfo = debugInfo;
- actorSystem->Send(new IEventHandle(ev->Sender, self, event.release(), 0, ev->Cookie));
- requestCounters->Error->Inc();
+ } else {
+ CPS_LOG_AS_T(*actorSystem, name << ": " << request.DebugString() << " success");
+ auto event = std::make_unique<ResponseEvent>(result);
+ event->DebugInfo = debugInfo;
+ actorSystem->Send(new IEventHandle(ev->Sender, self, event.release(), 0, ev->Cookie));
+ requestCounters->Ok->Inc();
+ }
+ requestCounters->InFly->Dec();
+ TDuration delta = TInstant::Now() - startTime;
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ return MakeFuture(!issues);
+ });
+ }
+
+ template<class ResponseEvent, class Result, class AuditDetails, class RequestEventPtr>
+ TFuture<bool> SendAuditResponse(const TString& name,
+ NActors::TActorSystem* actorSystem,
+ const TAsyncStatus& status,
+ TActorId self,
+ const RequestEventPtr& ev,
+ const TInstant& startTime,
+ const TRequestCountersPtr& requestCounters,
+ const std::function<std::pair<Result, AuditDetails>()>& prepare,
+ TDebugInfoPtr debugInfo)
+ {
+ return status.Apply([=](const auto& future) {
+ NYql::TIssues internalIssues;
+ NYql::TIssues issues;
+ Result result;
+ AuditDetails auditDetails;
+
+ try {
+ TStatus status = future.GetValue();
+ if (status.IsSuccess()) {
+ auto p = prepare();
+ result = std::move(p.first);
+ auditDetails = std::move(p.second);
+ } else {
+ issues.AddIssues(status.GetIssues());
+ internalIssues.AddIssues(status.GetIssues());
+ }
+ } catch (const TControlPlaneStorageException& exception) {
+ NYql::TIssue issue = MakeErrorIssue(exception.Code, exception.GetRawMessage());
+ issues.AddIssue(issue);
+ NYql::TIssue internalIssue = MakeErrorIssue(exception.Code, CurrentExceptionMessage());
+ internalIssues.AddIssue(internalIssue);
+ } catch (const std::exception& exception) {
+ NYql::TIssue issue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, exception.what());
+ issues.AddIssue(issue);
+ NYql::TIssue internalIssue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
+ internalIssues.AddIssue(internalIssue);
+ } catch (...) {
+ NYql::TIssue issue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
+ issues.AddIssue(issue);
+ NYql::TIssue internalIssue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
+ internalIssues.AddIssue(internalIssue);
+ }
+
+ const auto& request = ev->Get()->Request;
+ if (issues) {
+ CPS_LOG_AS_D(*actorSystem, name << ": " << request.DebugString() << " error: " << internalIssues.ToString());
+ auto event = std::make_unique<ResponseEvent>(issues);
+ event->DebugInfo = debugInfo;
+ actorSystem->Send(new IEventHandle(ev->Sender, self, event.release(), 0, ev->Cookie));
+ requestCounters->Error->Inc();
for (const auto& issue : issues) {
NYql::WalkThroughIssues(issue, true, [&requestCounters](const NYql::TIssue& err, ui16 level) {
Y_UNUSED(level);
requestCounters->Issues->GetCounter(ToString(err.GetCode()), true)->Inc();
});
}
- } else {
- CPS_LOG_AS_T(*actorSystem, name << ": " << request.DebugString() << " success");
- auto event = std::make_unique<ResponseEvent>(result, auditDetails);
- event->DebugInfo = debugInfo;
- actorSystem->Send(new IEventHandle(ev->Sender, self, event.release(), 0, ev->Cookie));
- requestCounters->Ok->Inc();
- }
- requestCounters->InFly->Dec();
- TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- return MakeFuture(!issues);
- });
- }
-
- template<class ResponseEvent, class Result, class RequestEventPtr>
- TFuture<bool> SendResponseTuple(const TString& name,
- NActors::TActorSystem* actorSystem,
- const TAsyncStatus& status,
- TActorId self,
- const RequestEventPtr& ev,
- const TInstant& startTime,
- const TRequestCountersPtr& requestCounters,
- const std::function<Result()>& prepare,
- TDebugInfoPtr debugInfo)
- {
- return status.Apply([=](const auto& future) {
- NYql::TIssues internalIssues;
- NYql::TIssues issues;
- Result result;
-
- try {
- TStatus status = future.GetValue();
- if (status.IsSuccess()) {
- result = prepare();
- } else {
- issues.AddIssues(status.GetIssues());
- }
- } catch (const TControlPlaneStorageException& exception) {
- NYql::TIssue issue = MakeErrorIssue(exception.Code, exception.GetRawMessage());
- issues.AddIssue(issue);
- NYql::TIssue internalIssue = MakeErrorIssue(exception.Code, CurrentExceptionMessage());
- internalIssues.AddIssue(internalIssue);
- } catch (const std::exception& exception) {
- NYql::TIssue issue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, exception.what());
- issues.AddIssue(issue);
- NYql::TIssue internalIssue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
- internalIssues.AddIssue(internalIssue);
- } catch (...) {
- NYql::TIssue issue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
- issues.AddIssue(issue);
- NYql::TIssue internalIssue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
- internalIssues.AddIssue(internalIssue);
- }
-
- if (issues) {
- CPS_LOG_AS_D(*actorSystem, name << ": error: " << internalIssues.ToString());
- auto event = std::unique_ptr<ResponseEvent>(new ResponseEvent(issues));
- event->DebugInfo = debugInfo;
- actorSystem->Send(new IEventHandle(ev->Sender, self, event.release(), 0, ev->Cookie));
- requestCounters->Error->Inc();
+ } else {
+ CPS_LOG_AS_T(*actorSystem, name << ": " << request.DebugString() << " success");
+ auto event = std::make_unique<ResponseEvent>(result, auditDetails);
+ event->DebugInfo = debugInfo;
+ actorSystem->Send(new IEventHandle(ev->Sender, self, event.release(), 0, ev->Cookie));
+ requestCounters->Ok->Inc();
+ }
+ requestCounters->InFly->Dec();
+ TDuration delta = TInstant::Now() - startTime;
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ return MakeFuture(!issues);
+ });
+ }
+
+ template<class ResponseEvent, class Result, class RequestEventPtr>
+ TFuture<bool> SendResponseTuple(const TString& name,
+ NActors::TActorSystem* actorSystem,
+ const TAsyncStatus& status,
+ TActorId self,
+ const RequestEventPtr& ev,
+ const TInstant& startTime,
+ const TRequestCountersPtr& requestCounters,
+ const std::function<Result()>& prepare,
+ TDebugInfoPtr debugInfo)
+ {
+ return status.Apply([=](const auto& future) {
+ NYql::TIssues internalIssues;
+ NYql::TIssues issues;
+ Result result;
+
+ try {
+ TStatus status = future.GetValue();
+ if (status.IsSuccess()) {
+ result = prepare();
+ } else {
+ issues.AddIssues(status.GetIssues());
+ }
+ } catch (const TControlPlaneStorageException& exception) {
+ NYql::TIssue issue = MakeErrorIssue(exception.Code, exception.GetRawMessage());
+ issues.AddIssue(issue);
+ NYql::TIssue internalIssue = MakeErrorIssue(exception.Code, CurrentExceptionMessage());
+ internalIssues.AddIssue(internalIssue);
+ } catch (const std::exception& exception) {
+ NYql::TIssue issue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, exception.what());
+ issues.AddIssue(issue);
+ NYql::TIssue internalIssue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
+ internalIssues.AddIssue(internalIssue);
+ } catch (...) {
+ NYql::TIssue issue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
+ issues.AddIssue(issue);
+ NYql::TIssue internalIssue = MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, CurrentExceptionMessage());
+ internalIssues.AddIssue(internalIssue);
+ }
+
+ if (issues) {
+ CPS_LOG_AS_D(*actorSystem, name << ": error: " << internalIssues.ToString());
+ auto event = std::unique_ptr<ResponseEvent>(new ResponseEvent(issues));
+ event->DebugInfo = debugInfo;
+ actorSystem->Send(new IEventHandle(ev->Sender, self, event.release(), 0, ev->Cookie));
+ requestCounters->Error->Inc();
for (const auto& issue : issues) {
NYql::WalkThroughIssues(issue, true, [&requestCounters](const NYql::TIssue& err, ui16 level) {
Y_UNUSED(level);
requestCounters->Issues->GetCounter(ToString(err.GetCode()), true)->Inc();
});
}
- } else {
- CPS_LOG_AS_T(*actorSystem, name << ": success");
- auto event = std::unique_ptr<ResponseEvent>(new ResponseEvent(std::make_from_tuple<ResponseEvent>(result)));
- event->DebugInfo = debugInfo;
- actorSystem->Send(new IEventHandle(ev->Sender, self, event.release(), 0, ev->Cookie));
- requestCounters->Ok->Inc();
- }
- requestCounters->InFly->Dec();
- TDuration delta = TInstant::Now() - startTime;
- requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- return MakeFuture(!issues);
- });
- }
-
- template<typename T>
- void SendResponseIssues(const TActorId sender,
- const NYql::TIssues& issues,
- ui64 cookie,
- const TDuration& delta,
- const TRequestCountersPtr& requestCounters) {
- Send(sender, new T(issues), 0, cookie);
- requestCounters->InFly->Dec();
- requestCounters->Error->Inc();
+ } else {
+ CPS_LOG_AS_T(*actorSystem, name << ": success");
+ auto event = std::unique_ptr<ResponseEvent>(new ResponseEvent(std::make_from_tuple<ResponseEvent>(result)));
+ event->DebugInfo = debugInfo;
+ actorSystem->Send(new IEventHandle(ev->Sender, self, event.release(), 0, ev->Cookie));
+ requestCounters->Ok->Inc();
+ }
+ requestCounters->InFly->Dec();
+ TDuration delta = TInstant::Now() - startTime;
+ requestCounters->LatencyMs->Collect(delta.MilliSeconds());
+ return MakeFuture(!issues);
+ });
+ }
+
+ template<typename T>
+ void SendResponseIssues(const TActorId sender,
+ const NYql::TIssues& issues,
+ ui64 cookie,
+ const TDuration& delta,
+ const TRequestCountersPtr& requestCounters) {
+ Send(sender, new T(issues), 0, cookie);
+ requestCounters->InFly->Dec();
+ requestCounters->Error->Inc();
requestCounters->LatencyMs->Collect(delta.MilliSeconds());
- }
-
- static YandexQuery::CommonMeta CreateCommonMeta(const TString& id, const TString& user, const TInstant& startTime, int64_t revision) {
- YandexQuery::CommonMeta common;
- common.set_id(id);
- common.set_created_by(user);
- common.set_modified_by(user);
+ }
+
+ static YandexQuery::CommonMeta CreateCommonMeta(const TString& id, const TString& user, const TInstant& startTime, int64_t revision) {
+ YandexQuery::CommonMeta common;
+ common.set_id(id);
+ common.set_created_by(user);
+ common.set_modified_by(user);
auto now = NProtoInterop::CastToProto(startTime);
- *common.mutable_created_at() = now;
- *common.mutable_modified_at() = now;
- common.set_revision(revision);
- return common;
- }
-
- static TString MakeLogPrefix(const TString& scope, const TString& user, const TString& id = "") {
- return "[" + scope + ", " + user + (id ? ", " + id : "") + "] ";
- }
+ *common.mutable_created_at() = now;
+ *common.mutable_modified_at() = now;
+ common.set_revision(revision);
+ return common;
+ }
+
+ static TString MakeLogPrefix(const TString& scope, const TString& user, const TString& id = "") {
+ return "[" + scope + ", " + user + (id ? ", " + id : "") + "] ";
+ }
struct TPickTaskParams {
TString ReadQuery;
@@ -837,6 +837,6 @@ private:
std::shared_ptr<TResponseTasks> responseTasks,
const TVector<TValidationQuery>& validators = {},
TTxSettings transactionMode = TTxSettings::SerializableRW());
-};
-
-}
+};
+
+}
diff --git a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_queries.cpp b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_queries.cpp
index 398725f7f4..44be666764 100644
--- a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_queries.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_queries.cpp
@@ -1,374 +1,374 @@
-#include "ydb_control_plane_storage_impl.h"
-
-#include <cstdint>
-
-#include <util/datetime/base.h>
-#include <util/generic/yexception.h>
-#include <util/string/join.h>
-
+#include "ydb_control_plane_storage_impl.h"
+
+#include <cstdint>
+
+#include <util/datetime/base.h>
+#include <util/generic/yexception.h>
+#include <util/string/join.h>
+
#include <ydb/core/yq/libs/common/entity_id.h>
#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
#include <ydb/core/yq/libs/control_plane_storage/schema.h>
#include <ydb/core/yq/libs/db_schema/db_schema.h>
-
+
#include <ydb/public/api/protos/yq.pb.h>
#include <ydb/public/sdk/cpp/client/ydb_value/value.h>
-
-namespace {
-
-YandexQuery::IamAuth::IdentityCase GetIamAuth(const YandexQuery::Connection& connection) {
- const auto& setting = connection.content().setting();
- switch (setting.connection_case()) {
- case YandexQuery::ConnectionSetting::kYdbDatabase:
- return setting.data_streams().auth().identity_case();
- case YandexQuery::ConnectionSetting::kClickhouseCluster:
- return setting.clickhouse_cluster().auth().identity_case();
- case YandexQuery::ConnectionSetting::kObjectStorage:
- return setting.object_storage().auth().identity_case();
- case YandexQuery::ConnectionSetting::kDataStreams:
- return setting.data_streams().auth().identity_case();
- case YandexQuery::ConnectionSetting::kMonitoring:
- return setting.monitoring().auth().identity_case();
- case YandexQuery::ConnectionSetting::CONNECTION_NOT_SET:
- return YandexQuery::IamAuth::IDENTITY_NOT_SET;
- }
-}
-
-}
-
-namespace NYq {
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvCreateQueryRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_CREATE_QUERY];
- requestCounters->InFly->Inc();
-
- const TEvControlPlaneStorage::TEvCreateQueryRequest& event = *ev->Get();
- const YandexQuery::CreateQueryRequest& request = event.Request;
- const TString scope = event.Scope;
- const TString user = event.User;
- const TString token = event.Token;
- const TString cloudId = event.CloudId;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? event.Permissions
- : TPermissions{TPermissions::QUERY_INVOKE | TPermissions::CONNECTIONS_USE | TPermissions::BINDINGS_USE | TPermissions::MANAGE_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const size_t byteSize = request.ByteSizeLong();
- const TString queryId = GetEntityIdAsString(Config.IdsPrefix, EEntityType::QUERY);
-
- CPS_LOG_T(MakeLogPrefix(scope, user, queryId)
- << "CreateQueryRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
-
- NYql::TIssues issues = ValidateQuery(ev);
- if (request.execute_mode() != YandexQuery::SAVE && !permissions.Check(TPermissions::QUERY_INVOKE)) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::ACCESS_DENIED, "Permission denied to create a query with these parameters. Please receive a permission yq.queries.invoke"));
- }
-
- if (request.content().acl().visibility() == YandexQuery::Acl::SCOPE && !permissions.Check(TPermissions::MANAGE_PUBLIC)) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::ACCESS_DENIED, "Permission denied to create a query with these parameters. Please receive a permission yq.resources.managePublic"));
- }
+
+namespace {
+
+YandexQuery::IamAuth::IdentityCase GetIamAuth(const YandexQuery::Connection& connection) {
+ const auto& setting = connection.content().setting();
+ switch (setting.connection_case()) {
+ case YandexQuery::ConnectionSetting::kYdbDatabase:
+ return setting.data_streams().auth().identity_case();
+ case YandexQuery::ConnectionSetting::kClickhouseCluster:
+ return setting.clickhouse_cluster().auth().identity_case();
+ case YandexQuery::ConnectionSetting::kObjectStorage:
+ return setting.object_storage().auth().identity_case();
+ case YandexQuery::ConnectionSetting::kDataStreams:
+ return setting.data_streams().auth().identity_case();
+ case YandexQuery::ConnectionSetting::kMonitoring:
+ return setting.monitoring().auth().identity_case();
+ case YandexQuery::ConnectionSetting::CONNECTION_NOT_SET:
+ return YandexQuery::IamAuth::IDENTITY_NOT_SET;
+ }
+}
+
+}
+
+namespace NYq {
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvCreateQueryRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_CREATE_QUERY];
+ requestCounters->InFly->Inc();
+
+ const TEvControlPlaneStorage::TEvCreateQueryRequest& event = *ev->Get();
+ const YandexQuery::CreateQueryRequest& request = event.Request;
+ const TString scope = event.Scope;
+ const TString user = event.User;
+ const TString token = event.Token;
+ const TString cloudId = event.CloudId;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? event.Permissions
+ : TPermissions{TPermissions::QUERY_INVOKE | TPermissions::CONNECTIONS_USE | TPermissions::BINDINGS_USE | TPermissions::MANAGE_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const size_t byteSize = request.ByteSizeLong();
+ const TString queryId = GetEntityIdAsString(Config.IdsPrefix, EEntityType::QUERY);
+
+ CPS_LOG_T(MakeLogPrefix(scope, user, queryId)
+ << "CreateQueryRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+
+ NYql::TIssues issues = ValidateQuery(ev);
+ if (request.execute_mode() != YandexQuery::SAVE && !permissions.Check(TPermissions::QUERY_INVOKE)) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::ACCESS_DENIED, "Permission denied to create a query with these parameters. Please receive a permission yq.queries.invoke"));
+ }
+
+ if (request.content().acl().visibility() == YandexQuery::Acl::SCOPE && !permissions.Check(TPermissions::MANAGE_PUBLIC)) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::ACCESS_DENIED, "Permission denied to create a query with these parameters. Please receive a permission yq.resources.managePublic"));
+ }
if (request.disposition().has_from_last_checkpoint()) {
issues.AddIssue(MakeErrorIssue(TIssuesIds::BAD_REQUEST, "Streaming disposition \"from_last_checkpoint\" is not allowed in CreateQuery request"));
}
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, queryId)
- << "CreateQueryRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: "<< issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvCreateQueryResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(CreateQueryRequest, scope, user, delta, byteSize, false);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user, queryId)
+ << "CreateQueryRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: "<< issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvCreateQueryResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(CreateQueryRequest, scope, user, delta, byteSize, false);
return;
- }
-
- const TString idempotencyKey = request.idempotency_key();
- const TString jobId = request.execute_mode() == YandexQuery::SAVE ? "" : GetEntityIdAsString(Config.IdsPrefix, EEntityType::JOB);
-
- YandexQuery::Query query;
- YandexQuery::QueryContent& content = *query.mutable_content() = request.content();
- YandexQuery::QueryMeta& meta = *query.mutable_meta();
- YandexQuery::CommonMeta& common = *meta.mutable_common() = CreateCommonMeta(queryId, user, startTime, InitialRevision);
- meta.set_execute_mode(request.execute_mode());
- meta.set_status(request.execute_mode() == YandexQuery::SAVE ? YandexQuery::QueryMeta::COMPLETED : YandexQuery::QueryMeta::STARTING);
-
- YandexQuery::Job job;
- if (request.execute_mode() != YandexQuery::SAVE) {
- meta.set_last_job_query_revision(InitialRevision);
- meta.set_last_job_id(jobId);
+ }
+
+ const TString idempotencyKey = request.idempotency_key();
+ const TString jobId = request.execute_mode() == YandexQuery::SAVE ? "" : GetEntityIdAsString(Config.IdsPrefix, EEntityType::JOB);
+
+ YandexQuery::Query query;
+ YandexQuery::QueryContent& content = *query.mutable_content() = request.content();
+ YandexQuery::QueryMeta& meta = *query.mutable_meta();
+ YandexQuery::CommonMeta& common = *meta.mutable_common() = CreateCommonMeta(queryId, user, startTime, InitialRevision);
+ meta.set_execute_mode(request.execute_mode());
+ meta.set_status(request.execute_mode() == YandexQuery::SAVE ? YandexQuery::QueryMeta::COMPLETED : YandexQuery::QueryMeta::STARTING);
+
+ YandexQuery::Job job;
+ if (request.execute_mode() != YandexQuery::SAVE) {
+ meta.set_last_job_query_revision(InitialRevision);
+ meta.set_last_job_id(jobId);
meta.set_started_by(user);
-
- *job.mutable_meta() = common;
- job.mutable_meta()->set_id(jobId);
- job.set_text(content.text());
- *job.mutable_query_meta() = meta;
+
+ *job.mutable_meta() = common;
+ job.mutable_meta()->set_id(jobId);
+ job.set_text(content.text());
+ *job.mutable_query_meta() = meta;
job.set_query_name(query.mutable_content()->name());
*job.mutable_acl() = content.acl();
job.set_automatic(content.automatic());
- }
-
- std::shared_ptr<std::pair<YandexQuery::CreateQueryResult, TAuditDetails<YandexQuery::Query>>> response = std::make_shared<std::pair<YandexQuery::CreateQueryResult, TAuditDetails<YandexQuery::Query>>>();
- response->first.set_query_id(queryId);
- response->second.CloudId = cloudId;
-
+ }
+
+ std::shared_ptr<std::pair<YandexQuery::CreateQueryResult, TAuditDetails<YandexQuery::Query>>> response = std::make_shared<std::pair<YandexQuery::CreateQueryResult, TAuditDetails<YandexQuery::Query>>>();
+ response->first.set_query_id(queryId);
+ response->second.CloudId = cloudId;
+
TSqlQueryBuilder readQueryBuilder(YdbConnection->TablePathPrefix, "CreateQuery(read)");
- ReadIdempotencyKeyQuery(readQueryBuilder, scope, idempotencyKey);
-
- if (request.execute_mode() != YandexQuery::SAVE) {
- readQueryBuilder.AddString("scope", scope);
- readQueryBuilder.AddString("user", user);
- readQueryBuilder.AddInt64("scope_visibility", YandexQuery::Acl::SCOPE);
-
- // user connections
- readQueryBuilder.AddText(
- "SELECT `" CONNECTION_ID_COLUMN_NAME "`, `" CONNECTION_COLUMN_NAME "` FROM `" CONNECTIONS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND (`" VISIBILITY_COLUMN_NAME "` = $scope_visibility OR `" USER_COLUMN_NAME "` = $user);"
- );
-
- // user bindings
- readQueryBuilder.AddText(
- "SELECT `" BINDING_ID_COLUMN_NAME "`, `" BINDING_COLUMN_NAME "` FROM `" BINDINGS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND (`" VISIBILITY_COLUMN_NAME "` = $scope_visibility OR `" USER_COLUMN_NAME "` = $user);"
- );
- }
-
- auto prepareParams = [=](const TVector<TResultSet>& resultSets) mutable {
- const size_t countSets = (idempotencyKey ? 1 : 0) + (request.execute_mode() != YandexQuery::SAVE ? 2 : 0);
- if (resultSets.size() != countSets) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to " << countSets << " but equal " << resultSets.size() << ". Please contact internal support";
- }
-
- if (idempotencyKey) {
- TResultSetParser parser(resultSets.front());
- if (parser.TryNextRow()) {
- if (!response->first.ParseFromString(*parser.ColumnParser(RESPONSE_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for idempotency key request. Please contact internal support";
- }
- response->second.IdempotencyResult = true;
- return make_pair(TString{}, TParamsBuilder{}.Build());
- }
- }
-
- YandexQuery::Internal::QueryInternal queryInternal;
- if (!Config.Proto.GetDisableCurrentIam()) {
- queryInternal.set_token(token);
- }
- queryInternal.set_cloud_id(cloudId);
- queryInternal.set_state_load_mode(YandexQuery::StateLoadMode::EMPTY);
+ ReadIdempotencyKeyQuery(readQueryBuilder, scope, idempotencyKey);
+
+ if (request.execute_mode() != YandexQuery::SAVE) {
+ readQueryBuilder.AddString("scope", scope);
+ readQueryBuilder.AddString("user", user);
+ readQueryBuilder.AddInt64("scope_visibility", YandexQuery::Acl::SCOPE);
+
+ // user connections
+ readQueryBuilder.AddText(
+ "SELECT `" CONNECTION_ID_COLUMN_NAME "`, `" CONNECTION_COLUMN_NAME "` FROM `" CONNECTIONS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND (`" VISIBILITY_COLUMN_NAME "` = $scope_visibility OR `" USER_COLUMN_NAME "` = $user);"
+ );
+
+ // user bindings
+ readQueryBuilder.AddText(
+ "SELECT `" BINDING_ID_COLUMN_NAME "`, `" BINDING_COLUMN_NAME "` FROM `" BINDINGS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND (`" VISIBILITY_COLUMN_NAME "` = $scope_visibility OR `" USER_COLUMN_NAME "` = $user);"
+ );
+ }
+
+ auto prepareParams = [=](const TVector<TResultSet>& resultSets) mutable {
+ const size_t countSets = (idempotencyKey ? 1 : 0) + (request.execute_mode() != YandexQuery::SAVE ? 2 : 0);
+ if (resultSets.size() != countSets) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to " << countSets << " but equal " << resultSets.size() << ". Please contact internal support";
+ }
+
+ if (idempotencyKey) {
+ TResultSetParser parser(resultSets.front());
+ if (parser.TryNextRow()) {
+ if (!response->first.ParseFromString(*parser.ColumnParser(RESPONSE_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for idempotency key request. Please contact internal support";
+ }
+ response->second.IdempotencyResult = true;
+ return make_pair(TString{}, TParamsBuilder{}.Build());
+ }
+ }
+
+ YandexQuery::Internal::QueryInternal queryInternal;
+ if (!Config.Proto.GetDisableCurrentIam()) {
+ queryInternal.set_token(token);
+ }
+ queryInternal.set_cloud_id(cloudId);
+ queryInternal.set_state_load_mode(YandexQuery::StateLoadMode::EMPTY);
queryInternal.mutable_disposition()->CopyFrom(request.disposition());
-
- if (request.execute_mode() != YandexQuery::SAVE) {
- // TODO: move to run actor priority selection
- if (permissions.Check(TPermissions::BINDINGS_USE)) {
- auto bindings = GetEntitiesWithVisibilityPriority<YandexQuery::Binding>(resultSets[resultSets.size() - 1], BINDING_COLUMN_NAME);
- for (const auto& [_, binding]: bindings) {
- if (!Config.AvailableBindings.contains(binding.content().setting().binding_case())) {
- continue;
- }
-
- *queryInternal.add_binding() = binding;
- }
- }
-
- if (permissions.Check(TPermissions::CONNECTIONS_USE)) {
- auto connections = GetEntitiesWithVisibilityPriority<YandexQuery::Connection>(resultSets[resultSets.size() - 2], CONNECTION_COLUMN_NAME);
- for (const auto& [_, connection]: connections) {
- if (!Config.AvailableConnections.contains(connection.content().setting().connection_case())) {
- continue;
- }
-
- if (GetIamAuth(connection) == YandexQuery::IamAuth::kCurrentIam && Config.Proto.GetDisableCurrentIam()) {
- continue;
- }
- *queryInternal.add_connection() = connection;
- }
- }
- }
-
- if (query.ByteSizeLong() > Config.Proto.GetMaxRequestSize()) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Query data is not placed in the table. Please shorten your request";
- }
-
- if (queryInternal.ByteSizeLong() > Config.Proto.GetMaxRequestSize()) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Query internal data is not placed in the table. Please reduce the number of connections and bindings";
- }
-
- response->second.After.ConstructInPlace().CopyFrom(query);
-
+
+ if (request.execute_mode() != YandexQuery::SAVE) {
+ // TODO: move to run actor priority selection
+ if (permissions.Check(TPermissions::BINDINGS_USE)) {
+ auto bindings = GetEntitiesWithVisibilityPriority<YandexQuery::Binding>(resultSets[resultSets.size() - 1], BINDING_COLUMN_NAME);
+ for (const auto& [_, binding]: bindings) {
+ if (!Config.AvailableBindings.contains(binding.content().setting().binding_case())) {
+ continue;
+ }
+
+ *queryInternal.add_binding() = binding;
+ }
+ }
+
+ if (permissions.Check(TPermissions::CONNECTIONS_USE)) {
+ auto connections = GetEntitiesWithVisibilityPriority<YandexQuery::Connection>(resultSets[resultSets.size() - 2], CONNECTION_COLUMN_NAME);
+ for (const auto& [_, connection]: connections) {
+ if (!Config.AvailableConnections.contains(connection.content().setting().connection_case())) {
+ continue;
+ }
+
+ if (GetIamAuth(connection) == YandexQuery::IamAuth::kCurrentIam && Config.Proto.GetDisableCurrentIam()) {
+ continue;
+ }
+ *queryInternal.add_connection() = connection;
+ }
+ }
+ }
+
+ if (query.ByteSizeLong() > Config.Proto.GetMaxRequestSize()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Query data is not placed in the table. Please shorten your request";
+ }
+
+ if (queryInternal.ByteSizeLong() > Config.Proto.GetMaxRequestSize()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Query internal data is not placed in the table. Please reduce the number of connections and bindings";
+ }
+
+ response->second.After.ConstructInPlace().CopyFrom(query);
+
TSqlQueryBuilder writeQueryBuilder(YdbConnection->TablePathPrefix, "CreateQuery(write)");
- writeQueryBuilder.AddString("scope", scope);
- writeQueryBuilder.AddString("query_id", queryId);
- writeQueryBuilder.AddString("name", query.content().name());
- writeQueryBuilder.AddInt64("status", query.meta().status());
- writeQueryBuilder.AddInt64("query_type", query.content().type());
- writeQueryBuilder.AddInt64("execute_mode", query.meta().execute_mode());
- writeQueryBuilder.AddString("user", user);
- writeQueryBuilder.AddInt64("visibility", query.content().acl().visibility());
- writeQueryBuilder.AddBool("automatic", query.content().automatic());
- writeQueryBuilder.AddInt64("revision", InitialRevision);
- writeQueryBuilder.AddString("query", query.SerializeAsString());
- writeQueryBuilder.AddString("internal", queryInternal.SerializeAsString());
- writeQueryBuilder.AddString("job_id", jobId);
-
- InsertIdempotencyKey(writeQueryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), startTime + Config.IdempotencyKeyTtl);
-
- if (request.execute_mode() != YandexQuery::SAVE) {
- writeQueryBuilder.AddString("job", job.SerializeAsString());
- writeQueryBuilder.AddTimestamp("zero_timestamp", TInstant::Zero());
- writeQueryBuilder.AddTimestamp("now", TInstant::Now());
-
- // insert job
- writeQueryBuilder.AddText(
+ writeQueryBuilder.AddString("scope", scope);
+ writeQueryBuilder.AddString("query_id", queryId);
+ writeQueryBuilder.AddString("name", query.content().name());
+ writeQueryBuilder.AddInt64("status", query.meta().status());
+ writeQueryBuilder.AddInt64("query_type", query.content().type());
+ writeQueryBuilder.AddInt64("execute_mode", query.meta().execute_mode());
+ writeQueryBuilder.AddString("user", user);
+ writeQueryBuilder.AddInt64("visibility", query.content().acl().visibility());
+ writeQueryBuilder.AddBool("automatic", query.content().automatic());
+ writeQueryBuilder.AddInt64("revision", InitialRevision);
+ writeQueryBuilder.AddString("query", query.SerializeAsString());
+ writeQueryBuilder.AddString("internal", queryInternal.SerializeAsString());
+ writeQueryBuilder.AddString("job_id", jobId);
+
+ InsertIdempotencyKey(writeQueryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), startTime + Config.IdempotencyKeyTtl);
+
+ if (request.execute_mode() != YandexQuery::SAVE) {
+ writeQueryBuilder.AddString("job", job.SerializeAsString());
+ writeQueryBuilder.AddTimestamp("zero_timestamp", TInstant::Zero());
+ writeQueryBuilder.AddTimestamp("now", TInstant::Now());
+
+ // insert job
+ writeQueryBuilder.AddText(
"INSERT INTO `" JOBS_TABLE_NAME "`\n"
"(`" SCOPE_COLUMN_NAME "`, `" QUERY_ID_COLUMN_NAME "`, `" JOB_ID_COLUMN_NAME "`, \n"
"`" JOB_COLUMN_NAME "`, `" USER_COLUMN_NAME "`, `" VISIBILITY_COLUMN_NAME "`)\n"
"VALUES\n"
" ($scope, $query_id, $job_id, $job, $user, $visibility);"
- );
-
- // insert pending small
- writeQueryBuilder.AddText(
+ );
+
+ // insert pending small
+ writeQueryBuilder.AddText(
"INSERT INTO `" PENDING_SMALL_TABLE_NAME "`\n"
"(`" SCOPE_COLUMN_NAME "`, `" QUERY_ID_COLUMN_NAME "`, `" QUERY_TYPE_COLUMN_NAME "`, `" LAST_SEEN_AT_COLUMN_NAME "`,\n"
"`" RETRY_COUNTER_COLUMN_NAME "`, `" RETRY_COUNTER_UPDATE_COLUMN_NAME "`, `" HOST_NAME_COLUMN_NAME "`, `" OWNER_COLUMN_NAME "`)\n"
"VALUES\n"
" ($scope, $query_id, $query_type, $zero_timestamp, 0, $now, \"\", \"\");"
- );
- }
-
- // insert query
- writeQueryBuilder.AddText(
- "INSERT INTO `" QUERIES_TABLE_NAME "` (`" SCOPE_COLUMN_NAME "`, `" QUERY_ID_COLUMN_NAME "`, `" NAME_COLUMN_NAME "`, `" STATUS_COLUMN_NAME "`, `" QUERY_TYPE_COLUMN_NAME "`, "
- "`" EXECUTE_MODE_COLUMN_NAME "`, `" USER_COLUMN_NAME "`, `" VISIBILITY_COLUMN_NAME "`, `" AUTOMATIC_COLUMN_NAME "`, "
+ );
+ }
+
+ // insert query
+ writeQueryBuilder.AddText(
+ "INSERT INTO `" QUERIES_TABLE_NAME "` (`" SCOPE_COLUMN_NAME "`, `" QUERY_ID_COLUMN_NAME "`, `" NAME_COLUMN_NAME "`, `" STATUS_COLUMN_NAME "`, `" QUERY_TYPE_COLUMN_NAME "`, "
+ "`" EXECUTE_MODE_COLUMN_NAME "`, `" USER_COLUMN_NAME "`, `" VISIBILITY_COLUMN_NAME "`, `" AUTOMATIC_COLUMN_NAME "`, "
"`" REVISION_COLUMN_NAME "`, `" QUERY_COLUMN_NAME "`, `" INTERNAL_COLUMN_NAME "`, `" LAST_JOB_ID_COLUMN_NAME "`, `" GENERATION_COLUMN_NAME "`, `" META_REVISION_COLUMN_NAME "`)\n"
- "VALUES ($scope, $query_id, $name, $status, $query_type, "
- "$execute_mode, $user, $visibility, $automatic, "
+ "VALUES ($scope, $query_id, $name, $status, $query_type, "
+ "$execute_mode, $user, $visibility, $automatic, "
"$revision, $query, $internal, $job_id, 0, 0);"
- );
-
- const auto write = writeQueryBuilder.Build();
- return make_pair(write.Sql, write.Params);
- };
-
- const auto read = readQueryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- TAsyncStatus status = ReadModifyWrite(NActors::TActivationContext::ActorSystem(), read.Sql, read.Params, prepareParams, requestCounters, debugInfo);
- auto prepare = [response] { return *response; };
- auto success = SendAuditResponse<TEvControlPlaneStorage::TEvCreateQueryResponse, YandexQuery::CreateQueryResult, TAuditDetails<YandexQuery::Query>>(
- MakeLogPrefix(scope, user, queryId) + "CreateQueryRequest",
- NActors::TActivationContext::ActorSystem(),
- status,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(CreateQueryRequest, scope, user, delta, byteSize, future.GetValue());
- });
-}
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvListQueriesRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_QUERIES];
- requestCounters->InFly->Inc();
-
- const YandexQuery::ListQueriesRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::VIEW_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
+ );
+
+ const auto write = writeQueryBuilder.Build();
+ return make_pair(write.Sql, write.Params);
+ };
+
+ const auto read = readQueryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ TAsyncStatus status = ReadModifyWrite(NActors::TActivationContext::ActorSystem(), read.Sql, read.Params, prepareParams, requestCounters, debugInfo);
+ auto prepare = [response] { return *response; };
+ auto success = SendAuditResponse<TEvControlPlaneStorage::TEvCreateQueryResponse, YandexQuery::CreateQueryResult, TAuditDetails<YandexQuery::Query>>(
+ MakeLogPrefix(scope, user, queryId) + "CreateQueryRequest",
+ NActors::TActivationContext::ActorSystem(),
+ status,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(CreateQueryRequest, scope, user, delta, byteSize, future.GetValue());
+ });
+}
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvListQueriesRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_QUERIES];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::ListQueriesRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ const TString token = ev->Get()->Token;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::VIEW_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
const TString pageToken = request.page_token();
- const int byteSize = request.ByteSize();
- const int64_t limit = request.limit();
-
- CPS_LOG_T(MakeLogPrefix(scope, user)
- << "ListQueriesRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
-
- NYql::TIssues issues = ValidateEvent(ev);
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user)
- << "ListQueriesRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvListQueriesResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(ListQueriesRequest, scope, user, delta, byteSize, false);
+ const int byteSize = request.ByteSize();
+ const int64_t limit = request.limit();
+
+ CPS_LOG_T(MakeLogPrefix(scope, user)
+ << "ListQueriesRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+
+ NYql::TIssues issues = ValidateEvent(ev);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user)
+ << "ListQueriesRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvListQueriesResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(ListQueriesRequest, scope, user, delta, byteSize, false);
return;
- }
-
+ }
+
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "ListQueries");
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("last_query", pageToken);
- queryBuilder.AddTimestamp("now", TInstant::Now());
- queryBuilder.AddUint64("limit", limit + 1);
-
- queryBuilder.AddText(
- "SELECT `" QUERY_ID_COLUMN_NAME "`, `" QUERY_COLUMN_NAME "` FROM `" QUERIES_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` >= $last_query AND (`" EXPIRE_AT_COLUMN_NAME "` is NULL OR `" EXPIRE_AT_COLUMN_NAME "` > $now)"
- );
-
- TString filter;
- if (request.has_filter()) {
- TVector<TString> filters;
- if (request.filter().name()) {
- queryBuilder.AddString("filter_name", request.filter().name());
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("last_query", pageToken);
+ queryBuilder.AddTimestamp("now", TInstant::Now());
+ queryBuilder.AddUint64("limit", limit + 1);
+
+ queryBuilder.AddText(
+ "SELECT `" QUERY_ID_COLUMN_NAME "`, `" QUERY_COLUMN_NAME "` FROM `" QUERIES_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` >= $last_query AND (`" EXPIRE_AT_COLUMN_NAME "` is NULL OR `" EXPIRE_AT_COLUMN_NAME "` > $now)"
+ );
+
+ TString filter;
+ if (request.has_filter()) {
+ TVector<TString> filters;
+ if (request.filter().name()) {
+ queryBuilder.AddString("filter_name", request.filter().name());
filters.push_back("`" NAME_COLUMN_NAME "` ILIKE '%' || $filter_name || '%'");
- }
-
- if (request.filter().query_type() != YandexQuery::QueryContent::QUERY_TYPE_UNSPECIFIED) {
- queryBuilder.AddInt64("filter_query_type", request.filter().query_type());
- filters.push_back("`" QUERY_TYPE_COLUMN_NAME "` = $filter_query_type");
- }
-
- if (request.filter().status_size() > 0) {
- NYdb::TValueBuilder listStatusesBuilder;
- listStatusesBuilder.BeginList();
- for (const auto& status: request.filter().status()) {
- listStatusesBuilder.AddListItem(NYdb::TValueBuilder().Int64(status).Build());
- }
- listStatusesBuilder.EndList();
- queryBuilder.AddValue("filter_statuses", listStatusesBuilder.Build());
- filters.push_back("`" STATUS_COLUMN_NAME "` IN $filter_statuses");
- }
-
- if (request.filter().mode_size() > 0) {
- NYdb::TValueBuilder listModesBuilder;
- listModesBuilder.BeginList();
- for (const auto& mode: request.filter().mode()) {
- listModesBuilder.AddListItem(NYdb::TValueBuilder().Int64(mode).Build());
- }
- listModesBuilder.EndList();
- queryBuilder.AddValue("filter_modes", listModesBuilder.Build());
- filters.push_back("`" EXECUTE_MODE_COLUMN_NAME "` IN $filter_modes");
- }
-
- if (request.filter().created_by_me()) {
- queryBuilder.AddString("user", user);
- filters.push_back("`" USER_COLUMN_NAME "` = $user");
- }
-
+ }
+
+ if (request.filter().query_type() != YandexQuery::QueryContent::QUERY_TYPE_UNSPECIFIED) {
+ queryBuilder.AddInt64("filter_query_type", request.filter().query_type());
+ filters.push_back("`" QUERY_TYPE_COLUMN_NAME "` = $filter_query_type");
+ }
+
+ if (request.filter().status_size() > 0) {
+ NYdb::TValueBuilder listStatusesBuilder;
+ listStatusesBuilder.BeginList();
+ for (const auto& status: request.filter().status()) {
+ listStatusesBuilder.AddListItem(NYdb::TValueBuilder().Int64(status).Build());
+ }
+ listStatusesBuilder.EndList();
+ queryBuilder.AddValue("filter_statuses", listStatusesBuilder.Build());
+ filters.push_back("`" STATUS_COLUMN_NAME "` IN $filter_statuses");
+ }
+
+ if (request.filter().mode_size() > 0) {
+ NYdb::TValueBuilder listModesBuilder;
+ listModesBuilder.BeginList();
+ for (const auto& mode: request.filter().mode()) {
+ listModesBuilder.AddListItem(NYdb::TValueBuilder().Int64(mode).Build());
+ }
+ listModesBuilder.EndList();
+ queryBuilder.AddValue("filter_modes", listModesBuilder.Build());
+ filters.push_back("`" EXECUTE_MODE_COLUMN_NAME "` IN $filter_modes");
+ }
+
+ if (request.filter().created_by_me()) {
+ queryBuilder.AddString("user", user);
+ filters.push_back("`" USER_COLUMN_NAME "` = $user");
+ }
+
if (request.filter().visibility() != YandexQuery::Acl::VISIBILITY_UNSPECIFIED) {
- queryBuilder.AddInt64("filter_visibility", request.filter().visibility());
- filters.push_back("`" VISIBILITY_COLUMN_NAME "` = $filter_visibility");
+ queryBuilder.AddInt64("filter_visibility", request.filter().visibility());
+ filters.push_back("`" VISIBILITY_COLUMN_NAME "` = $filter_visibility");
}
switch (request.filter().automatic()) {
@@ -383,164 +383,164 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvListQueries
}
filter = JoinSeq(" AND ", filters);
- }
-
- PrepareViewAccessCondition(queryBuilder, permissions, user);
-
- if (filter) {
- queryBuilder.AddText(" AND (" + filter + ")\n");
- }
-
- queryBuilder.AddText(
- "ORDER BY " QUERY_ID_COLUMN_NAME "\n"
- "LIMIT $limit;"
- );
-
- const auto read = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(read.Sql, read.Params, requestCounters, debugInfo);
- auto prepare = [resultSets=resultSets, limit] {
- if (resultSets->size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
- }
-
- YandexQuery::ListQueriesResult result;
- TResultSetParser parser(resultSets->front());
- while (parser.TryNextRow()) {
- YandexQuery::Query query;
- if (!query.ParseFromString(*parser.ColumnParser(QUERY_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for query. Please contact internal support";
- }
- YandexQuery::BriefQuery briefQuery;
+ }
+
+ PrepareViewAccessCondition(queryBuilder, permissions, user);
+
+ if (filter) {
+ queryBuilder.AddText(" AND (" + filter + ")\n");
+ }
+
+ queryBuilder.AddText(
+ "ORDER BY " QUERY_ID_COLUMN_NAME "\n"
+ "LIMIT $limit;"
+ );
+
+ const auto read = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto [result, resultSets] = Read(read.Sql, read.Params, requestCounters, debugInfo);
+ auto prepare = [resultSets=resultSets, limit] {
+ if (resultSets->size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
+ }
+
+ YandexQuery::ListQueriesResult result;
+ TResultSetParser parser(resultSets->front());
+ while (parser.TryNextRow()) {
+ YandexQuery::Query query;
+ if (!query.ParseFromString(*parser.ColumnParser(QUERY_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for query. Please contact internal support";
+ }
+ YandexQuery::BriefQuery briefQuery;
const auto lastJobId = query.meta().last_job_id();
query.mutable_meta()->set_last_job_id(lastJobId + "-" + query.meta().common().id());
- *briefQuery.mutable_meta() = query.meta();
- briefQuery.set_name(query.content().name());
- briefQuery.set_type(query.content().type());
- briefQuery.set_visibility(query.content().acl().visibility());
- briefQuery.set_automatic(query.content().automatic());
- *result.add_query() = briefQuery;
- }
-
- if (result.query_size() == limit + 1) {
- result.set_next_page_token(result.query(result.query_size() - 1).meta().common().id());
- result.mutable_query()->RemoveLast();
- }
- return result;
- };
-
- auto success = SendResponse<TEvControlPlaneStorage::TEvListQueriesResponse, YandexQuery::ListQueriesResult>(
- MakeLogPrefix(scope, user) + "ListQueriesRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(ListQueriesRequest, scope, user, delta, byteSize, future.GetValue());
- });
-}
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDescribeQueryRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_DESCRIBE_QUERY];
- requestCounters->InFly->Inc();
-
- const YandexQuery::DescribeQueryRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::VIEW_PUBLIC | TPermissions::VIEW_AST};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const TString queryId = request.query_id();
- const int byteSize = request.ByteSize();
- CPS_LOG_T(MakeLogPrefix(scope, user, queryId)
- << "DescribeQueryRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
-
- NYql::TIssues issues = ValidateEvent(ev);
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, queryId)
- << "DescribeQueryRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " " << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvDescribeQueryResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(DescribeQueryRequest, scope, user, queryId, delta, byteSize, false);
+ *briefQuery.mutable_meta() = query.meta();
+ briefQuery.set_name(query.content().name());
+ briefQuery.set_type(query.content().type());
+ briefQuery.set_visibility(query.content().acl().visibility());
+ briefQuery.set_automatic(query.content().automatic());
+ *result.add_query() = briefQuery;
+ }
+
+ if (result.query_size() == limit + 1) {
+ result.set_next_page_token(result.query(result.query_size() - 1).meta().common().id());
+ result.mutable_query()->RemoveLast();
+ }
+ return result;
+ };
+
+ auto success = SendResponse<TEvControlPlaneStorage::TEvListQueriesResponse, YandexQuery::ListQueriesResult>(
+ MakeLogPrefix(scope, user) + "ListQueriesRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(ListQueriesRequest, scope, user, delta, byteSize, future.GetValue());
+ });
+}
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDescribeQueryRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_DESCRIBE_QUERY];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::DescribeQueryRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ const TString token = ev->Get()->Token;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::VIEW_PUBLIC | TPermissions::VIEW_AST};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const TString queryId = request.query_id();
+ const int byteSize = request.ByteSize();
+ CPS_LOG_T(MakeLogPrefix(scope, user, queryId)
+ << "DescribeQueryRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+
+ NYql::TIssues issues = ValidateEvent(ev);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user, queryId)
+ << "DescribeQueryRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " " << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvDescribeQueryResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(DescribeQueryRequest, scope, user, queryId, delta, byteSize, false);
return;
- }
-
+ }
+
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "DescribeQuery");
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("query_id", queryId);
- queryBuilder.AddTimestamp("now", TInstant::Now());
- queryBuilder.AddText(
- "SELECT `" QUERY_COLUMN_NAME "` FROM `" QUERIES_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id AND (`" EXPIRE_AT_COLUMN_NAME "` is NULL OR `" EXPIRE_AT_COLUMN_NAME "` > $now);"
- );
- const auto query = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
- auto prepare = [resultSets=resultSets, user,permissions] {
- if (resultSets->size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
- }
-
- TResultSetParser parser(resultSets->front());
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
- }
-
- YandexQuery::DescribeQueryResult result;
- if (!result.mutable_query()->ParseFromString(*parser.ColumnParser(QUERY_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for query. Please contact internal support";
- }
-
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("query_id", queryId);
+ queryBuilder.AddTimestamp("now", TInstant::Now());
+ queryBuilder.AddText(
+ "SELECT `" QUERY_COLUMN_NAME "` FROM `" QUERIES_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id AND (`" EXPIRE_AT_COLUMN_NAME "` is NULL OR `" EXPIRE_AT_COLUMN_NAME "` > $now);"
+ );
+ const auto query = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ auto prepare = [resultSets=resultSets, user,permissions] {
+ if (resultSets->size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
+ }
+
+ TResultSetParser parser(resultSets->front());
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
+ }
+
+ YandexQuery::DescribeQueryResult result;
+ if (!result.mutable_query()->ParseFromString(*parser.ColumnParser(QUERY_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for query. Please contact internal support";
+ }
+
const auto lastJobId = result.query().meta().last_job_id();
result.mutable_query()->mutable_meta()->set_last_job_id(lastJobId + "-" + result.query().meta().common().id());
- const auto queryVisibility = result.query().content().acl().visibility();
- const auto queryUser = result.query().meta().common().created_by();
- const bool hasViewAccess = HasViewAccess(permissions, queryVisibility, queryUser, user);
- if (!hasViewAccess) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
- }
-
- if (!permissions.Check(TPermissions::VIEW_AST)) {
- result.mutable_query()->clear_ast();
- }
-
- return result;
- };
-
- auto success = SendResponse<TEvControlPlaneStorage::TEvDescribeQueryResponse, YandexQuery::DescribeQueryResult>(
- MakeLogPrefix(scope, user, queryId) + "DescribeQueryRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(DescribeQueryRequest, scope, user, queryId, delta, byteSize, future.GetValue());
- });
-}
-
+ const auto queryVisibility = result.query().content().acl().visibility();
+ const auto queryUser = result.query().meta().common().created_by();
+ const bool hasViewAccess = HasViewAccess(permissions, queryVisibility, queryUser, user);
+ if (!hasViewAccess) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
+ }
+
+ if (!permissions.Check(TPermissions::VIEW_AST)) {
+ result.mutable_query()->clear_ast();
+ }
+
+ return result;
+ };
+
+ auto success = SendResponse<TEvControlPlaneStorage::TEvDescribeQueryResponse, YandexQuery::DescribeQueryResult>(
+ MakeLogPrefix(scope, user, queryId) + "DescribeQueryRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(DescribeQueryRequest, scope, user, queryId, delta, byteSize, future.GetValue());
+ });
+}
+
void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetQueryStatusRequest::TPtr& ev)
{
TInstant startTime = TInstant::Now();
@@ -551,7 +551,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetQuerySta
const TString scope = ev->Get()->Scope;
const TString user = ev->Get()->User;
const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
? ev->Get()->Permissions
: TPermissions{TPermissions::VIEW_PUBLIC | TPermissions::VIEW_AST};
if (IsSuperUser(user)) {
@@ -577,18 +577,18 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetQuerySta
}
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "GetQueryStatus");
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("query_id", queryId);
- queryBuilder.AddTimestamp("now", TInstant::Now());
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("query_id", queryId);
+ queryBuilder.AddTimestamp("now", TInstant::Now());
- queryBuilder.AddText(
+ queryBuilder.AddText(
"SELECT `" STATUS_COLUMN_NAME "`, `" VISIBILITY_COLUMN_NAME "`, `" USER_COLUMN_NAME "`, `" META_REVISION_COLUMN_NAME "` FROM `" QUERIES_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id AND (`" EXPIRE_AT_COLUMN_NAME "` is NULL OR `" EXPIRE_AT_COLUMN_NAME "` > $now);"
- );
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id AND (`" EXPIRE_AT_COLUMN_NAME "` is NULL OR `" EXPIRE_AT_COLUMN_NAME "` > $now);"
+ );
- const auto read = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(read.Sql, read.Params, requestCounters, debugInfo);
+ const auto read = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto [result, resultSets] = Read(read.Sql, read.Params, requestCounters, debugInfo);
auto prepare = [resultSets=resultSets, user,permissions] {
if (resultSets->size() != 1) {
ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
@@ -630,298 +630,298 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetQuerySta
});
}
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvModifyQueryRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_MODIFY_QUERY];
- requestCounters->InFly->Inc();
-
- YandexQuery::ModifyQueryRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::QUERY_INVOKE | TPermissions::CONNECTIONS_USE | TPermissions::BINDINGS_USE | TPermissions::MANAGE_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const TString queryId = request.query_id();
- const int byteSize = ev->Get()->Request.ByteSize();
- const int64_t previousRevision = request.previous_revision();
-
- CPS_LOG_T(MakeLogPrefix(scope, user, queryId)
- << "ModifyQueryRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
-
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvModifyQueryRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_MODIFY_QUERY];
+ requestCounters->InFly->Inc();
+
+ YandexQuery::ModifyQueryRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ const TString token = ev->Get()->Token;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::QUERY_INVOKE | TPermissions::CONNECTIONS_USE | TPermissions::BINDINGS_USE | TPermissions::MANAGE_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const TString queryId = request.query_id();
+ const int byteSize = ev->Get()->Request.ByteSize();
+ const int64_t previousRevision = request.previous_revision();
+
+ CPS_LOG_T(MakeLogPrefix(scope, user, queryId)
+ << "ModifyQueryRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+
if (request.content().type() == YandexQuery::QueryContent::STREAMING && request.state_load_mode() == YandexQuery::STATE_LOAD_MODE_UNSPECIFIED) {
request.set_state_load_mode(YandexQuery::EMPTY);
- }
-
- NYql::TIssues issues = ValidateQuery(ev);
- if (request.execute_mode() != YandexQuery::SAVE && !permissions.Check(TPermissions::QUERY_INVOKE)) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::ACCESS_DENIED, "Permission denied to create a query with these parameters. Please receive a permission yq.queries.invoke"));
- }
-
- if (request.content().acl().visibility() == YandexQuery::Acl::SCOPE && !permissions.Check(TPermissions::MANAGE_PUBLIC)) {
- issues.AddIssue(MakeErrorIssue(TIssuesIds::ACCESS_DENIED, "Permission denied to create a query with these parameters. Please receive a permission yq.resources.managePublic"));
- }
+ }
+
+ NYql::TIssues issues = ValidateQuery(ev);
+ if (request.execute_mode() != YandexQuery::SAVE && !permissions.Check(TPermissions::QUERY_INVOKE)) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::ACCESS_DENIED, "Permission denied to create a query with these parameters. Please receive a permission yq.queries.invoke"));
+ }
+
+ if (request.content().acl().visibility() == YandexQuery::Acl::SCOPE && !permissions.Check(TPermissions::MANAGE_PUBLIC)) {
+ issues.AddIssue(MakeErrorIssue(TIssuesIds::ACCESS_DENIED, "Permission denied to create a query with these parameters. Please receive a permission yq.resources.managePublic"));
+ }
if (request.state_load_mode() == YandexQuery::FROM_LAST_CHECKPOINT) {
issues.AddIssue(MakeErrorIssue(TIssuesIds::UNSUPPORTED, "State load mode \"FROM_LAST_CHECKPOINT\" is not supported"));
}
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, queryId)
- << "ModifyQueryRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvModifyQueryResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(ModifyQueryRequest, scope, user, queryId, delta, byteSize, false);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user, queryId)
+ << "ModifyQueryRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvModifyQueryResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(ModifyQueryRequest, scope, user, queryId, delta, byteSize, false);
return;
- }
-
- const TString idempotencyKey = request.idempotency_key();
-
+ }
+
+ const TString idempotencyKey = request.idempotency_key();
+
std::shared_ptr<std::pair<YandexQuery::ModifyQueryResult, TAuditDetails<YandexQuery::Query>>> response =
std::make_shared<std::pair<YandexQuery::ModifyQueryResult, TAuditDetails<YandexQuery::Query>>>();
-
+
TSqlQueryBuilder readQueryBuilder(YdbConnection->TablePathPrefix, "ModifyQuery(read)");
- readQueryBuilder.AddString("scope", scope);
- readQueryBuilder.AddString("query_id", queryId);
- readQueryBuilder.AddTimestamp("now", TInstant::Now());
-
- if (request.execute_mode() != YandexQuery::SAVE) {
- readQueryBuilder.AddString("user", user);
- readQueryBuilder.AddInt64("scope_visibility", YandexQuery::Acl::SCOPE);
- // user connections
- readQueryBuilder.AddText(
- "SELECT `" CONNECTION_ID_COLUMN_NAME "`, `" CONNECTION_COLUMN_NAME "` FROM `" CONNECTIONS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND (`" VISIBILITY_COLUMN_NAME "` = $scope_visibility OR `" USER_COLUMN_NAME "` = $user);\n"
- );
-
- // user bindings
- readQueryBuilder.AddText(
- "SELECT `" BINDING_ID_COLUMN_NAME "`, `" BINDING_COLUMN_NAME "` FROM `" BINDINGS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND (`" VISIBILITY_COLUMN_NAME "` = $scope_visibility OR `" USER_COLUMN_NAME "` = $user);\n"
- );
- }
-
- readQueryBuilder.AddText(
+ readQueryBuilder.AddString("scope", scope);
+ readQueryBuilder.AddString("query_id", queryId);
+ readQueryBuilder.AddTimestamp("now", TInstant::Now());
+
+ if (request.execute_mode() != YandexQuery::SAVE) {
+ readQueryBuilder.AddString("user", user);
+ readQueryBuilder.AddInt64("scope_visibility", YandexQuery::Acl::SCOPE);
+ // user connections
+ readQueryBuilder.AddText(
+ "SELECT `" CONNECTION_ID_COLUMN_NAME "`, `" CONNECTION_COLUMN_NAME "` FROM `" CONNECTIONS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND (`" VISIBILITY_COLUMN_NAME "` = $scope_visibility OR `" USER_COLUMN_NAME "` = $user);\n"
+ );
+
+ // user bindings
+ readQueryBuilder.AddText(
+ "SELECT `" BINDING_ID_COLUMN_NAME "`, `" BINDING_COLUMN_NAME "` FROM `" BINDINGS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND (`" VISIBILITY_COLUMN_NAME "` = $scope_visibility OR `" USER_COLUMN_NAME "` = $user);\n"
+ );
+ }
+
+ readQueryBuilder.AddText(
"SELECT `" QUERY_COLUMN_NAME "`, `" INTERNAL_COLUMN_NAME "`, `" RESULT_ID_COLUMN_NAME "` FROM `" QUERIES_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id AND (`" EXPIRE_AT_COLUMN_NAME "` is NULL OR `" EXPIRE_AT_COLUMN_NAME "` > $now);"
- );
-
- auto prepareParams = [=, config=Config](const TVector<TResultSet>& resultSets) {
- const size_t countSets = 1 + (request.execute_mode() != YandexQuery::SAVE ? 2 : 0);
-
- if (resultSets.size() != countSets) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to " << countSets << " but equal " << resultSets.size() << ". Please contact internal support";
- }
-
- TResultSetParser parser(resultSets.back());
-
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
- }
-
- YandexQuery::Query query;
- if (!query.ParseFromString(*parser.ColumnParser(QUERY_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for query. Please contact internal support";
- }
-
- YandexQuery::Internal::QueryInternal internal;
- if (!internal.ParseFromString(*parser.ColumnParser(INTERNAL_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for query internal. Please contact internal support";
- }
-
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id AND (`" EXPIRE_AT_COLUMN_NAME "` is NULL OR `" EXPIRE_AT_COLUMN_NAME "` > $now);"
+ );
+
+ auto prepareParams = [=, config=Config](const TVector<TResultSet>& resultSets) {
+ const size_t countSets = 1 + (request.execute_mode() != YandexQuery::SAVE ? 2 : 0);
+
+ if (resultSets.size() != countSets) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to " << countSets << " but equal " << resultSets.size() << ". Please contact internal support";
+ }
+
+ TResultSetParser parser(resultSets.back());
+
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
+ }
+
+ YandexQuery::Query query;
+ if (!query.ParseFromString(*parser.ColumnParser(QUERY_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for query. Please contact internal support";
+ }
+
+ YandexQuery::Internal::QueryInternal internal;
+ if (!internal.ParseFromString(*parser.ColumnParser(INTERNAL_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for query internal. Please contact internal support";
+ }
+
const TString resultId = request.execute_mode() == YandexQuery::SAVE ? parser.ColumnParser(RESULT_ID_COLUMN_NAME).GetOptionalString().GetOrElse("") : "";
- const auto queryVisibility = query.content().acl().visibility();
- const auto queryUser = query.meta().common().created_by();
- const bool hasManageAccess = HasManageAccess(permissions, queryVisibility, queryUser, user);
- if (!hasManageAccess) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
- }
-
- if (query.content().type() != request.content().type()) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Query type cannot be changed. Please specify " << YandexQuery::QueryContent_QueryType_Name(query.content().type()) << " instead of " << YandexQuery::QueryContent_QueryType_Name(request.content().type());
- }
-
- if (query.content().acl().visibility() == YandexQuery::Acl::SCOPE && request.content().acl().visibility() == YandexQuery::Acl::PRIVATE) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Changing visibility from SCOPE to PRIVATE is forbidden. Please create a new query with visibility PRIVATE";
- }
-
- auto oldVisibility = query.content().acl().visibility();
-
- auto now = TInstant::Now();
- auto& common = *query.mutable_meta()->mutable_common();
- common.set_revision(common.revision() + 1);
- common.set_modified_by(user);
+ const auto queryVisibility = query.content().acl().visibility();
+ const auto queryUser = query.meta().common().created_by();
+ const bool hasManageAccess = HasManageAccess(permissions, queryVisibility, queryUser, user);
+ if (!hasManageAccess) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
+ }
+
+ if (query.content().type() != request.content().type()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Query type cannot be changed. Please specify " << YandexQuery::QueryContent_QueryType_Name(query.content().type()) << " instead of " << YandexQuery::QueryContent_QueryType_Name(request.content().type());
+ }
+
+ if (query.content().acl().visibility() == YandexQuery::Acl::SCOPE && request.content().acl().visibility() == YandexQuery::Acl::PRIVATE) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Changing visibility from SCOPE to PRIVATE is forbidden. Please create a new query with visibility PRIVATE";
+ }
+
+ auto oldVisibility = query.content().acl().visibility();
+
+ auto now = TInstant::Now();
+ auto& common = *query.mutable_meta()->mutable_common();
+ common.set_revision(common.revision() + 1);
+ common.set_modified_by(user);
*common.mutable_modified_at() = NProtoInterop::CastToProto(now);
-
- *query.mutable_content() = request.content();
- query.mutable_meta()->set_execute_mode(request.execute_mode());
-
- bool isValidMode = request.execute_mode() == YandexQuery::SAVE ||
- IsIn({
- YandexQuery::QueryMeta::ABORTED_BY_USER,
- YandexQuery::QueryMeta::ABORTED_BY_SYSTEM,
- YandexQuery::QueryMeta::COMPLETED,
- YandexQuery::QueryMeta::FAILED,
- YandexQuery::QueryMeta::PAUSED
- }, query.meta().status());
-
- if (!isValidMode) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Conversion from status " << YandexQuery::QueryMeta::ComputeStatus_Name(query.meta().status()) << " to " << YandexQuery::QueryMeta::ComputeStatus_Name(YandexQuery::QueryMeta::STARTING) << " is not possible. Please wait for the query to complete or stop it";
- }
-
- if (!Config.Proto.GetDisableCurrentIam()) {
- internal.set_token(token);
- }
- if (request.execute_mode() != YandexQuery::SAVE) {
+
+ *query.mutable_content() = request.content();
+ query.mutable_meta()->set_execute_mode(request.execute_mode());
+
+ bool isValidMode = request.execute_mode() == YandexQuery::SAVE ||
+ IsIn({
+ YandexQuery::QueryMeta::ABORTED_BY_USER,
+ YandexQuery::QueryMeta::ABORTED_BY_SYSTEM,
+ YandexQuery::QueryMeta::COMPLETED,
+ YandexQuery::QueryMeta::FAILED,
+ YandexQuery::QueryMeta::PAUSED
+ }, query.meta().status());
+
+ if (!isValidMode) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Conversion from status " << YandexQuery::QueryMeta::ComputeStatus_Name(query.meta().status()) << " to " << YandexQuery::QueryMeta::ComputeStatus_Name(YandexQuery::QueryMeta::STARTING) << " is not possible. Please wait for the query to complete or stop it";
+ }
+
+ if (!Config.Proto.GetDisableCurrentIam()) {
+ internal.set_token(token);
+ }
+ if (request.execute_mode() != YandexQuery::SAVE) {
if (request.state_load_mode() != YandexQuery::StateLoadMode::STATE_LOAD_MODE_UNSPECIFIED) {
internal.set_state_load_mode(request.state_load_mode());
}
internal.mutable_disposition()->CopyFrom(request.disposition());
- internal.clear_binding();
- internal.clear_connection();
- // TODO: move to run actor priority selection
- if (permissions.Check(TPermissions::BINDINGS_USE)) {
- auto bindings = GetEntitiesWithVisibilityPriority<YandexQuery::Binding>(resultSets[resultSets.size() - 2], BINDING_COLUMN_NAME);
- for (const auto& [_, binding]: bindings) {
- if (!Config.AvailableBindings.contains(binding.content().setting().binding_case())) {
- continue;
- }
-
- *internal.add_binding() = binding;
- }
- }
-
- if (permissions.Check(TPermissions::CONNECTIONS_USE)) {
- auto connections = GetEntitiesWithVisibilityPriority<YandexQuery::Connection>(resultSets[resultSets.size() - 3], CONNECTION_COLUMN_NAME);
- for (const auto& [_, connection]: connections) {
- if (!Config.AvailableConnections.contains(connection.content().setting().connection_case())) {
- continue;
- }
-
- if (GetIamAuth(connection) == YandexQuery::IamAuth::kCurrentIam && Config.Proto.GetDisableCurrentIam()) {
- continue;
- }
-
- *internal.add_connection() = connection;
- }
- }
- }
-
- if (query.ByteSizeLong() > Config.Proto.GetMaxRequestSize()) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Query data is not placed in the table. Please shorten your request";
- }
-
- if (internal.ByteSizeLong() > Config.Proto.GetMaxRequestSize()) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Internal data is not placed in the table. Please reduce the number of connections and bindings";
- }
-
- YandexQuery::Job job;
- const TString jobId = request.execute_mode() == YandexQuery::SAVE ? "" : GetEntityIdAsString(Config.IdsPrefix, EEntityType::JOB);
- if (request.execute_mode() != YandexQuery::SAVE) {
- internal.clear_action();
- query.clear_result_set_meta();
- query.clear_plan();
+ internal.clear_binding();
+ internal.clear_connection();
+ // TODO: move to run actor priority selection
+ if (permissions.Check(TPermissions::BINDINGS_USE)) {
+ auto bindings = GetEntitiesWithVisibilityPriority<YandexQuery::Binding>(resultSets[resultSets.size() - 2], BINDING_COLUMN_NAME);
+ for (const auto& [_, binding]: bindings) {
+ if (!Config.AvailableBindings.contains(binding.content().setting().binding_case())) {
+ continue;
+ }
+
+ *internal.add_binding() = binding;
+ }
+ }
+
+ if (permissions.Check(TPermissions::CONNECTIONS_USE)) {
+ auto connections = GetEntitiesWithVisibilityPriority<YandexQuery::Connection>(resultSets[resultSets.size() - 3], CONNECTION_COLUMN_NAME);
+ for (const auto& [_, connection]: connections) {
+ if (!Config.AvailableConnections.contains(connection.content().setting().connection_case())) {
+ continue;
+ }
+
+ if (GetIamAuth(connection) == YandexQuery::IamAuth::kCurrentIam && Config.Proto.GetDisableCurrentIam()) {
+ continue;
+ }
+
+ *internal.add_connection() = connection;
+ }
+ }
+ }
+
+ if (query.ByteSizeLong() > Config.Proto.GetMaxRequestSize()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Query data is not placed in the table. Please shorten your request";
+ }
+
+ if (internal.ByteSizeLong() > Config.Proto.GetMaxRequestSize()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Internal data is not placed in the table. Please reduce the number of connections and bindings";
+ }
+
+ YandexQuery::Job job;
+ const TString jobId = request.execute_mode() == YandexQuery::SAVE ? "" : GetEntityIdAsString(Config.IdsPrefix, EEntityType::JOB);
+ if (request.execute_mode() != YandexQuery::SAVE) {
+ internal.clear_action();
+ query.clear_result_set_meta();
+ query.clear_plan();
query.clear_ast();
- query.clear_issue();
- query.clear_transient_issue();
- query.clear_statistics();
- query.mutable_meta()->clear_started_at();
- query.mutable_meta()->clear_finished_at();
- query.mutable_meta()->set_last_job_query_revision(common.revision());
- query.mutable_meta()->set_last_job_id(jobId);
- query.mutable_meta()->set_status(YandexQuery::QueryMeta::STARTING);
+ query.clear_issue();
+ query.clear_transient_issue();
+ query.clear_statistics();
+ query.mutable_meta()->clear_started_at();
+ query.mutable_meta()->clear_finished_at();
+ query.mutable_meta()->set_last_job_query_revision(common.revision());
+ query.mutable_meta()->set_last_job_id(jobId);
+ query.mutable_meta()->set_status(YandexQuery::QueryMeta::STARTING);
query.mutable_meta()->clear_expire_at();
query.mutable_meta()->clear_result_expire_at();
query.mutable_meta()->set_started_by(user);
query.mutable_meta()->clear_action();
-
- auto& jobMeta = *job.mutable_meta();
- jobMeta.set_id(jobId);
- jobMeta.set_created_by(user);
- jobMeta.set_modified_by(user);
+
+ auto& jobMeta = *job.mutable_meta();
+ jobMeta.set_id(jobId);
+ jobMeta.set_created_by(user);
+ jobMeta.set_modified_by(user);
*jobMeta.mutable_modified_at() = NProtoInterop::CastToProto(now);
*jobMeta.mutable_created_at() = NProtoInterop::CastToProto(now);
- jobMeta.set_revision(InitialRevision);
-
- job.set_text(request.content().text());
- *job.mutable_query_meta() = query.meta();
+ jobMeta.set_revision(InitialRevision);
+
+ job.set_text(request.content().text());
+ *job.mutable_query_meta() = query.meta();
job.set_query_name(query.mutable_content()->name());
*job.mutable_acl() = request.content().acl();
job.set_automatic(request.content().automatic());
- }
-
- response->second.After.ConstructInPlace().CopyFrom(query);
- response->second.CloudId = internal.cloud_id();
-
+ }
+
+ response->second.After.ConstructInPlace().CopyFrom(query);
+ response->second.CloudId = internal.cloud_id();
+
TSqlQueryBuilder writeQueryBuilder(YdbConnection->TablePathPrefix, "ModifyQuery(write)");
- writeQueryBuilder.AddString("scope", scope);
- writeQueryBuilder.AddString("query_id", queryId);
- writeQueryBuilder.AddUint64("max_count_jobs", Config.Proto.GetMaxCountJobs());
- writeQueryBuilder.AddInt64("visibility", query.content().acl().visibility());
- writeQueryBuilder.AddString("job_id", jobId);
- writeQueryBuilder.AddString("query", query.SerializeAsString());
- writeQueryBuilder.AddString("internal", internal.SerializeAsString());
- writeQueryBuilder.AddInt64("query_type", query.content().type());
- writeQueryBuilder.AddBool("automatic", query.content().automatic());
- writeQueryBuilder.AddString("name", query.content().name());
- writeQueryBuilder.AddInt64("execute_mode", request.execute_mode());
- writeQueryBuilder.AddInt64("revision", common.revision());
- writeQueryBuilder.AddInt64("status", query.meta().status());
- writeQueryBuilder.AddString("result_id", resultId);
-
- writeQueryBuilder.AddText(
- "$to_delete = (\n"
- "SELECT * FROM `" JOBS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id\n"
- "ORDER BY `" JOB_ID_COLUMN_NAME "`\n"
- "LIMIT $max_count_jobs, 1\n"
- ");\n"
- );
-
- InsertIdempotencyKey(writeQueryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), startTime + Config.IdempotencyKeyTtl);
-
- if (request.content().acl().visibility() == oldVisibility) {
- writeQueryBuilder.AddInt64("visibility", query.content().acl().visibility());
- // move jobs to scope
- writeQueryBuilder.AddText(
- "UPDATE `" JOBS_TABLE_NAME "` SET `" VISIBILITY_COLUMN_NAME "` = $visibility\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
- );
- }
-
- if (request.execute_mode() != YandexQuery::SAVE) {
- writeQueryBuilder.AddString("job", job.SerializeAsString());
- writeQueryBuilder.AddString("user", user);
- writeQueryBuilder.AddTimestamp("zero_timestamp", TInstant::Zero());
- writeQueryBuilder.AddTimestamp("now", TInstant::Now());
- // insert job
- writeQueryBuilder.AddText(
+ writeQueryBuilder.AddString("scope", scope);
+ writeQueryBuilder.AddString("query_id", queryId);
+ writeQueryBuilder.AddUint64("max_count_jobs", Config.Proto.GetMaxCountJobs());
+ writeQueryBuilder.AddInt64("visibility", query.content().acl().visibility());
+ writeQueryBuilder.AddString("job_id", jobId);
+ writeQueryBuilder.AddString("query", query.SerializeAsString());
+ writeQueryBuilder.AddString("internal", internal.SerializeAsString());
+ writeQueryBuilder.AddInt64("query_type", query.content().type());
+ writeQueryBuilder.AddBool("automatic", query.content().automatic());
+ writeQueryBuilder.AddString("name", query.content().name());
+ writeQueryBuilder.AddInt64("execute_mode", request.execute_mode());
+ writeQueryBuilder.AddInt64("revision", common.revision());
+ writeQueryBuilder.AddInt64("status", query.meta().status());
+ writeQueryBuilder.AddString("result_id", resultId);
+
+ writeQueryBuilder.AddText(
+ "$to_delete = (\n"
+ "SELECT * FROM `" JOBS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id\n"
+ "ORDER BY `" JOB_ID_COLUMN_NAME "`\n"
+ "LIMIT $max_count_jobs, 1\n"
+ ");\n"
+ );
+
+ InsertIdempotencyKey(writeQueryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), startTime + Config.IdempotencyKeyTtl);
+
+ if (request.content().acl().visibility() == oldVisibility) {
+ writeQueryBuilder.AddInt64("visibility", query.content().acl().visibility());
+ // move jobs to scope
+ writeQueryBuilder.AddText(
+ "UPDATE `" JOBS_TABLE_NAME "` SET `" VISIBILITY_COLUMN_NAME "` = $visibility\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
+ );
+ }
+
+ if (request.execute_mode() != YandexQuery::SAVE) {
+ writeQueryBuilder.AddString("job", job.SerializeAsString());
+ writeQueryBuilder.AddString("user", user);
+ writeQueryBuilder.AddTimestamp("zero_timestamp", TInstant::Zero());
+ writeQueryBuilder.AddTimestamp("now", TInstant::Now());
+ // insert job
+ writeQueryBuilder.AddText(
"UPSERT INTO `" JOBS_TABLE_NAME "` (`" SCOPE_COLUMN_NAME "`, `" QUERY_ID_COLUMN_NAME "`, `" JOB_ID_COLUMN_NAME "`, `" JOB_COLUMN_NAME "`, `" USER_COLUMN_NAME "`, `" VISIBILITY_COLUMN_NAME "`) VALUES\n"
" ($scope, $query_id, $job_id, $job, $user, $visibility);\n"
- );
-
- // insert pending small
- writeQueryBuilder.AddText(
- "INSERT INTO `" PENDING_SMALL_TABLE_NAME "`\n"
+ );
+
+ // insert pending small
+ writeQueryBuilder.AddText(
+ "INSERT INTO `" PENDING_SMALL_TABLE_NAME "`\n"
" (`" SCOPE_COLUMN_NAME "`, `" QUERY_ID_COLUMN_NAME "`, `" LAST_SEEN_AT_COLUMN_NAME "`, `" RETRY_COUNTER_COLUMN_NAME "`, \n"
" `" RETRY_COUNTER_UPDATE_COLUMN_NAME "`, `" QUERY_TYPE_COLUMN_NAME "`, `" HOST_NAME_COLUMN_NAME "`, `" OWNER_COLUMN_NAME "`)\n"
- "VALUES\n"
+ "VALUES\n"
" ($scope, $query_id, $zero_timestamp, 0, $now, $query_type, \"\", \"\");\n"
- );
- }
-
- writeQueryBuilder.AddText(
- "DELETE FROM `" JOBS_TABLE_NAME "` ON\n"
- "SELECT * FROM $to_delete;\n"
+ );
+ }
+
+ writeQueryBuilder.AddText(
+ "DELETE FROM `" JOBS_TABLE_NAME "` ON\n"
+ "SELECT * FROM $to_delete;\n"
"UPDATE `" QUERIES_TABLE_NAME "` SET \n"
" `" LAST_JOB_ID_COLUMN_NAME "` = $job_id, `" VISIBILITY_COLUMN_NAME "` = $visibility, `" AUTOMATIC_COLUMN_NAME "` = $automatic,\n"
" `" NAME_COLUMN_NAME "` = $name, `" EXECUTE_MODE_COLUMN_NAME "` = $execute_mode,\n"
@@ -933,29 +933,29 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvModifyQuery
writeQueryBuilder.AddText(
" `" QUERY_TYPE_COLUMN_NAME "` = $query_type, `" QUERY_COLUMN_NAME "` = $query,\n"
" `" RESULT_ID_COLUMN_NAME "` = $result_id, `" META_REVISION_COLUMN_NAME "` = `" META_REVISION_COLUMN_NAME "` + 1\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;"
- );
-
- const auto write = writeQueryBuilder.Build();
- return make_pair(write.Sql, write.Params);
- };
-
- TVector<TValidationQuery> validators;
- if (idempotencyKey) {
- validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
- }
-
- auto accessValidator = CreateManageAccessValidator(
- QUERIES_TABLE_NAME,
- QUERY_ID_COLUMN_NAME,
- scope,
- queryId,
- user,
- "Query does not exist or permission denied. Please check the id query or your access rights",
- permissions,
- YdbConnection->TablePathPrefix);
- validators.push_back(accessValidator);
-
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;"
+ );
+
+ const auto write = writeQueryBuilder.Build();
+ return make_pair(write.Sql, write.Params);
+ };
+
+ TVector<TValidationQuery> validators;
+ if (idempotencyKey) {
+ validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
+ }
+
+ auto accessValidator = CreateManageAccessValidator(
+ QUERIES_TABLE_NAME,
+ QUERY_ID_COLUMN_NAME,
+ scope,
+ queryId,
+ user,
+ "Query does not exist or permission denied. Please check the id query or your access rights",
+ permissions,
+ YdbConnection->TablePathPrefix);
+ validators.push_back(accessValidator);
+
auto ttlValidator = CreateTtlValidator(
QUERIES_TABLE_NAME,
QUERY_ID_COLUMN_NAME,
@@ -965,468 +965,468 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvModifyQuery
YdbConnection->TablePathPrefix);
validators.push_back(ttlValidator);
- if (previousRevision > 0) {
- auto revisionValidator = CreateRevisionValidator(
- QUERIES_TABLE_NAME,
- QUERY_ID_COLUMN_NAME,
- scope,
- queryId,
- previousRevision,
- "Revision of the query has been changed already. Please restart the request with a new revision",
- YdbConnection->TablePathPrefix);
- validators.push_back(revisionValidator);
- }
-
- const auto read = readQueryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto result = ReadModifyWrite(NActors::TActivationContext::ActorSystem(), read.Sql, read.Params, prepareParams, requestCounters, debugInfo, validators);
- auto prepare = [response] { return *response; };
- auto success = SendAuditResponse<TEvControlPlaneStorage::TEvModifyQueryResponse, YandexQuery::ModifyQueryResult, TAuditDetails<YandexQuery::Query>>(
- MakeLogPrefix(scope, user, queryId) + "ModifyQueryRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(ModifyQueryRequest, scope, user, queryId, delta, byteSize, future.GetValue());
- });
-}
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDeleteQueryRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_DELETE_QUERY];
- requestCounters->InFly->Inc();
-
- const YandexQuery::DeleteQueryRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::MANAGE_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const TString queryId = request.query_id();
- const int byteSize = request.ByteSize();
- const int64_t previousRevision = request.previous_revision();
- const TString idempotencyKey = request.idempotency_key();
-
- CPS_LOG_T(MakeLogPrefix(scope, user, queryId)
- << "DeleteQueryRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
- NYql::TIssues issues = ValidateEvent(ev);
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, queryId)
- << "DeleteQueryRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvDeleteQueryResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(DeleteQueryRequest, scope, queryId, user, delta, byteSize, false);
+ if (previousRevision > 0) {
+ auto revisionValidator = CreateRevisionValidator(
+ QUERIES_TABLE_NAME,
+ QUERY_ID_COLUMN_NAME,
+ scope,
+ queryId,
+ previousRevision,
+ "Revision of the query has been changed already. Please restart the request with a new revision",
+ YdbConnection->TablePathPrefix);
+ validators.push_back(revisionValidator);
+ }
+
+ const auto read = readQueryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto result = ReadModifyWrite(NActors::TActivationContext::ActorSystem(), read.Sql, read.Params, prepareParams, requestCounters, debugInfo, validators);
+ auto prepare = [response] { return *response; };
+ auto success = SendAuditResponse<TEvControlPlaneStorage::TEvModifyQueryResponse, YandexQuery::ModifyQueryResult, TAuditDetails<YandexQuery::Query>>(
+ MakeLogPrefix(scope, user, queryId) + "ModifyQueryRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(ModifyQueryRequest, scope, user, queryId, delta, byteSize, future.GetValue());
+ });
+}
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDeleteQueryRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_DELETE_QUERY];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::DeleteQueryRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ const TString token = ev->Get()->Token;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::MANAGE_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const TString queryId = request.query_id();
+ const int byteSize = request.ByteSize();
+ const int64_t previousRevision = request.previous_revision();
+ const TString idempotencyKey = request.idempotency_key();
+
+ CPS_LOG_T(MakeLogPrefix(scope, user, queryId)
+ << "DeleteQueryRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+ NYql::TIssues issues = ValidateEvent(ev);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user, queryId)
+ << "DeleteQueryRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvDeleteQueryResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(DeleteQueryRequest, scope, queryId, user, delta, byteSize, false);
return;
- }
- std::shared_ptr<std::pair<YandexQuery::DeleteQueryResult, TAuditDetails<YandexQuery::Query>>> response = std::make_shared<std::pair<YandexQuery::DeleteQueryResult, TAuditDetails<YandexQuery::Query>>>();
+ }
+ std::shared_ptr<std::pair<YandexQuery::DeleteQueryResult, TAuditDetails<YandexQuery::Query>>> response = std::make_shared<std::pair<YandexQuery::DeleteQueryResult, TAuditDetails<YandexQuery::Query>>>();
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "DeleteQuery");
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("query_id", queryId);
-
- InsertIdempotencyKey(queryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), TInstant::Now() + Config.IdempotencyKeyTtl);
- queryBuilder.AddText(
- "DELETE FROM `" JOBS_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("query_id", queryId);
+
+ InsertIdempotencyKey(queryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), TInstant::Now() + Config.IdempotencyKeyTtl);
+ queryBuilder.AddText(
+ "DELETE FROM `" JOBS_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
"DELETE FROM `" PENDING_SMALL_TABLE_NAME "`\n"
"WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
- "DELETE FROM `" QUERIES_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;"
- );
-
- TVector<TValidationQuery> validators;
-
- if (idempotencyKey) {
- validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
- }
-
- auto accessValidator = CreateManageAccessValidator(
- QUERIES_TABLE_NAME,
- QUERY_ID_COLUMN_NAME,
- scope,
- queryId,
- user,
- "Query does not exist or permission denied. Please check the id query or your access rights",
- permissions,
- YdbConnection->TablePathPrefix);
- validators.push_back(accessValidator);
-
- if (previousRevision > 0) {
- auto revisionValidator = CreateRevisionValidator(
- QUERIES_TABLE_NAME,
- QUERY_ID_COLUMN_NAME,
- scope,
- queryId,
- previousRevision,
- "Revision of the query has been changed already. Please restart the request with a new revision",
- YdbConnection->TablePathPrefix);
- validators.push_back(revisionValidator);
- }
-
- validators.push_back(CreateEntityExtractor(
- scope,
- queryId,
- QUERY_COLUMN_NAME,
- QUERY_ID_COLUMN_NAME,
- QUERIES_TABLE_NAME,
- response,
- YdbConnection->TablePathPrefix));
-
- const auto query = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto result = Write(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo, validators);
- auto prepare = [response] { return *response; };
- auto success = SendAuditResponse<TEvControlPlaneStorage::TEvDeleteQueryResponse, YandexQuery::DeleteQueryResult, TAuditDetails<YandexQuery::Query>>(
- MakeLogPrefix(scope, user, queryId) + "DeleteQueryRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(DeleteQueryRequest, scope, user, queryId, delta, byteSize, future.GetValue());
- });
-}
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvControlQueryRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_CONTROL_QUERY];
- requestCounters->InFly->Inc();
-
- const YandexQuery::ControlQueryRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- const TString queryId = request.query_id();
- const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::MANAGE_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const int byteSize = request.ByteSize();
- const int64_t previousRevision = request.previous_revision();
- const TString idempotencyKey = request.idempotency_key();
- const YandexQuery::QueryAction action = request.action();
- CPS_LOG_T(MakeLogPrefix(scope, user, queryId)
- << "ControlQueryRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
-
- NYql::TIssues issues = ValidateEvent(ev);
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, queryId)
- << "ControlQueryRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvControlQueryResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(ControlQueryRequest, scope, user, queryId, delta, byteSize, false);
+ "DELETE FROM `" QUERIES_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;"
+ );
+
+ TVector<TValidationQuery> validators;
+
+ if (idempotencyKey) {
+ validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
+ }
+
+ auto accessValidator = CreateManageAccessValidator(
+ QUERIES_TABLE_NAME,
+ QUERY_ID_COLUMN_NAME,
+ scope,
+ queryId,
+ user,
+ "Query does not exist or permission denied. Please check the id query or your access rights",
+ permissions,
+ YdbConnection->TablePathPrefix);
+ validators.push_back(accessValidator);
+
+ if (previousRevision > 0) {
+ auto revisionValidator = CreateRevisionValidator(
+ QUERIES_TABLE_NAME,
+ QUERY_ID_COLUMN_NAME,
+ scope,
+ queryId,
+ previousRevision,
+ "Revision of the query has been changed already. Please restart the request with a new revision",
+ YdbConnection->TablePathPrefix);
+ validators.push_back(revisionValidator);
+ }
+
+ validators.push_back(CreateEntityExtractor(
+ scope,
+ queryId,
+ QUERY_COLUMN_NAME,
+ QUERY_ID_COLUMN_NAME,
+ QUERIES_TABLE_NAME,
+ response,
+ YdbConnection->TablePathPrefix));
+
+ const auto query = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto result = Write(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo, validators);
+ auto prepare = [response] { return *response; };
+ auto success = SendAuditResponse<TEvControlPlaneStorage::TEvDeleteQueryResponse, YandexQuery::DeleteQueryResult, TAuditDetails<YandexQuery::Query>>(
+ MakeLogPrefix(scope, user, queryId) + "DeleteQueryRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(DeleteQueryRequest, scope, user, queryId, delta, byteSize, future.GetValue());
+ });
+}
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvControlQueryRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_CONTROL_QUERY];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::ControlQueryRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ const TString queryId = request.query_id();
+ const TString token = ev->Get()->Token;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::MANAGE_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const int byteSize = request.ByteSize();
+ const int64_t previousRevision = request.previous_revision();
+ const TString idempotencyKey = request.idempotency_key();
+ const YandexQuery::QueryAction action = request.action();
+ CPS_LOG_T(MakeLogPrefix(scope, user, queryId)
+ << "ControlQueryRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+
+ NYql::TIssues issues = ValidateEvent(ev);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user, queryId)
+ << "ControlQueryRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvControlQueryResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(ControlQueryRequest, scope, user, queryId, delta, byteSize, false);
return;
- }
-
- std::shared_ptr<std::pair<YandexQuery::ControlQueryResult, TAuditDetails<YandexQuery::Query>>> response = std::make_shared<std::pair<YandexQuery::ControlQueryResult, TAuditDetails<YandexQuery::Query>>>();
-
+ }
+
+ std::shared_ptr<std::pair<YandexQuery::ControlQueryResult, TAuditDetails<YandexQuery::Query>>> response = std::make_shared<std::pair<YandexQuery::ControlQueryResult, TAuditDetails<YandexQuery::Query>>>();
+
TSqlQueryBuilder readQueryBuilder(YdbConnection->TablePathPrefix, "ControlQuery(read)");
- readQueryBuilder.AddString("scope", scope);
- readQueryBuilder.AddString("query_id", queryId);
-
- readQueryBuilder.AddText(
- "$selected = SELECT `" QUERY_COLUMN_NAME "`, `" LAST_JOB_ID_COLUMN_NAME "`, `" INTERNAL_COLUMN_NAME "` FROM `" QUERIES_TABLE_NAME "`\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
- "$job_id = SELECT `" LAST_JOB_ID_COLUMN_NAME "` FROM $selected;\n"
- "SELECT * FROM $selected;"
- "SELECT `" JOB_COLUMN_NAME "` FROM `" JOBS_TABLE_NAME "`\n"
+ readQueryBuilder.AddString("scope", scope);
+ readQueryBuilder.AddString("query_id", queryId);
+
+ readQueryBuilder.AddText(
+ "$selected = SELECT `" QUERY_COLUMN_NAME "`, `" LAST_JOB_ID_COLUMN_NAME "`, `" INTERNAL_COLUMN_NAME "` FROM `" QUERIES_TABLE_NAME "`\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
+ "$job_id = SELECT `" LAST_JOB_ID_COLUMN_NAME "` FROM $selected;\n"
+ "SELECT * FROM $selected;"
+ "SELECT `" JOB_COLUMN_NAME "` FROM `" JOBS_TABLE_NAME "`\n"
"WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id AND `" JOB_ID_COLUMN_NAME "` = $job_id;\n"
- );
-
- auto prepareParams = [=, config=Config](const TVector<TResultSet>& resultSets) {
+ );
+
+ auto prepareParams = [=, config=Config](const TVector<TResultSet>& resultSets) {
if (resultSets.size() != 2) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 2 but equal " << resultSets.size() << ". Please contact internal support";
- }
-
- auto now = TInstant::Now();
- YandexQuery::Query query;
- YandexQuery::Internal::QueryInternal queryInternal;
- {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 2 but equal " << resultSets.size() << ". Please contact internal support";
+ }
+
+ auto now = TInstant::Now();
+ YandexQuery::Query query;
+ YandexQuery::Internal::QueryInternal queryInternal;
+ {
TResultSetParser parser(resultSets[0]);
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
- }
-
- if (!query.ParseFromString(*parser.ColumnParser(QUERY_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for query. Please contact internal support";
- }
-
- if (!queryInternal.ParseFromString(*parser.ColumnParser(INTERNAL_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for query internal. Please contact internal support";
- }
- }
-
- YandexQuery::Job job;
- TString jobId;
- {
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
+ }
+
+ if (!query.ParseFromString(*parser.ColumnParser(QUERY_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for query. Please contact internal support";
+ }
+
+ if (!queryInternal.ParseFromString(*parser.ColumnParser(INTERNAL_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for query internal. Please contact internal support";
+ }
+ }
+
+ YandexQuery::Job job;
+ TString jobId;
+ {
TResultSetParser parser(resultSets[1]);
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Job does not exist or permission denied. Please check the id query or your access rights";
- }
-
- if (!job.ParseFromString(parser.ColumnParser(JOB_COLUMN_NAME).GetOptionalString().GetOrElse(""))) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for job. Please contact internal support";
- }
-
- jobId = job.meta().id();
-
- const bool hasManageAccess = HasManageAccess(permissions, query.content().acl().visibility(), query.meta().common().created_by(), user);
- if (!hasManageAccess) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
- }
- }
-
- queryInternal.set_action(action);
-
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Job does not exist or permission denied. Please check the id query or your access rights";
+ }
+
+ if (!job.ParseFromString(parser.ColumnParser(JOB_COLUMN_NAME).GetOptionalString().GetOrElse(""))) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for job. Please contact internal support";
+ }
+
+ jobId = job.meta().id();
+
+ const bool hasManageAccess = HasManageAccess(permissions, query.content().acl().visibility(), query.meta().common().created_by(), user);
+ if (!hasManageAccess) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
+ }
+ }
+
+ queryInternal.set_action(action);
+
auto& metaQuery = *query.mutable_meta();
auto& commonQuery = *metaQuery.mutable_common();
commonQuery.set_revision(commonQuery.revision() + 1);
commonQuery.set_modified_by(user);
*commonQuery.mutable_modified_at() = NProtoInterop::CastToProto(now);
- if (action == YandexQuery::ABORT || action == YandexQuery::ABORT_GRACEFULLY) {
- const bool isValidStatusForAbort = IsIn({
- YandexQuery::QueryMeta::STARTING,
- YandexQuery::QueryMeta::RESUMING,
- YandexQuery::QueryMeta::RUNNING,
- YandexQuery::QueryMeta::PAUSING
+ if (action == YandexQuery::ABORT || action == YandexQuery::ABORT_GRACEFULLY) {
+ const bool isValidStatusForAbort = IsIn({
+ YandexQuery::QueryMeta::STARTING,
+ YandexQuery::QueryMeta::RESUMING,
+ YandexQuery::QueryMeta::RUNNING,
+ YandexQuery::QueryMeta::PAUSING
}, metaQuery.status());
- if (isValidStatusForAbort) {
+ if (isValidStatusForAbort) {
metaQuery.set_status(YandexQuery::QueryMeta::ABORTING_BY_USER);
metaQuery.set_aborted_by(user);
- } else {
+ } else {
ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Conversion from status " << YandexQuery::QueryMeta::ComputeStatus_Name(metaQuery.status()) << " to " << YandexQuery::QueryMeta::ComputeStatus_Name(YandexQuery::QueryMeta::ABORTING_BY_USER) << " is not possible. Please wait for the previous operation to be completed";
- }
- }
-
- if (action == YandexQuery::PAUSE || action == YandexQuery::PAUSE_GRACEFULLY) {
- const bool isValidStatusForPause = IsIn({
- YandexQuery::QueryMeta::RESUMING,
- YandexQuery::QueryMeta::RUNNING
+ }
+ }
+
+ if (action == YandexQuery::PAUSE || action == YandexQuery::PAUSE_GRACEFULLY) {
+ const bool isValidStatusForPause = IsIn({
+ YandexQuery::QueryMeta::RESUMING,
+ YandexQuery::QueryMeta::RUNNING
}, metaQuery.status());
- if (isValidStatusForPause) {
+ if (isValidStatusForPause) {
metaQuery.set_status(YandexQuery::QueryMeta::PAUSING);
metaQuery.set_paused_by(user);
- } else {
+ } else {
ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Conversion from status " << YandexQuery::QueryMeta::ComputeStatus_Name(metaQuery.status()) << " to " << YandexQuery::QueryMeta::ComputeStatus_Name(YandexQuery::QueryMeta::PAUSING) << " is not possible. Please wait for the previous operation to be completed";
- }
- }
-
- if (action == YandexQuery::RESUME) {
+ }
+ }
+
+ if (action == YandexQuery::RESUME) {
const bool isValidStatusForResume = metaQuery.status() == YandexQuery::QueryMeta::PAUSED;
- if (isValidStatusForResume) {
+ if (isValidStatusForResume) {
metaQuery.set_status(YandexQuery::QueryMeta::RESUMING);
- } else {
+ } else {
ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Conversion from status " << YandexQuery::QueryMeta::ComputeStatus_Name(metaQuery.status()) << " to " << YandexQuery::QueryMeta::ComputeStatus_Name(YandexQuery::QueryMeta::RESUMING) << " is not possible. Please wait for the previous operation to be completed";
- }
- }
-
+ }
+ }
+
job.mutable_query_meta()->CopyFrom(metaQuery);
- job.mutable_meta()->set_revision(job.meta().revision() + 1);
- job.mutable_meta()->set_modified_by(user);
+ job.mutable_meta()->set_revision(job.meta().revision() + 1);
+ job.mutable_meta()->set_modified_by(user);
*job.mutable_meta()->mutable_modified_at() = NProtoInterop::CastToProto(now);
- response->second.After.ConstructInPlace().CopyFrom(query);
- response->second.CloudId = queryInternal.cloud_id();
-
+ response->second.After.ConstructInPlace().CopyFrom(query);
+ response->second.CloudId = queryInternal.cloud_id();
+
TSqlQueryBuilder writeQueryBuilder(YdbConnection->TablePathPrefix, "ControlQuery(write)");
- writeQueryBuilder.AddString("scope", scope);
- writeQueryBuilder.AddString("job", job.SerializeAsString());
- writeQueryBuilder.AddString("job_id", jobId);
- writeQueryBuilder.AddString("query_id", queryId);
- writeQueryBuilder.AddString("query", query.SerializeAsString());
- writeQueryBuilder.AddInt64("revision", query.meta().common().revision());
- writeQueryBuilder.AddInt64("status", query.meta().status());
- writeQueryBuilder.AddString("internal", queryInternal.SerializeAsString());
-
- InsertIdempotencyKey(writeQueryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), now + Config.IdempotencyKeyTtl);
- writeQueryBuilder.AddText(
- "UPDATE `" JOBS_TABLE_NAME "` SET `" JOB_COLUMN_NAME "` = $job\n"
+ writeQueryBuilder.AddString("scope", scope);
+ writeQueryBuilder.AddString("job", job.SerializeAsString());
+ writeQueryBuilder.AddString("job_id", jobId);
+ writeQueryBuilder.AddString("query_id", queryId);
+ writeQueryBuilder.AddString("query", query.SerializeAsString());
+ writeQueryBuilder.AddInt64("revision", query.meta().common().revision());
+ writeQueryBuilder.AddInt64("status", query.meta().status());
+ writeQueryBuilder.AddString("internal", queryInternal.SerializeAsString());
+
+ InsertIdempotencyKey(writeQueryBuilder, scope, idempotencyKey, response->first.SerializeAsString(), now + Config.IdempotencyKeyTtl);
+ writeQueryBuilder.AddText(
+ "UPDATE `" JOBS_TABLE_NAME "` SET `" JOB_COLUMN_NAME "` = $job\n"
"WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id AND `" JOB_ID_COLUMN_NAME "` = $job_id;\n"
"UPDATE `" QUERIES_TABLE_NAME "` SET `" QUERY_COLUMN_NAME "` = $query, `" REVISION_COLUMN_NAME "` = $revision, `" STATUS_COLUMN_NAME "` = $status, `" INTERNAL_COLUMN_NAME "` = $internal, `" META_REVISION_COLUMN_NAME "` = `" META_REVISION_COLUMN_NAME "` + 1\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;\n"
"UPDATE `" PENDING_SMALL_TABLE_NAME "` SET `" HOST_NAME_COLUMN_NAME "` = \"\"\n"
- "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;"
- );
-
- const auto writeQuery = writeQueryBuilder.Build();
- return make_pair(writeQuery.Sql, writeQuery.Params);
- };
-
- TVector<TValidationQuery> validators;
- if (idempotencyKey) {
- validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
- }
-
- auto accessValidator = CreateManageAccessValidator(
- QUERIES_TABLE_NAME,
- QUERY_ID_COLUMN_NAME,
- scope,
- queryId,
- user,
- "Query does not exist or permission denied. Please check the id query or your access rights",
- permissions,
- YdbConnection->TablePathPrefix);
- validators.push_back(accessValidator);
-
- if (previousRevision > 0) {
- auto revisionValidator = CreateRevisionValidator(
- QUERIES_TABLE_NAME,
- QUERY_ID_COLUMN_NAME,
- scope,
- queryId,
- previousRevision,
- "Revision of the query has been changed already. Please restart the request with a new revision",
- YdbConnection->TablePathPrefix);
- validators.push_back(revisionValidator);
- }
-
- const auto readQuery = readQueryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto result = ReadModifyWrite(NActors::TActivationContext::ActorSystem(), readQuery.Sql, readQuery.Params, prepareParams, requestCounters, debugInfo, validators);
- auto prepare = [response] { return *response; };
- auto success = SendAuditResponse<TEvControlPlaneStorage::TEvControlQueryResponse, YandexQuery::ControlQueryResult, TAuditDetails<YandexQuery::Query>>(
- MakeLogPrefix(scope, user, queryId) + "ControlQueryRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(ControlQueryRequest, scope, user, queryId, delta, byteSize, future.GetValue());
- });
-}
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetResultDataRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_GET_RESULT_DATA];
- requestCounters->InFly->Inc();
-
- const YandexQuery::GetResultDataRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- const int32_t resultSetIndex = request.result_set_index();
- const int64_t offset = request.offset();
- const TString queryId = request.query_id();
- const int byteSize = ev->Get()->Request.ByteSize();
- const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::VIEW_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const int64_t limit = request.limit();
- CPS_LOG_T(MakeLogPrefix(scope, user, queryId)
- << "GetResultDataRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
-
- NYql::TIssues issues = ValidateEvent(ev);
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, queryId)
- << "GetResultDataRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvGetResultDataResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(GetResultDataRequest, scope, user, queryId, resultSetIndex, offset, limit, delta, byteSize, false);
- return;
- }
-
+ "WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id;"
+ );
+
+ const auto writeQuery = writeQueryBuilder.Build();
+ return make_pair(writeQuery.Sql, writeQuery.Params);
+ };
+
+ TVector<TValidationQuery> validators;
+ if (idempotencyKey) {
+ validators.push_back(CreateIdempotencyKeyValidator(scope, idempotencyKey, response, YdbConnection->TablePathPrefix));
+ }
+
+ auto accessValidator = CreateManageAccessValidator(
+ QUERIES_TABLE_NAME,
+ QUERY_ID_COLUMN_NAME,
+ scope,
+ queryId,
+ user,
+ "Query does not exist or permission denied. Please check the id query or your access rights",
+ permissions,
+ YdbConnection->TablePathPrefix);
+ validators.push_back(accessValidator);
+
+ if (previousRevision > 0) {
+ auto revisionValidator = CreateRevisionValidator(
+ QUERIES_TABLE_NAME,
+ QUERY_ID_COLUMN_NAME,
+ scope,
+ queryId,
+ previousRevision,
+ "Revision of the query has been changed already. Please restart the request with a new revision",
+ YdbConnection->TablePathPrefix);
+ validators.push_back(revisionValidator);
+ }
+
+ const auto readQuery = readQueryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto result = ReadModifyWrite(NActors::TActivationContext::ActorSystem(), readQuery.Sql, readQuery.Params, prepareParams, requestCounters, debugInfo, validators);
+ auto prepare = [response] { return *response; };
+ auto success = SendAuditResponse<TEvControlPlaneStorage::TEvControlQueryResponse, YandexQuery::ControlQueryResult, TAuditDetails<YandexQuery::Query>>(
+ MakeLogPrefix(scope, user, queryId) + "ControlQueryRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(ControlQueryRequest, scope, user, queryId, delta, byteSize, future.GetValue());
+ });
+}
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetResultDataRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_GET_RESULT_DATA];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::GetResultDataRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ const int32_t resultSetIndex = request.result_set_index();
+ const int64_t offset = request.offset();
+ const TString queryId = request.query_id();
+ const int byteSize = ev->Get()->Request.ByteSize();
+ const TString token = ev->Get()->Token;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::VIEW_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const int64_t limit = request.limit();
+ CPS_LOG_T(MakeLogPrefix(scope, user, queryId)
+ << "GetResultDataRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+
+ NYql::TIssues issues = ValidateEvent(ev);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user, queryId)
+ << "GetResultDataRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvGetResultDataResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(GetResultDataRequest, scope, user, queryId, resultSetIndex, offset, limit, delta, byteSize, false);
+ return;
+ }
+
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "GetResultData");
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("query_id", queryId);
- queryBuilder.AddTimestamp("now", TInstant::Now());
- queryBuilder.AddInt64("offset", offset);
- queryBuilder.AddInt32("result_set_index", resultSetIndex);
- queryBuilder.AddUint64("limit", limit);
-
- queryBuilder.AddText(
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("query_id", queryId);
+ queryBuilder.AddTimestamp("now", TInstant::Now());
+ queryBuilder.AddInt64("offset", offset);
+ queryBuilder.AddInt32("result_set_index", resultSetIndex);
+ queryBuilder.AddUint64("limit", limit);
+
+ queryBuilder.AddText(
"$query_info = SELECT `" RESULT_ID_COLUMN_NAME "`, `" RESULT_SETS_EXPIRE_AT_COLUMN_NAME "`, `" QUERY_COLUMN_NAME "`, `" USER_COLUMN_NAME "`, `" VISIBILITY_COLUMN_NAME "`, `" STATUS_COLUMN_NAME "` FROM `" QUERIES_TABLE_NAME "`\n"
"WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id AND (`" EXPIRE_AT_COLUMN_NAME "` is NULL OR `" EXPIRE_AT_COLUMN_NAME "` > $now);\n"
"SELECT `" QUERY_COLUMN_NAME "`, `" USER_COLUMN_NAME "`, `" VISIBILITY_COLUMN_NAME "`, `" STATUS_COLUMN_NAME "`, `" RESULT_SETS_EXPIRE_AT_COLUMN_NAME "` FROM $query_info;\n"
"$result_id = SELECT `" RESULT_ID_COLUMN_NAME "` FROM $query_info\n"
"WHERE `" RESULT_SETS_EXPIRE_AT_COLUMN_NAME "` >= $now;\n"
- "SELECT `" RESULT_SET_ID_COLUMN_NAME "`, `" RESULT_SET_COLUMN_NAME "`, `" ROW_ID_COLUMN_NAME "` FROM `" RESULT_SETS_TABLE_NAME "`\n"
+ "SELECT `" RESULT_SET_ID_COLUMN_NAME "`, `" RESULT_SET_COLUMN_NAME "`, `" ROW_ID_COLUMN_NAME "` FROM `" RESULT_SETS_TABLE_NAME "`\n"
"WHERE `" RESULT_ID_COLUMN_NAME "` = $result_id AND `" RESULT_SET_ID_COLUMN_NAME "` = $result_set_index AND `" ROW_ID_COLUMN_NAME "` >= $offset\n"
- "ORDER BY `" ROW_ID_COLUMN_NAME "`\n"
+ "ORDER BY `" ROW_ID_COLUMN_NAME "`\n"
"LIMIT $limit;\n"
- );
-
- const auto query = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ );
+
+ const auto query = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
auto prepare = [resultSets=resultSets, resultSetIndex, user, permissions] {
- if (resultSets->size() != 2) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 2 but equal " << resultSets->size() << ". Please contact internal support";
- }
-
- YandexQuery::GetResultDataResult result;
- auto& resultSetProto = *result.mutable_result_set();
- {
- const auto& resultSet = (*resultSets)[0];
- TResultSetParser parser(resultSet);
- if (!parser.TryNextRow()) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
- }
-
- YandexQuery::Query query;
- if (!query.ParseFromString(*parser.ColumnParser(QUERY_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for query. Please contact internal support";
- }
-
- YandexQuery::Acl::Visibility queryVisibility = static_cast<YandexQuery::Acl::Visibility>(parser.ColumnParser(VISIBILITY_COLUMN_NAME).GetOptionalInt64().GetOrElse(YandexQuery::Acl::VISIBILITY_UNSPECIFIED));
- TString queryUser = parser.ColumnParser(USER_COLUMN_NAME).GetOptionalString().GetOrElse("");
-
- bool hasViewAccess = HasViewAccess(permissions, queryVisibility, queryUser, user);
- if (!hasViewAccess) {
- ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
- }
-
- if (resultSetIndex >= query.result_set_meta_size()) {
- ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Result set index out of bound: " << resultSetIndex << " >= " << query.result_set_meta_size();
- }
-
+ if (resultSets->size() != 2) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 2 but equal " << resultSets->size() << ". Please contact internal support";
+ }
+
+ YandexQuery::GetResultDataResult result;
+ auto& resultSetProto = *result.mutable_result_set();
+ {
+ const auto& resultSet = (*resultSets)[0];
+ TResultSetParser parser(resultSet);
+ if (!parser.TryNextRow()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
+ }
+
+ YandexQuery::Query query;
+ if (!query.ParseFromString(*parser.ColumnParser(QUERY_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for query. Please contact internal support";
+ }
+
+ YandexQuery::Acl::Visibility queryVisibility = static_cast<YandexQuery::Acl::Visibility>(parser.ColumnParser(VISIBILITY_COLUMN_NAME).GetOptionalInt64().GetOrElse(YandexQuery::Acl::VISIBILITY_UNSPECIFIED));
+ TString queryUser = parser.ColumnParser(USER_COLUMN_NAME).GetOptionalString().GetOrElse("");
+
+ bool hasViewAccess = HasViewAccess(permissions, queryVisibility, queryUser, user);
+ if (!hasViewAccess) {
+ ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Query does not exist or permission denied. Please check the id query or your access rights";
+ }
+
+ if (resultSetIndex >= query.result_set_meta_size()) {
+ ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Result set index out of bound: " << resultSetIndex << " >= " << query.result_set_meta_size();
+ }
+
if (YandexQuery::QueryMeta::ComputeStatus(*parser.ColumnParser(STATUS_COLUMN_NAME).GetOptionalInt64()) != YandexQuery::QueryMeta::COMPLETED) {
ythrow TControlPlaneStorageException(TIssuesIds::BAD_REQUEST) << "Result doesn't exist";
}
@@ -1440,175 +1440,175 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetResultDa
ythrow TControlPlaneStorageException(TIssuesIds::EXPIRED) << "Result removed by TTL";
}
- resultSetProto.mutable_columns()->CopyFrom(query.result_set_meta(resultSetIndex).column());
- }
-
- {
- const auto& resultSet = (*resultSets)[1];
- TResultSetParser parser(resultSet);
- while (parser.TryNextRow()) {
- if (!resultSetProto.add_rows()->ParseFromString(*parser.ColumnParser(RESULT_SET_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for row. Please contact internal support";
- }
- }
- }
- return result;
- };
-
- auto success = SendResponse<TEvControlPlaneStorage::TEvGetResultDataResponse, YandexQuery::GetResultDataResult>(
- MakeLogPrefix(scope, user, queryId) + "GetResultDataRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(GetResultDataRequest, scope, user, queryId, resultSetIndex, offset, limit, delta, byteSize, future.GetValue());
- });
-}
-
-void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvListJobsRequest::TPtr& ev)
-{
- TInstant startTime = TInstant::Now();
- TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_JOBS_DATA];
- requestCounters->InFly->Inc();
-
- const YandexQuery::ListJobsRequest& request = ev->Get()->Request;
- const TString scope = ev->Get()->Scope;
- const TString user = ev->Get()->User;
- TString queryId = request.query_id(); // TODO: remove it
- if (request.has_filter() && request.filter().query_id()) {
- queryId = request.filter().query_id();
- }
+ resultSetProto.mutable_columns()->CopyFrom(query.result_set_meta(resultSetIndex).column());
+ }
+
+ {
+ const auto& resultSet = (*resultSets)[1];
+ TResultSetParser parser(resultSet);
+ while (parser.TryNextRow()) {
+ if (!resultSetProto.add_rows()->ParseFromString(*parser.ColumnParser(RESULT_SET_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for row. Please contact internal support";
+ }
+ }
+ }
+ return result;
+ };
+
+ auto success = SendResponse<TEvControlPlaneStorage::TEvGetResultDataResponse, YandexQuery::GetResultDataResult>(
+ MakeLogPrefix(scope, user, queryId) + "GetResultDataRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(GetResultDataRequest, scope, user, queryId, resultSetIndex, offset, limit, delta, byteSize, future.GetValue());
+ });
+}
+
+void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvListJobsRequest::TPtr& ev)
+{
+ TInstant startTime = TInstant::Now();
+ TRequestCountersPtr requestCounters = Counters.Requests[RT_LIST_JOBS_DATA];
+ requestCounters->InFly->Inc();
+
+ const YandexQuery::ListJobsRequest& request = ev->Get()->Request;
+ const TString scope = ev->Get()->Scope;
+ const TString user = ev->Get()->User;
+ TString queryId = request.query_id(); // TODO: remove it
+ if (request.has_filter() && request.filter().query_id()) {
+ queryId = request.filter().query_id();
+ }
auto splittedPageToken = SplitId(request.page_token());
const auto jobIdToken = std::move(splittedPageToken.first);
const auto queryIdToken = std::move(splittedPageToken.second);
- const int byteSize = ev->Get()->Request.ByteSize();
- const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::VIEW_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- const int64_t limit = request.limit();
- CPS_LOG_T(MakeLogPrefix(scope, user, queryId)
- << "ListJobsRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
-
- NYql::TIssues issues = ValidateEvent(ev);
- if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, queryId)
- << "ListJobsRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvListJobsResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
- LWPROBE(ListJobsRequest, scope, user, queryId, delta, byteSize, false);
+ const int byteSize = ev->Get()->Request.ByteSize();
+ const TString token = ev->Get()->Token;
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::VIEW_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ const int64_t limit = request.limit();
+ CPS_LOG_T(MakeLogPrefix(scope, user, queryId)
+ << "ListJobsRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
+
+ NYql::TIssues issues = ValidateEvent(ev);
+ if (issues) {
+ CPS_LOG_D(MakeLogPrefix(scope, user, queryId)
+ << "ListJobsRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvListJobsResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ LWPROBE(ListJobsRequest, scope, user, queryId, delta, byteSize, false);
return;
- }
-
+ }
+
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "ListJobs");
- queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("scope", scope);
queryBuilder.AddString("last_job", jobIdToken);
queryBuilder.AddString("last_query", queryIdToken);
- queryBuilder.AddTimestamp("now", TInstant::Now());
- queryBuilder.AddUint64("limit", limit + 1);
- queryBuilder.AddText(
- "SELECT `" JOB_ID_COLUMN_NAME "`, `" JOB_COLUMN_NAME "` FROM `" JOBS_TABLE_NAME "`\n"
+ queryBuilder.AddTimestamp("now", TInstant::Now());
+ queryBuilder.AddUint64("limit", limit + 1);
+ queryBuilder.AddText(
+ "SELECT `" JOB_ID_COLUMN_NAME "`, `" JOB_COLUMN_NAME "` FROM `" JOBS_TABLE_NAME "`\n"
"WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` >= $last_query\n"
"AND `" JOB_ID_COLUMN_NAME "` >= $last_job AND (`" EXPIRE_AT_COLUMN_NAME "` is NULL OR `" EXPIRE_AT_COLUMN_NAME "` > $now) "
- );
-
- TString filter;
- if (request.has_filter() || queryId) {
- TVector<TString> filters;
- if (queryId) {
- queryBuilder.AddString("query_id", queryId);
- filters.push_back("`" QUERY_ID_COLUMN_NAME "` = $query_id");
- }
-
- if (request.filter().created_by_me()) {
- queryBuilder.AddString("user", user);
- filters.push_back("`" USER_COLUMN_NAME "` = $user");
- }
-
+ );
+
+ TString filter;
+ if (request.has_filter() || queryId) {
+ TVector<TString> filters;
+ if (queryId) {
+ queryBuilder.AddString("query_id", queryId);
+ filters.push_back("`" QUERY_ID_COLUMN_NAME "` = $query_id");
+ }
+
+ if (request.filter().created_by_me()) {
+ queryBuilder.AddString("user", user);
+ filters.push_back("`" USER_COLUMN_NAME "` = $user");
+ }
+
filter = JoinSeq(" AND ", filters);
- }
-
- PrepareViewAccessCondition(queryBuilder, permissions, user);
-
- if (filter) {
- queryBuilder.AddText(" AND (" + filter + ")\n");
- }
-
- queryBuilder.AddText(
- "ORDER BY `" JOB_ID_COLUMN_NAME "`\n"
- "LIMIT $limit;"
- );
-
- const auto query = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
- auto prepare = [resultSets=resultSets, limit] {
- if (resultSets->size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
- }
-
- YandexQuery::ListJobsResult result;
- TResultSetParser parser(resultSets->front());
- while (parser.TryNextRow()) {
- YandexQuery::Job job;
- if (!job.ParseFromString(*parser.ColumnParser(JOB_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for job. Please contact internal support";
- }
+ }
+
+ PrepareViewAccessCondition(queryBuilder, permissions, user);
+
+ if (filter) {
+ queryBuilder.AddText(" AND (" + filter + ")\n");
+ }
+
+ queryBuilder.AddText(
+ "ORDER BY `" JOB_ID_COLUMN_NAME "`\n"
+ "LIMIT $limit;"
+ );
+
+ const auto query = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ auto prepare = [resultSets=resultSets, limit] {
+ if (resultSets->size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
+ }
+
+ YandexQuery::ListJobsResult result;
+ TResultSetParser parser(resultSets->front());
+ while (parser.TryNextRow()) {
+ YandexQuery::Job job;
+ if (!job.ParseFromString(*parser.ColumnParser(JOB_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for job. Please contact internal support";
+ }
const TString mergedId = job.meta().id() + "-" + job.query_meta().common().id();
job.mutable_meta()->set_id(mergedId);
job.mutable_query_meta()->set_last_job_id(mergedId);
- YandexQuery::BriefJob briefJob;
- *briefJob.mutable_meta() = job.meta();
- *briefJob.mutable_query_meta() = job.query_meta();
- briefJob.set_query_name(job.query_name());
- briefJob.set_visibility(job.acl().visibility());
- briefJob.set_automatic(job.automatic());
+ YandexQuery::BriefJob briefJob;
+ *briefJob.mutable_meta() = job.meta();
+ *briefJob.mutable_query_meta() = job.query_meta();
+ briefJob.set_query_name(job.query_name());
+ briefJob.set_visibility(job.acl().visibility());
+ briefJob.set_automatic(job.automatic());
*briefJob.mutable_expire_at() = job.expire_at();
- *result.add_job() = briefJob;
- }
-
- if (result.job_size() == limit + 1) {
+ *result.add_job() = briefJob;
+ }
+
+ if (result.job_size() == limit + 1) {
result.set_next_page_token(
result.job(result.job_size() - 1).meta().id() + "-" + result.job(result.job_size() - 1).query_meta().common().id());
- result.mutable_job()->RemoveLast();
- }
- return result;
- };
-
- auto success = SendResponse<TEvControlPlaneStorage::TEvListJobsResponse, YandexQuery::ListJobsResult>(
- MakeLogPrefix(scope, user, queryId) + "ListJobsRequest",
- NActors::TActivationContext::ActorSystem(),
- result,
- SelfId(),
- ev,
- startTime,
- requestCounters,
- prepare,
- debugInfo);
-
- success.Apply([=](const auto& future) {
- TDuration delta = TInstant::Now() - startTime;
- LWPROBE(ListJobsRequest, scope, user, queryId, delta, byteSize, future.GetValue());
- });
-}
-
+ result.mutable_job()->RemoveLast();
+ }
+ return result;
+ };
+
+ auto success = SendResponse<TEvControlPlaneStorage::TEvListJobsResponse, YandexQuery::ListJobsResult>(
+ MakeLogPrefix(scope, user, queryId) + "ListJobsRequest",
+ NActors::TActivationContext::ActorSystem(),
+ result,
+ SelfId(),
+ ev,
+ startTime,
+ requestCounters,
+ prepare,
+ debugInfo);
+
+ success.Apply([=](const auto& future) {
+ TDuration delta = TInstant::Now() - startTime;
+ LWPROBE(ListJobsRequest, scope, user, queryId, delta, byteSize, future.GetValue());
+ });
+}
+
void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDescribeJobRequest::TPtr& ev)
{
TInstant startTime = TInstant::Now();
@@ -1625,63 +1625,63 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDescribeJob
const int byteSize = ev->Get()->Request.ByteSize();
const TString token = ev->Get()->Token;
- TPermissions permissions = Config.Proto.GetEnablePermissions()
- ? ev->Get()->Permissions
- : TPermissions{TPermissions::VIEW_PUBLIC};
- if (IsSuperUser(user)) {
- permissions.SetAll();
- }
- CPS_LOG_T(MakeLogPrefix(scope, user, jobId)
- << "DescribeJobRequest: "
- << NKikimr::MaskTicket(token) << " "
- << request.DebugString());
+ TPermissions permissions = Config.Proto.GetEnablePermissions()
+ ? ev->Get()->Permissions
+ : TPermissions{TPermissions::VIEW_PUBLIC};
+ if (IsSuperUser(user)) {
+ permissions.SetAll();
+ }
+ CPS_LOG_T(MakeLogPrefix(scope, user, jobId)
+ << "DescribeJobRequest: "
+ << NKikimr::MaskTicket(token) << " "
+ << request.DebugString());
NYql::TIssues issues = ValidateEvent(ev);
if (issues) {
- CPS_LOG_D(MakeLogPrefix(scope, user, jobId)
- << "DescribeJobRequest, validation failed: "
- << NKikimr::MaskTicket(token) << " " << request.DebugString()
- << " error: " << issues.ToString());
- const TDuration delta = TInstant::Now() - startTime;
- SendResponseIssues<TEvControlPlaneStorage::TEvDescribeJobResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
+ CPS_LOG_D(MakeLogPrefix(scope, user, jobId)
+ << "DescribeJobRequest, validation failed: "
+ << NKikimr::MaskTicket(token) << " " << request.DebugString()
+ << " error: " << issues.ToString());
+ const TDuration delta = TInstant::Now() - startTime;
+ SendResponseIssues<TEvControlPlaneStorage::TEvDescribeJobResponse>(ev->Sender, issues, ev->Cookie, delta, requestCounters);
LWPROBE(DescribeJobRequest, scope, user, jobId, delta, byteSize, false);
return;
}
TSqlQueryBuilder queryBuilder(YdbConnection->TablePathPrefix, "DescribeJob");
- queryBuilder.AddString("scope", scope);
- queryBuilder.AddString("job_id", jobId);
+ queryBuilder.AddString("scope", scope);
+ queryBuilder.AddString("job_id", jobId);
queryBuilder.AddString("query_id", queryId);
- queryBuilder.AddTimestamp("now", TInstant::Now());
+ queryBuilder.AddTimestamp("now", TInstant::Now());
- queryBuilder.AddText(
- "SELECT `" JOB_COLUMN_NAME "`, `" VISIBILITY_COLUMN_NAME "` FROM `" JOBS_TABLE_NAME "`\n"
+ queryBuilder.AddText(
+ "SELECT `" JOB_COLUMN_NAME "`, `" VISIBILITY_COLUMN_NAME "` FROM `" JOBS_TABLE_NAME "`\n"
"WHERE `" SCOPE_COLUMN_NAME "` = $scope AND `" QUERY_ID_COLUMN_NAME "` = $query_id\n"
" AND `" JOB_ID_COLUMN_NAME "` = $job_id AND (`" EXPIRE_AT_COLUMN_NAME "` is NULL OR `" EXPIRE_AT_COLUMN_NAME "` > $now);\n"
- );
+ );
- const auto query = queryBuilder.Build();
- auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ const auto query = queryBuilder.Build();
+ auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
+ auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
auto prepare = [=, id=request.job_id(), resultSets=resultSets] {
- if (resultSets->size() != 1) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
+ if (resultSets->size() != 1) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
}
-
- YandexQuery::DescribeJobResult result;
- TResultSetParser parser(resultSets->front());
- if (!parser.TryNextRow()) {
+
+ YandexQuery::DescribeJobResult result;
+ TResultSetParser parser(resultSets->front());
+ if (!parser.TryNextRow()) {
ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Job does not exist or permission denied. Please check the job id or your access rights";
}
- if (!result.mutable_job()->ParseFromString(*parser.ColumnParser(JOB_COLUMN_NAME).GetOptionalString())) {
- ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for job. Please contact internal support";
+ if (!result.mutable_job()->ParseFromString(*parser.ColumnParser(JOB_COLUMN_NAME).GetOptionalString())) {
+ ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Error parsing proto message for job. Please contact internal support";
}
- auto visibility = static_cast<YandexQuery::Acl::Visibility>(*parser.ColumnParser(VISIBILITY_COLUMN_NAME).GetOptionalInt64());
+ auto visibility = static_cast<YandexQuery::Acl::Visibility>(*parser.ColumnParser(VISIBILITY_COLUMN_NAME).GetOptionalInt64());
result.mutable_job()->mutable_meta()->set_id(id);
- bool hasViewAccces = HasViewAccess(permissions, visibility, result.job().meta().created_by(), user);
- if (!hasViewAccces) {
+ bool hasViewAccces = HasViewAccess(permissions, visibility, result.job().meta().created_by(), user);
+ if (!hasViewAccces) {
ythrow TControlPlaneStorageException(TIssuesIds::ACCESS_DENIED) << "Job does not exist or permission denied. Please check the job id or your access rights";
}
return result;
@@ -1695,8 +1695,8 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDescribeJob
ev,
startTime,
requestCounters,
- prepare,
- debugInfo);
+ prepare,
+ debugInfo);
success.Apply([=](const auto& future) {
TDuration delta = TInstant::Now() - startTime;
diff --git a/ydb/core/yq/libs/db_schema/db_schema.cpp b/ydb/core/yq/libs/db_schema/db_schema.cpp
index fdda16df40..b57d71cfc9 100644
--- a/ydb/core/yq/libs/db_schema/db_schema.cpp
+++ b/ydb/core/yq/libs/db_schema/db_schema.cpp
@@ -27,23 +27,23 @@ TSqlQueryBuilder& TSqlQueryBuilder::PopPk() {
TSqlQueryBuilder& TSqlQueryBuilder::AddPk(const TString& name, const TValue& value)
{
Pk.push_back(name);
- return AddValue(name, value, "==");
-}
-
-TSqlQueryBuilder& TSqlQueryBuilder::AddValue(const TString& name, const NYdb::TValue& value)
-{
- const auto typeStr = value.GetType().ToString();
- auto it = Parameters.find(name);
- if (it == Parameters.end()) {
- Parameters.emplace(name, typeStr);
- ParametersOrdered.emplace_back(name, typeStr);
- ParamsBuilder.AddParam("$" + name, value);
- } else if (it->second != typeStr) {
- ythrow yexception() << "Parameter `" << name << "' type " << typeStr << " != " << it->second;
- }
- return *this;
+ return AddValue(name, value, "==");
}
+TSqlQueryBuilder& TSqlQueryBuilder::AddValue(const TString& name, const NYdb::TValue& value)
+{
+ const auto typeStr = value.GetType().ToString();
+ auto it = Parameters.find(name);
+ if (it == Parameters.end()) {
+ Parameters.emplace(name, typeStr);
+ ParametersOrdered.emplace_back(name, typeStr);
+ ParamsBuilder.AddParam("$" + name, value);
+ } else if (it->second != typeStr) {
+ ythrow yexception() << "Parameter `" << name << "' type " << typeStr << " != " << it->second;
+ }
+ return *this;
+}
+
TSqlQueryBuilder& TSqlQueryBuilder::AddValue(const TString& name, const TValue& value, const TString& pred)
{
TStringBuilder var; var << name;
@@ -73,7 +73,7 @@ TSqlQueryBuilder& TSqlQueryBuilder::AddColNames(TVector<TString>&& colNames)
TSqlQueryBuilder& TSqlQueryBuilder::MaybeAddValue(const TString& name, const TMaybe<TValue>& value) {
if (value) {
- return AddValue(name, *value, "==");
+ return AddValue(name, *value, "==");
} else {
return *this;
}
@@ -82,7 +82,7 @@ TSqlQueryBuilder& TSqlQueryBuilder::MaybeAddValue(const TString& name, const TMa
TSqlQueryBuilder& TSqlQueryBuilder::AddText(const TString& sql, const TString& tableName)
{
if (tableName) {
- Text << SubstGlobalCopy(sql, TString("{TABLENAME}"), tableName);
+ Text << SubstGlobalCopy(sql, TString("{TABLENAME}"), tableName);
} else {
Text << sql;
}
@@ -91,7 +91,7 @@ TSqlQueryBuilder& TSqlQueryBuilder::AddText(const TString& sql, const TString& t
TSqlQueryBuilder& TSqlQueryBuilder::AddBeforeQuery(const TString& sql, const TString& tableName ) {
if (tableName) {
- BeforeQuery << SubstGlobalCopy(sql, TString("{TABLENAME}"), tableName);
+ BeforeQuery << SubstGlobalCopy(sql, TString("{TABLENAME}"), tableName);
} else {
BeforeQuery << sql;
}
@@ -174,7 +174,7 @@ TSqlQueryBuilder& TSqlQueryBuilder::End()
TStringBuilder text;
if (Op == "DELETE") {
- text << "$todelete" << Counter << " = (SELECT * FROM `" << Table << "`\n";
+ text << "$todelete" << Counter << " = (SELECT * FROM `" << Table << "`\n";
if (Pk.empty() && Fields.empty() && !Limit) {
ythrow yexception() << "dangerous sql query";
}
@@ -189,7 +189,7 @@ TSqlQueryBuilder& TSqlQueryBuilder::End()
text.clear();
- text << "DELETE FROM `" << Table << "`\n";
+ text << "DELETE FROM `" << Table << "`\n";
text << "ON (SELECT * from $todelete" << Counter << ");\n";
} else if (Op == "SELECT") {
text << Op << ' ';
@@ -201,7 +201,7 @@ TSqlQueryBuilder& TSqlQueryBuilder::End()
text << ", ";
}
}
- text << "\nFROM `" << Table << "`\n";
+ text << "\nFROM `" << Table << "`\n";
ConstructWhereFilter(text);
if (Limit > 0) {
text << " LIMIT " << Limit;
@@ -220,11 +220,11 @@ TSqlQueryBuilder& TSqlQueryBuilder::End()
text << "\n FROM $todelete" << (Counter-1) << ";\n";
} else if (Op == "SELECT COUNT(*)") {
text << Op ;
- text << "\nFROM `" << Table << "`\n";
+ text << "\nFROM `" << Table << "`\n";
ConstructWhereFilter(text);
text << ";\n";
} else if (Op == "UPDATE") {
- text << Op << " `" << Table << "`\n";
+ text << Op << " `" << Table << "`\n";
if (Pk.empty() && Fields.empty()) {
ythrow yexception() << "dangerous sql query";
}
@@ -249,7 +249,7 @@ TSqlQueryBuilder& TSqlQueryBuilder::End()
BeforeQuery << text;
text.clear();
} else {
- text << Op << " INTO `" << Table << "`\n";
+ text << Op << " INTO `" << Table << "`\n";
text << "(\n" << " ";
for (const auto& pk : Pk) {
text << "`" << pk << "`" << ",";
@@ -291,7 +291,7 @@ TSqlQueryBuilder::TResult TSqlQueryBuilder::Build()
TStringBuilder declr;
declr << "--!syntax_v1\n";
declr << "-- Query name: " << QueryName << "\n";
- declr << "PRAGMA TablePathPrefix(\"" << TablePrefix << "\");\n";
+ declr << "PRAGMA TablePathPrefix(\"" << TablePrefix << "\");\n";
for (const auto& [k, v] : ParametersOrdered) {
declr << "DECLARE $" << k << " as " << v << ";\n";
}
diff --git a/ydb/core/yq/libs/db_schema/db_schema.h b/ydb/core/yq/libs/db_schema/db_schema.h
index c14a7d21c0..ddede9ab52 100644
--- a/ydb/core/yq/libs/db_schema/db_schema.h
+++ b/ydb/core/yq/libs/db_schema/db_schema.h
@@ -21,51 +21,51 @@ public:
return AddPk(name, NYdb::TValueBuilder().String(value).Build());
}
- TSqlQueryBuilder& AddValue(const TString& name, const NYdb::TValue& value);
-
- TSqlQueryBuilder& AddString(const TString& name, const TString& value) {
- return AddValue(name, NYdb::TValueBuilder().String(value).Build());
- }
-
- TSqlQueryBuilder& AddUint32(const TString& name, ui32 value) {
- return AddValue(name, NYdb::TValueBuilder().Uint32(value).Build());
- }
-
- TSqlQueryBuilder& AddInt32(const TString& name, i32 value) {
- return AddValue(name, NYdb::TValueBuilder().Int32(value).Build());
- }
-
- TSqlQueryBuilder& AddUint64(const TString& name, ui64 value) {
- return AddValue(name, NYdb::TValueBuilder().Uint64(value).Build());
- }
-
- TSqlQueryBuilder& AddInt64(const TString& name, i64 value) {
- return AddValue(name, NYdb::TValueBuilder().Int64(value).Build());
- }
-
- TSqlQueryBuilder& AddTimestamp(const TString& name, TInstant value) {
- return AddValue(name, NYdb::TValueBuilder().Timestamp(value).Build());
- }
-
- TSqlQueryBuilder& AddBool(const TString& name, bool value) {
- return AddValue(name, NYdb::TValueBuilder().Bool(value).Build());
- }
-
- TSqlQueryBuilder& AddValue(const TString& name, const NYdb::TValue& value, const TString& pred);
-
- TSqlQueryBuilder& AddValue(const TString& name, const TString& value, const TString& pred) {
+ TSqlQueryBuilder& AddValue(const TString& name, const NYdb::TValue& value);
+
+ TSqlQueryBuilder& AddString(const TString& name, const TString& value) {
+ return AddValue(name, NYdb::TValueBuilder().String(value).Build());
+ }
+
+ TSqlQueryBuilder& AddUint32(const TString& name, ui32 value) {
+ return AddValue(name, NYdb::TValueBuilder().Uint32(value).Build());
+ }
+
+ TSqlQueryBuilder& AddInt32(const TString& name, i32 value) {
+ return AddValue(name, NYdb::TValueBuilder().Int32(value).Build());
+ }
+
+ TSqlQueryBuilder& AddUint64(const TString& name, ui64 value) {
+ return AddValue(name, NYdb::TValueBuilder().Uint64(value).Build());
+ }
+
+ TSqlQueryBuilder& AddInt64(const TString& name, i64 value) {
+ return AddValue(name, NYdb::TValueBuilder().Int64(value).Build());
+ }
+
+ TSqlQueryBuilder& AddTimestamp(const TString& name, TInstant value) {
+ return AddValue(name, NYdb::TValueBuilder().Timestamp(value).Build());
+ }
+
+ TSqlQueryBuilder& AddBool(const TString& name, bool value) {
+ return AddValue(name, NYdb::TValueBuilder().Bool(value).Build());
+ }
+
+ TSqlQueryBuilder& AddValue(const TString& name, const NYdb::TValue& value, const TString& pred);
+
+ TSqlQueryBuilder& AddValue(const TString& name, const TString& value, const TString& pred) {
return AddValue(name, NYdb::TValueBuilder().String(value).Build(), pred);
}
- TSqlQueryBuilder& AddValue(const TString& name, ui32 value, const TString& pred) {
+ TSqlQueryBuilder& AddValue(const TString& name, ui32 value, const TString& pred) {
return AddValue(name, NYdb::TValueBuilder().Uint32(value).Build(), pred);
}
- TSqlQueryBuilder& AddValue(const TString& name, ui64 value, const TString& pred) {
+ TSqlQueryBuilder& AddValue(const TString& name, ui64 value, const TString& pred) {
return AddValue(name, NYdb::TValueBuilder().Uint64(value).Build(), pred);
}
- TSqlQueryBuilder& AddValue(const TString& name, TInstant value, const TString& pred) {
+ TSqlQueryBuilder& AddValue(const TString& name, TInstant value, const TString& pred) {
return AddValue(name, NYdb::TValueBuilder().Timestamp(value).Build(), pred);
}
diff --git a/ydb/core/yq/libs/events/event_subspace.h b/ydb/core/yq/libs/events/event_subspace.h
index 99814caaae..2bce74a2b5 100644
--- a/ydb/core/yq/libs/events/event_subspace.h
+++ b/ydb/core/yq/libs/events/event_subspace.h
@@ -22,10 +22,10 @@ struct TYqEventSubspace {
CheckpointStorage,
MetastorageProxy,
ConfigUpdater,
- ControlPlaneStorage,
- ControlPlaneProxy,
+ ControlPlaneStorage,
+ ControlPlaneProxy,
AuditService,
- TestConnection,
+ TestConnection,
SubspacesEnd,
};
diff --git a/ydb/core/yq/libs/events/events.h b/ydb/core/yq/libs/events/events.h
index b3c70e5c5f..cf21da6930 100644
--- a/ydb/core/yq/libs/events/events.h
+++ b/ydb/core/yq/libs/events/events.h
@@ -110,22 +110,22 @@ struct TEvents {
};
struct TEvDbFunctionRequest : NActors::TEventLocal<TEvDbFunctionRequest, TEventIds::EvDbFunctionRequest> {
- using TFunction = std::function<NYdb::TAsyncStatus(NYdb::NTable::TSession&)>;
- TFunction Handler;
-
+ using TFunction = std::function<NYdb::TAsyncStatus(NYdb::NTable::TSession&)>;
+ TFunction Handler;
+
explicit TEvDbFunctionRequest(const TFunction& handler)
- : Handler(handler)
- {}
- };
-
+ : Handler(handler)
+ {}
+ };
+
struct TEvDbFunctionResponse : NActors::TEventLocal<TEvDbFunctionResponse, TEventIds::EvDbFunctionResponse> {
- NYdb::TStatus Status;
-
+ NYdb::TStatus Status;
+
explicit TEvDbFunctionResponse(NYdb::TStatus status)
- : Status(status)
- {}
- };
-
+ : Status(status)
+ {}
+ };
+
struct TEvEndpointResponse : NActors::TEventLocal<TEvEndpointResponse, TEventIds::EvEndpointResponse> {
struct TEndpoint {
TString Endpoint;
@@ -182,7 +182,7 @@ struct TEvents {
NYql::TIssues Issues;
};
-
+
struct TEvDataStreamsReadRulesDeletionResult : NActors::TEventLocal<TEvDataStreamsReadRulesDeletionResult, TEventIds::EvDataStreamsReadRulesDeletionResult> {
explicit TEvDataStreamsReadRulesDeletionResult(NYql::TIssues transientIssues)
: TransientIssues(std::move(transientIssues))
@@ -194,12 +194,12 @@ struct TEvents {
struct TEvQueryActionResult : NActors::TEventLocal<TEvQueryActionResult, TEventIds::EvQueryActionResult> {
explicit TEvQueryActionResult(YandexQuery::QueryAction action)
- : Action(action)
- {
- }
-
- YandexQuery::QueryAction Action;
- };
+ : Action(action)
+ {
+ }
+
+ YandexQuery::QueryAction Action;
+ };
struct TEvForwardPingRequest : NActors::TEventLocal<TEvForwardPingRequest, TEventIds::EvForwardPingRequest> {
explicit TEvForwardPingRequest(const Yq::Private::PingTaskRequest& request, bool final = false)
diff --git a/ydb/core/yq/libs/init/init.cpp b/ydb/core/yq/libs/init/init.cpp
index d66ac202bf..b52e32caef 100644
--- a/ydb/core/yq/libs/init/init.cpp
+++ b/ydb/core/yq/libs/init/init.cpp
@@ -1,7 +1,7 @@
#include "init.h"
#include <ydb/core/yq/libs/control_plane_storage/control_plane_storage.h>
-#include <ydb/core/yq/libs/test_connection/test_connection.h>
+#include <ydb/core/yq/libs/test_connection/test_connection.h>
#include <ydb/core/yq/libs/audit/yq_audit_service.h>
#include <ydb/core/yq/libs/common/service_counters.h>
@@ -9,10 +9,10 @@
#include <ydb/core/yq/libs/shared_resources/shared_resources.h>
#include <ydb/core/yq/libs/checkpoint_storage/storage_service.h>
#include <ydb/library/folder_service/folder_service.h>
-
+
#include <library/cpp/actors/http/http_proxy.h>
#include <library/cpp/protobuf/json/json2proto.h>
-#include <library/cpp/protobuf/json/proto2json.h>
+#include <library/cpp/protobuf/json/proto2json.h>
#include <ydb/library/yql/dq/actors/compute/dq_checkpoints.h>
#include <ydb/library/yql/dq/actors/compute/dq_compute_actor_io_actors_factory.h>
@@ -33,7 +33,7 @@
#include <ydb/library/yql/providers/ydb/comp_nodes/yql_ydb_factory.h>
#include <ydb/library/yql/providers/ydb/comp_nodes/yql_ydb_dq_transform.h>
#include <ydb/library/yql/providers/ydb/actors/yql_ydb_source_factory.h>
-
+
#include <util/stream/file.h>
#include <util/system/hostname.h>
@@ -96,7 +96,7 @@ namespace NYq {
using namespace NKikimr;
void Init(
- const NYq::NConfig::TConfig& protoConfig,
+ const NYq::NConfig::TConfig& protoConfig,
ui32 nodeId,
const TActorRegistrator& actorRegistrator,
const TAppData* appData,
@@ -104,7 +104,7 @@ void Init(
::NPq::NConfigurationManager::IConnections::TPtr pqCmConnections,
const IYqSharedResources::TPtr& iyqSharedResources,
const std::function<IActor*(const NKikimrProto::NFolderService::TFolderServiceConfig& authConfig)>& folderServiceFactory,
- const std::function<IActor*(const NYq::NConfig::TAuditConfig& auditConfig)>& auditServiceFactory,
+ const std::function<IActor*(const NYq::NConfig::TAuditConfig& auditConfig)>& auditServiceFactory,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory,
const ui32& icPort
)
@@ -112,58 +112,58 @@ void Init(
Y_VERIFY(iyqSharedResources, "No YQ shared resources created");
TYqSharedResources::TPtr yqSharedResources = TYqSharedResources::Cast(iyqSharedResources);
const auto clientCounters = appData->Counters->GetSubgroup("counters", "yq")->GetSubgroup("subsystem", "ClientMetrics");
-
- if (protoConfig.GetControlPlaneStorage().GetEnabled()) {
- auto controlPlaneStorage = protoConfig.GetControlPlaneStorage().GetUseInMemory()
- ? NYq::CreateInMemoryControlPlaneStorageServiceActor(protoConfig.GetControlPlaneStorage())
- : NYq::CreateYdbControlPlaneStorageServiceActor(
- protoConfig.GetControlPlaneStorage(),
- protoConfig.GetCommon(),
- appData->Counters->GetSubgroup("counters", "yq")->GetSubgroup("subsystem", "ControlPlaneStorage"),
- yqSharedResources,
- credentialsProviderFactory);
- actorRegistrator(NYq::ControlPlaneStorageServiceActorId(), controlPlaneStorage);
- }
-
- if (protoConfig.GetTestConnection().GetEnabled()) {
- auto testConnection = NYq::CreateTestConnectionActor(
- protoConfig.GetTestConnection(),
- appData->Counters->GetSubgroup("counters", "yq")->GetSubgroup("subsystem", "TestConnection"));
- actorRegistrator(NYq::TestConnectionActorId(), testConnection);
- }
-
- if (protoConfig.GetControlPlaneProxy().GetEnabled()) {
- auto controlPlaneProxy = NYq::CreateControlPlaneProxyActor(protoConfig.GetControlPlaneProxy(),
- appData->Counters->GetSubgroup("counters", "yq")->GetSubgroup("subsystem", "ControlPlaneProxy"));
- actorRegistrator(NYq::ControlPlaneProxyActorId(), controlPlaneProxy);
- }
-
- if (protoConfig.GetAudit().GetEnabled()) {
- auto* auditSerive = auditServiceFactory(protoConfig.GetAudit());
- actorRegistrator(NYq::YqAuditServiceActorId(), auditSerive);
- }
-
- // if not enabled then stub
- {
+
+ if (protoConfig.GetControlPlaneStorage().GetEnabled()) {
+ auto controlPlaneStorage = protoConfig.GetControlPlaneStorage().GetUseInMemory()
+ ? NYq::CreateInMemoryControlPlaneStorageServiceActor(protoConfig.GetControlPlaneStorage())
+ : NYq::CreateYdbControlPlaneStorageServiceActor(
+ protoConfig.GetControlPlaneStorage(),
+ protoConfig.GetCommon(),
+ appData->Counters->GetSubgroup("counters", "yq")->GetSubgroup("subsystem", "ControlPlaneStorage"),
+ yqSharedResources,
+ credentialsProviderFactory);
+ actorRegistrator(NYq::ControlPlaneStorageServiceActorId(), controlPlaneStorage);
+ }
+
+ if (protoConfig.GetTestConnection().GetEnabled()) {
+ auto testConnection = NYq::CreateTestConnectionActor(
+ protoConfig.GetTestConnection(),
+ appData->Counters->GetSubgroup("counters", "yq")->GetSubgroup("subsystem", "TestConnection"));
+ actorRegistrator(NYq::TestConnectionActorId(), testConnection);
+ }
+
+ if (protoConfig.GetControlPlaneProxy().GetEnabled()) {
+ auto controlPlaneProxy = NYq::CreateControlPlaneProxyActor(protoConfig.GetControlPlaneProxy(),
+ appData->Counters->GetSubgroup("counters", "yq")->GetSubgroup("subsystem", "ControlPlaneProxy"));
+ actorRegistrator(NYq::ControlPlaneProxyActorId(), controlPlaneProxy);
+ }
+
+ if (protoConfig.GetAudit().GetEnabled()) {
+ auto* auditSerive = auditServiceFactory(protoConfig.GetAudit());
+ actorRegistrator(NYq::YqAuditServiceActorId(), auditSerive);
+ }
+
+ // if not enabled then stub
+ {
auto folderService = folderServiceFactory(protoConfig.GetFolderService());
actorRegistrator(NKikimr::NFolderService::FolderServiceActorId(), folderService);
- }
-
- if (protoConfig.GetCheckpointCoordinator().GetEnabled()) {
+ }
+
+ if (protoConfig.GetCheckpointCoordinator().GetEnabled()) {
auto checkpointStorage = NYq::NewCheckpointStorageService(protoConfig.GetCheckpointCoordinator(), protoConfig.GetCommon(), credentialsProviderFactory);
- actorRegistrator(NYql::NDq::MakeCheckpointStorageID(), checkpointStorage.release());
- }
-
+ actorRegistrator(NYql::NDq::MakeCheckpointStorageID(), checkpointStorage.release());
+ }
+
auto yqCounters = appData->Counters->GetSubgroup("counters", "yq");
auto workerManagerCounters = NYql::NDqs::TWorkerManagerCounters(yqCounters->GetSubgroup("subsystem", "worker_manager"));
-
- NKikimr::NMiniKQL::TComputationNodeFactory dqCompFactory = NKikimr::NMiniKQL::GetCompositeWithBuiltinFactory({
+
+ NKikimr::NMiniKQL::TComputationNodeFactory dqCompFactory = NKikimr::NMiniKQL::GetCompositeWithBuiltinFactory({
NYql::GetCommonDqFactory(),
NYql::GetDqYdbFactory(yqSharedResources->YdbDriver),
NKikimr::NMiniKQL::GetYqlFactory()
});
- NYql::TTaskTransformFactory dqTaskTransformFactory = NYql::CreateCompositeTaskTransformFactory({
+ NYql::TTaskTransformFactory dqTaskTransformFactory = NYql::CreateCompositeTaskTransformFactory({
NYql::CreateCommonDqTaskTransformFactory(),
NYql::CreateYdbDqTaskTransformFactory()
});
@@ -171,35 +171,35 @@ void Init(
auto sourceActorFactory = MakeIntrusive<NYql::NDq::TDqSourceFactory>();
auto sinkActorFactory = MakeIntrusive<NYql::NDq::TDqSinkFactory>();
- NYql::ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory;
+ NYql::ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory;
const auto httpGateway = NYql::IHTTPGateway::Make(
&protoConfig.GetGateways().GetHttpGateway(),
yqCounters->GetSubgroup("subcomponent", "http_gateway"));
- if (protoConfig.GetTokenAccessor().GetEnabled()) {
- credentialsFactory = NYql::CreateSecuredServiceAccountCredentialsOverTokenAccessorFactory(protoConfig.GetTokenAccessor().GetEndpoint(), protoConfig.GetTokenAccessor().GetUseSsl());
- RegisterDqPqReadActorFactory(*sourceActorFactory, yqSharedResources->YdbDriver, credentialsFactory);
- RegisterYdbReadActorFactory(*sourceActorFactory, yqSharedResources->YdbDriver, credentialsFactory);
+ if (protoConfig.GetTokenAccessor().GetEnabled()) {
+ credentialsFactory = NYql::CreateSecuredServiceAccountCredentialsOverTokenAccessorFactory(protoConfig.GetTokenAccessor().GetEndpoint(), protoConfig.GetTokenAccessor().GetUseSsl());
+ RegisterDqPqReadActorFactory(*sourceActorFactory, yqSharedResources->YdbDriver, credentialsFactory);
+ RegisterYdbReadActorFactory(*sourceActorFactory, yqSharedResources->YdbDriver, credentialsFactory);
RegisterS3ReadActorFactory(*sourceActorFactory, credentialsFactory,
httpGateway, std::make_shared<NYql::NS3::TRetryConfig>(protoConfig.GetReadActorsFactoryConfig().GetS3ReadActorFactoryConfig().GetRetryConfig()));
RegisterClickHouseReadActorFactory(*sourceActorFactory, credentialsFactory, httpGateway);
-
- RegisterDqPqWriteActorFactory(*sinkActorFactory, yqSharedResources->YdbDriver, credentialsFactory);
- RegisterDQSolomonWriteActorFactory(*sinkActorFactory, credentialsFactory);
+
+ RegisterDqPqWriteActorFactory(*sinkActorFactory, yqSharedResources->YdbDriver, credentialsFactory);
+ RegisterDQSolomonWriteActorFactory(*sinkActorFactory, credentialsFactory);
}
ui64 mkqlInitialMemoryLimit = 8_GB;
- if (protoConfig.GetResourceManager().GetEnabled()) {
+ if (protoConfig.GetResourceManager().GetEnabled()) {
mkqlInitialMemoryLimit = protoConfig.GetResourceManager().GetMkqlInitialMemoryLimit();
- if (!mkqlInitialMemoryLimit) {
- mkqlInitialMemoryLimit = 8_GB;
- }
- ui64 mkqlTotalMemoryLimit = protoConfig.GetResourceManager().GetMkqlTotalMemoryLimit();
- ui64 mkqlAllocSize = protoConfig.GetResourceManager().GetMkqlAllocSize();
- if (!mkqlAllocSize) {
- mkqlAllocSize = 30_MB;
- }
+ if (!mkqlInitialMemoryLimit) {
+ mkqlInitialMemoryLimit = 8_GB;
+ }
+ ui64 mkqlTotalMemoryLimit = protoConfig.GetResourceManager().GetMkqlTotalMemoryLimit();
+ ui64 mkqlAllocSize = protoConfig.GetResourceManager().GetMkqlAllocSize();
+ if (!mkqlAllocSize) {
+ mkqlAllocSize = 30_MB;
+ }
NYql::NDqs::TLocalWorkerManagerOptions lwmOptions;
lwmOptions.Counters = workerManagerCounters;
lwmOptions.Factory = NYql::NTaskRunnerProxy::CreateFactory(appData->FunctionRegistry, dqCompFactory, dqTaskTransformFactory, false);
@@ -211,67 +211,67 @@ void Init(
lwmOptions.MkqlMinAllocSize = mkqlAllocSize;
auto resman = NYql::NDqs::CreateLocalWorkerManager(lwmOptions);
- actorRegistrator(NYql::NDqs::MakeWorkerManagerActorID(nodeId), resman);
- }
+ actorRegistrator(NYql::NDqs::MakeWorkerManagerActorID(nodeId), resman);
+ }
::NYq::NCommon::TServiceCounters serviceCounters(appData->Counters);
- if (protoConfig.GetNodesManager().GetEnabled()) {
+ if (protoConfig.GetNodesManager().GetEnabled()) {
const auto localAddr = GetLocalAddress(&HostName());
- auto nodesManager = CreateYqlNodesManager(
- workerManagerCounters,
- TAppData::TimeProvider,
- TAppData::RandomProvider,
- serviceCounters,
- protoConfig.GetPrivateApi(),
- yqSharedResources,
+ auto nodesManager = CreateYqlNodesManager(
+ workerManagerCounters,
+ TAppData::TimeProvider,
+ TAppData::RandomProvider,
+ serviceCounters,
+ protoConfig.GetPrivateApi(),
+ yqSharedResources,
icPort,
std::get<1>(localAddr),
tenant,
mkqlInitialMemoryLimit,
clientCounters);
- actorRegistrator(MakeYqlNodesManagerId(), nodesManager);
- }
+ actorRegistrator(MakeYqlNodesManagerId(), nodesManager);
+ }
auto httpProxy = NHttp::CreateHttpProxy(*NMonitoring::TMetricRegistry::Instance());
actorRegistrator(MakeYqlAnalyticsHttpProxyId(), httpProxy);
- if (protoConfig.GetPendingFetcher().GetEnabled()) {
- auto fetcher = CreatePendingFetcher(
- yqSharedResources,
- protoConfig.GetCommon(),
- protoConfig.GetCheckpointCoordinator(),
- protoConfig.GetPrivateApi(),
- protoConfig.GetGateways(),
- protoConfig.GetPinger(),
- appData->FunctionRegistry,
- TAppData::TimeProvider,
- TAppData::RandomProvider,
- dqCompFactory,
- serviceCounters,
- credentialsFactory,
+ if (protoConfig.GetPendingFetcher().GetEnabled()) {
+ auto fetcher = CreatePendingFetcher(
+ yqSharedResources,
+ protoConfig.GetCommon(),
+ protoConfig.GetCheckpointCoordinator(),
+ protoConfig.GetPrivateApi(),
+ protoConfig.GetGateways(),
+ protoConfig.GetPinger(),
+ appData->FunctionRegistry,
+ TAppData::TimeProvider,
+ TAppData::RandomProvider,
+ dqCompFactory,
+ serviceCounters,
+ credentialsFactory,
httpGateway,
std::move(pqCmConnections),
clientCounters
- );
+ );
- actorRegistrator(MakeYqlAnalyticsFetcherId(nodeId), fetcher);
- }
+ actorRegistrator(MakeYqlAnalyticsFetcherId(nodeId), fetcher);
+ }
- if (protoConfig.GetPrivateProxy().GetEnabled()) {
- auto proxyPrivate = CreateYqlAnalyticsPrivateProxy(
- TAppData::TimeProvider,
- TAppData::RandomProvider,
- serviceCounters.Counters,
- protoConfig.GetTokenAccessor());
+ if (protoConfig.GetPrivateProxy().GetEnabled()) {
+ auto proxyPrivate = CreateYqlAnalyticsPrivateProxy(
+ TAppData::TimeProvider,
+ TAppData::RandomProvider,
+ serviceCounters.Counters,
+ protoConfig.GetTokenAccessor());
actorRegistrator(MakeYqPrivateProxyId(), proxyPrivate);
- }
+ }
}
IYqSharedResources::TPtr CreateYqSharedResources(
- const NYq::NConfig::TConfig& config,
+ const NYq::NConfig::TConfig& config,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory,
const NMonitoring::TDynamicCounterPtr& counters)
{
diff --git a/ydb/core/yq/libs/init/init.h b/ydb/core/yq/libs/init/init.h
index fa26651f18..b7fb07e3f2 100644
--- a/ydb/core/yq/libs/init/init.h
+++ b/ydb/core/yq/libs/init/init.h
@@ -22,22 +22,22 @@ namespace NYq {
using TActorRegistrator = std::function<void(NActors::TActorId, NActors::IActor*)>;
IYqSharedResources::TPtr CreateYqSharedResources(
- const NYq::NConfig::TConfig& config,
+ const NYq::NConfig::TConfig& config,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory,
const NMonitoring::TDynamicCounterPtr& counters);
void Init(
- const NYq::NConfig::TConfig& config,
+ const NYq::NConfig::TConfig& config,
ui32 nodeId,
const TActorRegistrator& actorRegistrator,
const NKikimr::TAppData* appData,
- const TString& tenant,
+ const TString& tenant,
::NPq::NConfigurationManager::IConnections::TPtr pqCmConnections,
const IYqSharedResources::TPtr& yqSharedResources,
const std::function<IActor*(const NKikimrProto::NFolderService::TFolderServiceConfig& authConfig)>& folderServiceFactory,
- const std::function<IActor*(const NYq::NConfig::TAuditConfig& auditConfig)>& auditServiceFactory,
+ const std::function<IActor*(const NYq::NConfig::TAuditConfig& auditConfig)>& auditServiceFactory,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory,
const ui32& icPort
);
-
+
} // NYq
diff --git a/ydb/core/yq/libs/init/ya.make b/ydb/core/yq/libs/init/ya.make
index 129103b024..1802147390 100644
--- a/ydb/core/yq/libs/init/ya.make
+++ b/ydb/core/yq/libs/init/ya.make
@@ -20,7 +20,7 @@ PEERDIR(
ydb/core/yq/libs/events
ydb/core/yq/libs/gateway
ydb/core/yq/libs/shared_resources
- ydb/core/yq/libs/test_connection
+ ydb/core/yq/libs/test_connection
ydb/library/folder_service
ydb/library/folder_service/proto
ydb/library/yql/minikql/comp_nodes
diff --git a/ydb/core/yq/libs/private_client/private_client.cpp b/ydb/core/yq/libs/private_client/private_client.cpp
index bccb8ddd1d..37aa7aad4e 100644
--- a/ydb/core/yq/libs/private_client/private_client.cpp
+++ b/ydb/core/yq/libs/private_client/private_client.cpp
@@ -158,25 +158,25 @@ TPrivateClient::TPrivateClient(
TAsyncPingTaskResult TPrivateClient::PingTask(
Yq::Private::PingTaskRequest&& request,
const TPingTaskSettings& settings) {
- return Impl->PingTask(std::move(request), settings);
+ return Impl->PingTask(std::move(request), settings);
}
TAsyncGetTaskResult TPrivateClient::GetTask(
Yq::Private::GetTaskRequest&& request,
const TGetTaskSettings& settings) {
- return Impl->GetTask(std::move(request), settings);
+ return Impl->GetTask(std::move(request), settings);
}
TAsyncWriteTaskResult TPrivateClient::WriteTaskResult(
Yq::Private::WriteTaskResultRequest&& request,
const TWriteTaskResultSettings& settings) {
- return Impl->WriteTaskResult(std::move(request), settings);
+ return Impl->WriteTaskResult(std::move(request), settings);
}
TAsyncNodesHealthCheckResult TPrivateClient::NodesHealthCheck(
Yq::Private::NodesHealthCheckRequest&& request,
const TNodesHealthCheckSettings& settings) {
- return Impl->NodesHealthCheck(std::move(request), settings);
+ return Impl->NodesHealthCheck(std::move(request), settings);
}
} //NYq
diff --git a/ydb/core/yq/libs/private_client/private_client.h b/ydb/core/yq/libs/private_client/private_client.h
index e63b67eddb..6c32450747 100644
--- a/ydb/core/yq/libs/private_client/private_client.h
+++ b/ydb/core/yq/libs/private_client/private_client.h
@@ -75,7 +75,7 @@ public:
const TNodesHealthCheckSettings& settings = TNodesHealthCheckSettings());
private:
- std::shared_ptr<TImpl> Impl;
+ std::shared_ptr<TImpl> Impl;
};
} // namespace NYq
diff --git a/ydb/core/yq/libs/shared_resources/db_pool.cpp b/ydb/core/yq/libs/shared_resources/db_pool.cpp
index 372dfd72cd..3113538d69 100644
--- a/ydb/core/yq/libs/shared_resources/db_pool.cpp
+++ b/ydb/core/yq/libs/shared_resources/db_pool.cpp
@@ -6,9 +6,9 @@
#include <library/cpp/actors/core/hfunc.h>
#include <library/cpp/actors/core/actor_bootstrapped.h>
-#include <util/stream/file.h>
-#include <util/string/strip.h>
-
+#include <util/stream/file.h>
+#include <util/string/strip.h>
+
#define LOG_E(stream) \
LOG_ERROR_S(*TlsActivationContext, NKikimrServices::YQL_PROXY, stream)
@@ -35,8 +35,8 @@ public:
CFunc(NActors::TEvents::TEvPoison::EventType, Die)
HFunc(TEvents::TEvDbRequest, HandleRequest)
HFunc(TEvents::TEvDbResponse, HandleResponse)
- HFunc(TEvents::TEvDbFunctionRequest, HandleRequest)
- HFunc(TEvents::TEvDbFunctionResponse, HandleResponse)
+ HFunc(TEvents::TEvDbFunctionRequest, HandleRequest)
+ HFunc(TEvents::TEvDbFunctionResponse, HandleResponse)
)
void Die(const TActorContext& ctx) override {
@@ -44,11 +44,11 @@ public:
issues.AddIssue("DB connection closed");
auto cancelled = NYdb::TStatus(NYdb::EStatus::CANCELLED, std::move(issues));
for (const auto& x : Requests) {
- if (auto pRequest = std::get_if<TRequest>(&x)) {
- ctx.Send(pRequest->Sender, new TEvents::TEvDbResponse(cancelled, {}));
- } else if (auto pRequest = std::get_if<TFunctionRequest>(&x)) {
- ctx.Send(pRequest->Sender, new TEvents::TEvDbFunctionResponse(cancelled));
- }
+ if (auto pRequest = std::get_if<TRequest>(&x)) {
+ ctx.Send(pRequest->Sender, new TEvents::TEvDbResponse(cancelled, {}));
+ } else if (auto pRequest = std::get_if<TFunctionRequest>(&x)) {
+ ctx.Send(pRequest->Sender, new TEvents::TEvDbFunctionResponse(cancelled));
+ }
}
State.reset();
@@ -64,49 +64,49 @@ public:
RequestInProgress = true;
RequestInProgressTimestamp = TInstant::Now();
- const auto& requestVariant = Requests.front();
-
- if (auto pRequest = std::get_if<TRequest>(&requestVariant)) {
- auto& request = *pRequest;
- auto actorSystem = ctx.ActorSystem();
- auto selfId = ctx.SelfID;
- auto cookie = request.Cookie;
- auto sharedResult = std::make_shared<TVector<NYdb::TResultSet>>();
- NYdb::NTable::TRetryOperationSettings settings;
- settings.Idempotent(request.Idempotent);
- TableClient.RetryOperation<NYdb::NTable::TDataQueryResult>([sharedResult, request](NYdb::NTable::TSession session) {
- return session.ExecuteDataQuery(request.Sql, NYdb::NTable::TTxControl::BeginTx(
- NYdb::NTable::TTxSettings::SerializableRW()).CommitTx(),
- request.Params, NYdb::NTable::TExecDataQuerySettings().KeepInQueryCache(true))
- .Apply([sharedResult](const auto& future) mutable {
- *sharedResult = future.GetValue().GetResultSets();
- return future;
- });
- }, settings)
- .Subscribe([state = std::weak_ptr<int>(State), sharedResult, actorSystem, cookie, selfId](const NThreading::TFuture<NYdb::TStatus>& statusFuture) {
- if (state.lock()) {
- actorSystem->Send(new IEventHandle(selfId, selfId, new TEvents::TEvDbResponse(statusFuture.GetValue(), *sharedResult), 0, cookie));
- }
- });
- } else if (auto pRequest = std::get_if<TFunctionRequest>(&requestVariant)) {
- auto& request = *pRequest;
- auto selfId = ctx.SelfID;
- auto cookie = request.Cookie;
- auto actorSystem = ctx.ActorSystem();
- TableClient.RetryOperation([request](NYdb::NTable::TSession session) {
- return request.Handler(session);
- })
- .Subscribe([state = std::weak_ptr<int>(State), actorSystem, selfId, cookie](const NThreading::TFuture<NYdb::TStatus>& statusFuture) {
- if (state.lock()) {
- actorSystem->Send(new IEventHandle(selfId, selfId, new TEvents::TEvDbFunctionResponse(statusFuture.GetValue()), 0, cookie));
- }
- });
- }
+ const auto& requestVariant = Requests.front();
+
+ if (auto pRequest = std::get_if<TRequest>(&requestVariant)) {
+ auto& request = *pRequest;
+ auto actorSystem = ctx.ActorSystem();
+ auto selfId = ctx.SelfID;
+ auto cookie = request.Cookie;
+ auto sharedResult = std::make_shared<TVector<NYdb::TResultSet>>();
+ NYdb::NTable::TRetryOperationSettings settings;
+ settings.Idempotent(request.Idempotent);
+ TableClient.RetryOperation<NYdb::NTable::TDataQueryResult>([sharedResult, request](NYdb::NTable::TSession session) {
+ return session.ExecuteDataQuery(request.Sql, NYdb::NTable::TTxControl::BeginTx(
+ NYdb::NTable::TTxSettings::SerializableRW()).CommitTx(),
+ request.Params, NYdb::NTable::TExecDataQuerySettings().KeepInQueryCache(true))
+ .Apply([sharedResult](const auto& future) mutable {
+ *sharedResult = future.GetValue().GetResultSets();
+ return future;
+ });
+ }, settings)
+ .Subscribe([state = std::weak_ptr<int>(State), sharedResult, actorSystem, cookie, selfId](const NThreading::TFuture<NYdb::TStatus>& statusFuture) {
+ if (state.lock()) {
+ actorSystem->Send(new IEventHandle(selfId, selfId, new TEvents::TEvDbResponse(statusFuture.GetValue(), *sharedResult), 0, cookie));
+ }
+ });
+ } else if (auto pRequest = std::get_if<TFunctionRequest>(&requestVariant)) {
+ auto& request = *pRequest;
+ auto selfId = ctx.SelfID;
+ auto cookie = request.Cookie;
+ auto actorSystem = ctx.ActorSystem();
+ TableClient.RetryOperation([request](NYdb::NTable::TSession session) {
+ return request.Handler(session);
+ })
+ .Subscribe([state = std::weak_ptr<int>(State), actorSystem, selfId, cookie](const NThreading::TFuture<NYdb::TStatus>& statusFuture) {
+ if (state.lock()) {
+ actorSystem->Send(new IEventHandle(selfId, selfId, new TEvents::TEvDbFunctionResponse(statusFuture.GetValue()), 0, cookie));
+ }
+ });
+ }
}
void HandleRequest(TEvents::TEvDbRequest::TPtr& ev, const TActorContext& ctx) {
auto request = ev->Get();
- Requests.emplace_back(TRequest{ev->Sender, ev->Cookie, request->Sql, std::move(request->Params), request->Idempotent});
+ Requests.emplace_back(TRequest{ev->Sender, ev->Cookie, request->Sql, std::move(request->Params), request->Idempotent});
ProcessQueue(ctx);
}
@@ -124,18 +124,18 @@ public:
PopFromQueueAndProcess(ctx);
}
- void HandleRequest(TEvents::TEvDbFunctionRequest::TPtr& ev, const TActorContext& ctx) {
- auto request = ev->Get();
- Requests.emplace_back(TFunctionRequest{ev->Sender, ev->Cookie, std::move(request->Handler)});
- ProcessQueue(ctx);
- }
-
- void HandleResponse(TEvents::TEvDbFunctionResponse::TPtr& ev, const TActorContext& ctx) {
- const auto& request = Requests.front();
- ctx.Send(ev->Forward(std::visit([](const auto& arg) { return arg.Sender; }, request)));
+ void HandleRequest(TEvents::TEvDbFunctionRequest::TPtr& ev, const TActorContext& ctx) {
+ auto request = ev->Get();
+ Requests.emplace_back(TFunctionRequest{ev->Sender, ev->Cookie, std::move(request->Handler)});
+ ProcessQueue(ctx);
+ }
+
+ void HandleResponse(TEvents::TEvDbFunctionResponse::TPtr& ev, const TActorContext& ctx) {
+ const auto& request = Requests.front();
+ ctx.Send(ev->Forward(std::visit([](const auto& arg) { return arg.Sender; }, request)));
PopFromQueueAndProcess(ctx);
- }
-
+ }
+
private:
struct TRequest {
TActorId Sender;
@@ -154,22 +154,22 @@ private:
{}
};
- struct TFunctionRequest {
- using TFunction = std::function<NYdb::TAsyncStatus(NYdb::NTable::TSession&)>;
- TActorId Sender;
- ui64 Cookie;
- TFunction Handler;
-
- TFunctionRequest() = default;
- TFunctionRequest(const TActorId sender, ui64 cookie, TFunction&& handler)
- : Sender(sender)
- , Cookie(cookie)
- , Handler(handler)
- {}
- };
-
+ struct TFunctionRequest {
+ using TFunction = std::function<NYdb::TAsyncStatus(NYdb::NTable::TSession&)>;
+ TActorId Sender;
+ ui64 Cookie;
+ TFunction Handler;
+
+ TFunctionRequest() = default;
+ TFunctionRequest(const TActorId sender, ui64 cookie, TFunction&& handler)
+ : Sender(sender)
+ , Cookie(cookie)
+ , Handler(handler)
+ {}
+ };
+
NYdb::NTable::TTableClient TableClient;
- TDeque<std::variant<TRequest, TFunctionRequest>> Requests;
+ TDeque<std::variant<TRequest, TFunctionRequest>> Requests;
bool RequestInProgress = false;
TInstant RequestInProgressTimestamp = TInstant::Now();
std::shared_ptr<int> State = std::make_shared<int>();
@@ -211,18 +211,18 @@ TActorId TDbPool::GetNextActor() {
return Actors[Index++];
}
-static void PrepareConfig(NYq::NConfig::TDbPoolConfig& config) {
- if (!config.GetStorage().GetToken() && config.GetStorage().GetOAuthFile()) {
- config.MutableStorage()->SetToken(StripString(TFileInput(config.GetStorage().GetOAuthFile()).ReadAll()));
- }
-
- if (!config.GetMaxSessionCount()) {
- config.SetMaxSessionCount(10);
- }
-}
-
+static void PrepareConfig(NYq::NConfig::TDbPoolConfig& config) {
+ if (!config.GetStorage().GetToken() && config.GetStorage().GetOAuthFile()) {
+ config.MutableStorage()->SetToken(StripString(TFileInput(config.GetStorage().GetOAuthFile()).ReadAll()));
+ }
+
+ if (!config.GetMaxSessionCount()) {
+ config.SetMaxSessionCount(10);
+ }
+}
+
TDbPoolMap::TDbPoolMap(
- const NYq::NConfig::TDbPoolConfig& config,
+ const NYq::NConfig::TDbPoolConfig& config,
NYdb::TDriver driver,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory,
const NMonitoring::TDynamicCounterPtr& counters)
@@ -230,12 +230,12 @@ TDbPoolMap::TDbPoolMap(
, Driver(driver)
, CredentialsProviderFactory(credentialsProviderFactory)
, Counters(counters)
-{
- PrepareConfig(Config);
-}
+{
+ PrepareConfig(Config);
+}
TDbPoolHolder::TDbPoolHolder(
- const NYq::NConfig::TDbPoolConfig& config,
+ const NYq::NConfig::TDbPoolConfig& config,
const NYdb::TDriver& driver,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory,
const NMonitoring::TDynamicCounterPtr& counters)
@@ -248,7 +248,7 @@ TDbPoolHolder::~TDbPoolHolder()
Driver.Stop(true);
}
-void TDbPoolHolder::Reset(const NYq::NConfig::TDbPoolConfig& config) {
+void TDbPoolHolder::Reset(const NYq::NConfig::TDbPoolConfig& config) {
Pools->Reset(config);
}
@@ -256,10 +256,10 @@ TDbPoolMap::TPtr TDbPoolHolder::Get() {
return Pools;
}
-void TDbPoolMap::Reset(const NYq::NConfig::TDbPoolConfig& config) {
+void TDbPoolMap::Reset(const NYq::NConfig::TDbPoolConfig& config) {
TGuard<TMutex> lock(Mutex);
Config = config;
- PrepareConfig(Config);
+ PrepareConfig(Config);
Pools.clear();
TableClient = nullptr;
}
@@ -275,24 +275,24 @@ TDbPool::TPtr TDbPoolMap::GetOrCreate(EDbPoolId dbPoolId, ui32 sessionsCount) {
return it->second;
}
- if (!Config.GetStorage().GetEndpoint()) {
+ if (!Config.GetStorage().GetEndpoint()) {
return nullptr;
}
if (!TableClient) {
auto clientSettings = NYdb::NTable::TClientSettings()
.UseQueryCache(false)
- .SessionPoolSettings(NYdb::NTable::TSessionPoolSettings().MaxActiveSessions(1 + Config.GetMaxSessionCount()))
- .Database(Config.GetStorage().GetDatabase())
- .DiscoveryEndpoint(Config.GetStorage().GetEndpoint())
+ .SessionPoolSettings(NYdb::NTable::TSessionPoolSettings().MaxActiveSessions(1 + Config.GetMaxSessionCount()))
+ .Database(Config.GetStorage().GetDatabase())
+ .DiscoveryEndpoint(Config.GetStorage().GetEndpoint())
.DiscoveryMode(NYdb::EDiscoveryMode::Async);
NKikimr::TYdbCredentialsSettings credSettings;
- credSettings.UseLocalMetadata = Config.GetStorage().GetUseLocalMetadataService();
- credSettings.OAuthToken = Config.GetStorage().GetToken();
+ credSettings.UseLocalMetadata = Config.GetStorage().GetUseLocalMetadataService();
+ credSettings.OAuthToken = Config.GetStorage().GetToken();
clientSettings.CredentialsProviderFactory(CredentialsProviderFactory(credSettings));
- clientSettings.EnableSsl(Config.GetStorage().GetUseSsl());
+ clientSettings.EnableSsl(Config.GetStorage().GetUseSsl());
TableClient = MakeHolder<NYdb::NTable::TTableClient>(Driver, clientSettings);
}
diff --git a/ydb/core/yq/libs/shared_resources/db_pool.h b/ydb/core/yq/libs/shared_resources/db_pool.h
index 68d9adc2fc..e9e9f69683 100644
--- a/ydb/core/yq/libs/shared_resources/db_pool.h
+++ b/ydb/core/yq/libs/shared_resources/db_pool.h
@@ -1,5 +1,5 @@
#pragma once
-
+
#include <ydb/core/yq/libs/config/protos/yq_config.pb.h>
#include <ydb/public/sdk/cpp/client/ydb_table/table.h>
#include <ydb/core/yq/libs/events/events.h>
@@ -46,14 +46,14 @@ public:
private:
friend class TDbPoolHolder;
- TDbPoolMap(const NYq::NConfig::TDbPoolConfig& config,
- NYdb::TDriver driver,
+ TDbPoolMap(const NYq::NConfig::TDbPoolConfig& config,
+ NYdb::TDriver driver,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory,
const NMonitoring::TDynamicCounterPtr& counters);
- void Reset(const NYq::NConfig::TDbPoolConfig& config);
+ void Reset(const NYq::NConfig::TDbPoolConfig& config);
TMutex Mutex;
- NYq::NConfig::TDbPoolConfig Config;
+ NYq::NConfig::TDbPoolConfig Config;
NYdb::TDriver Driver;
THashMap<EDbPoolId, TDbPool::TPtr> Pools;
THolder<NYdb::NTable::TTableClient> TableClient;
@@ -65,14 +65,14 @@ class TDbPoolHolder: public TThrRefBase {
public:
using TPtr = TIntrusivePtr<TDbPoolHolder>;
TDbPoolHolder(
- const NYq::NConfig::TDbPoolConfig& config,
+ const NYq::NConfig::TDbPoolConfig& config,
const NYdb::TDriver& driver,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory,
const NMonitoring::TDynamicCounterPtr& counters);
~TDbPoolHolder();
- void Reset(const NYq::NConfig::TDbPoolConfig& config);
+ void Reset(const NYq::NConfig::TDbPoolConfig& config);
TDbPool::TPtr GetOrCreate(EDbPoolId poolId, ui32 sessionsCount);
NYdb::TDriver& GetDriver();
TDbPoolMap::TPtr Get();
diff --git a/ydb/core/yq/libs/shared_resources/shared_resources.cpp b/ydb/core/yq/libs/shared_resources/shared_resources.cpp
index 3dfd566232..a5296d4a4d 100644
--- a/ydb/core/yq/libs/shared_resources/shared_resources.cpp
+++ b/ydb/core/yq/libs/shared_resources/shared_resources.cpp
@@ -85,10 +85,10 @@ struct TActorSystemPtrMixin {
struct TYqSharedResourcesImpl : public TActorSystemPtrMixin, public TYqSharedResources {
explicit TYqSharedResourcesImpl(
- const NYq::NConfig::TConfig& config,
+ const NYq::NConfig::TConfig& config,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory,
const NMonitoring::TDynamicCounterPtr& counters)
- : TYqSharedResources(NYdb::TDriver(GetYdbDriverConfig(config.GetCommon().GetYdbDriverConfig())))
+ : TYqSharedResources(NYdb::TDriver(GetYdbDriverConfig(config.GetCommon().GetYdbDriverConfig())))
{
CreateDbPoolHolder(config.GetDbPool(), credentialsProviderFactory, counters);
}
@@ -102,16 +102,16 @@ struct TYqSharedResourcesImpl : public TActorSystemPtrMixin, public TYqSharedRes
YdbDriver.Stop(true);
}
- NYdb::TDriverConfig GetYdbDriverConfig(const NYq::NConfig::TYdbDriverConfig& config) {
+ NYdb::TDriverConfig GetYdbDriverConfig(const NYq::NConfig::TYdbDriverConfig& config) {
NYdb::TDriverConfig cfg;
- if (config.GetNetworkThreadsNum()) {
- cfg.SetNetworkThreadsNum(config.GetNetworkThreadsNum());
+ if (config.GetNetworkThreadsNum()) {
+ cfg.SetNetworkThreadsNum(config.GetNetworkThreadsNum());
}
- if (config.GetClientThreadsNum()) {
- cfg.SetClientThreadsNum(config.GetClientThreadsNum());
+ if (config.GetClientThreadsNum()) {
+ cfg.SetClientThreadsNum(config.GetClientThreadsNum());
}
- if (config.GetGrpcMemoryQuota()) {
- cfg.SetGrpcMemoryQuota(config.GetGrpcMemoryQuota());
+ if (config.GetGrpcMemoryQuota()) {
+ cfg.SetGrpcMemoryQuota(config.GetGrpcMemoryQuota());
}
cfg.SetDiscoveryMode(NYdb::EDiscoveryMode::Async); // We are in actor system!
cfg.SetLog(MakeHolder<TDeferredActorSystemPtrInitActorLogBackend>(ActorSystemPtr, NKikimrServices::EServiceKikimr::YDB_SDK));
@@ -119,7 +119,7 @@ struct TYqSharedResourcesImpl : public TActorSystemPtrMixin, public TYqSharedRes
}
void CreateDbPoolHolder(
- const NYq::NConfig::TDbPoolConfig& config,
+ const NYq::NConfig::TDbPoolConfig& config,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory,
const NMonitoring::TDynamicCounterPtr& counters) {
DbPoolHolder = MakeIntrusive<NYq::TDbPoolHolder>(config, YdbDriver, credentialsProviderFactory, counters);
@@ -129,7 +129,7 @@ struct TYqSharedResourcesImpl : public TActorSystemPtrMixin, public TYqSharedRes
} // namespace
TYqSharedResources::TPtr CreateYqSharedResourcesImpl(
- const NYq::NConfig::TConfig& config,
+ const NYq::NConfig::TConfig& config,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory,
const NMonitoring::TDynamicCounterPtr& counters) {
return MakeIntrusive<TYqSharedResourcesImpl>(config, credentialsProviderFactory, counters);
diff --git a/ydb/core/yq/libs/shared_resources/shared_resources.h b/ydb/core/yq/libs/shared_resources/shared_resources.h
index bfd1ec6695..aafa57fa86 100644
--- a/ydb/core/yq/libs/shared_resources/shared_resources.h
+++ b/ydb/core/yq/libs/shared_resources/shared_resources.h
@@ -24,7 +24,7 @@ protected:
};
TYqSharedResources::TPtr CreateYqSharedResourcesImpl(
- const NYq::NConfig::TConfig& config,
+ const NYq::NConfig::TConfig& config,
const NKikimr::TYdbCredentialsProviderFactory& credentialsProviderFactory,
const NMonitoring::TDynamicCounterPtr& counters);
diff --git a/ydb/core/yq/libs/test_connection/events/events.cpp b/ydb/core/yq/libs/test_connection/events/events.cpp
index 6c3d2603e7..a4930159cf 100644
--- a/ydb/core/yq/libs/test_connection/events/events.cpp
+++ b/ydb/core/yq/libs/test_connection/events/events.cpp
@@ -1 +1 @@
-#include "events.h"
+#include "events.h"
diff --git a/ydb/core/yq/libs/test_connection/events/events.h b/ydb/core/yq/libs/test_connection/events/events.h
index 50af463d5b..73f265cede 100644
--- a/ydb/core/yq/libs/test_connection/events/events.h
+++ b/ydb/core/yq/libs/test_connection/events/events.h
@@ -1,63 +1,63 @@
-#pragma once
-
+#pragma once
+
#include <ydb/public/api/protos/yq.pb.h>
#include <ydb/core/yq/libs/events/event_subspace.h>
-
-#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
-
-#include <library/cpp/actors/core/event_pb.h>
-#include <library/cpp/actors/core/events.h>
-#include <library/cpp/actors/interconnect/events_local.h>
-
+
+#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
+
+#include <library/cpp/actors/core/event_pb.h>
+#include <library/cpp/actors/core/events.h>
+#include <library/cpp/actors/interconnect/events_local.h>
+
#include <ydb/library/yql/public/issue/yql_issue.h>
-
-namespace NYq {
-
-struct TEvTestConnection {
- // Event ids.
- enum EEv : ui32 {
+
+namespace NYq {
+
+struct TEvTestConnection {
+ // Event ids.
+ enum EEv : ui32 {
EvTestConnectionRequest = YqEventSubspaceBegin(NYq::TYqEventSubspace::TestConnection),
- EvTestConnectionResponse,
- EvEnd,
- };
-
+ EvTestConnectionResponse,
+ EvEnd,
+ };
+
static_assert(EvEnd <= YqEventSubspaceEnd(NYq::TYqEventSubspace::TestConnection), "All events must be in their subspace");
-
- struct TEvTestConnectionRequest : NActors::TEventLocal<TEvTestConnectionRequest, EvTestConnectionRequest> {
- explicit TEvTestConnectionRequest(const TString& scope,
- const YandexQuery::TestConnectionRequest& request,
- const TString& user,
- const TString& token,
- const TPermissions& permissions)
- : Scope(scope)
- , Request(request)
- , User(user)
- , Token(token)
- , Permissions(permissions)
- {
- }
-
- TString Scope;
- YandexQuery::TestConnectionRequest Request;
- TString User;
- TString Token;
- TPermissions Permissions;
- };
-
- struct TEvTestConnectionResponse : NActors::TEventLocal<TEvTestConnectionResponse, EvTestConnectionResponse> {
- explicit TEvTestConnectionResponse(const YandexQuery::TestConnectionResult& result)
- : Result(result)
- {
- }
-
- explicit TEvTestConnectionResponse(const NYql::TIssues& issues)
- : Issues(issues)
- {
- }
-
- YandexQuery::TestConnectionResult Result;
- NYql::TIssues Issues;
- };
-};
-
-}
+
+ struct TEvTestConnectionRequest : NActors::TEventLocal<TEvTestConnectionRequest, EvTestConnectionRequest> {
+ explicit TEvTestConnectionRequest(const TString& scope,
+ const YandexQuery::TestConnectionRequest& request,
+ const TString& user,
+ const TString& token,
+ const TPermissions& permissions)
+ : Scope(scope)
+ , Request(request)
+ , User(user)
+ , Token(token)
+ , Permissions(permissions)
+ {
+ }
+
+ TString Scope;
+ YandexQuery::TestConnectionRequest Request;
+ TString User;
+ TString Token;
+ TPermissions Permissions;
+ };
+
+ struct TEvTestConnectionResponse : NActors::TEventLocal<TEvTestConnectionResponse, EvTestConnectionResponse> {
+ explicit TEvTestConnectionResponse(const YandexQuery::TestConnectionResult& result)
+ : Result(result)
+ {
+ }
+
+ explicit TEvTestConnectionResponse(const NYql::TIssues& issues)
+ : Issues(issues)
+ {
+ }
+
+ YandexQuery::TestConnectionResult Result;
+ NYql::TIssues Issues;
+ };
+};
+
+}
diff --git a/ydb/core/yq/libs/test_connection/events/ya.make b/ydb/core/yq/libs/test_connection/events/ya.make
index e447cded58..c15a6fc7d2 100644
--- a/ydb/core/yq/libs/test_connection/events/ya.make
+++ b/ydb/core/yq/libs/test_connection/events/ya.make
@@ -1,16 +1,16 @@
-OWNER(g:yq)
-
-LIBRARY()
-
-SRCS(
- events.cpp
-)
-
-PEERDIR(
- ydb/core/yq/libs/control_plane_storage/events
+OWNER(g:yq)
+
+LIBRARY()
+
+SRCS(
+ events.cpp
+)
+
+PEERDIR(
+ ydb/core/yq/libs/control_plane_storage/events
ydb/core/yq/libs/events
ydb/public/api/protos
ydb/library/yql/public/issue/protos
-)
-
-END()
+)
+
+END()
diff --git a/ydb/core/yq/libs/test_connection/probes.cpp b/ydb/core/yq/libs/test_connection/probes.cpp
index c9ee2232b4..894a5a0acd 100644
--- a/ydb/core/yq/libs/test_connection/probes.cpp
+++ b/ydb/core/yq/libs/test_connection/probes.cpp
@@ -1,3 +1,3 @@
-#include "probes.h"
-
-LWTRACE_DEFINE_PROVIDER(YQ_TEST_CONNECTION_PROVIDER)
+#include "probes.h"
+
+LWTRACE_DEFINE_PROVIDER(YQ_TEST_CONNECTION_PROVIDER)
diff --git a/ydb/core/yq/libs/test_connection/probes.h b/ydb/core/yq/libs/test_connection/probes.h
index b1f1d51abc..c490a7bca8 100644
--- a/ydb/core/yq/libs/test_connection/probes.h
+++ b/ydb/core/yq/libs/test_connection/probes.h
@@ -1,13 +1,13 @@
-#pragma once
-
-#include <library/cpp/lwtrace/all.h>
-
-#define YQ_TEST_CONNECTION_PROVIDER(PROBE, EVENT, GROUPS, TYPES, NAMES) \
- PROBE(TestConnectionRequest, \
- GROUPS(), \
- TYPES(TString, TString, TDuration, i64, bool, bool), \
- NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
-
-// YQ_TEST_CONNECTION_PROVIDER
-
-LWTRACE_DECLARE_PROVIDER(YQ_TEST_CONNECTION_PROVIDER)
+#pragma once
+
+#include <library/cpp/lwtrace/all.h>
+
+#define YQ_TEST_CONNECTION_PROVIDER(PROBE, EVENT, GROUPS, TYPES, NAMES) \
+ PROBE(TestConnectionRequest, \
+ GROUPS(), \
+ TYPES(TString, TString, TDuration, i64, bool, bool), \
+ NAMES("scope", "user", "latencyMs", "size", "success", "timeout")) \
+
+// YQ_TEST_CONNECTION_PROVIDER
+
+LWTRACE_DECLARE_PROVIDER(YQ_TEST_CONNECTION_PROVIDER)
diff --git a/ydb/core/yq/libs/test_connection/test_connection.cpp b/ydb/core/yq/libs/test_connection/test_connection.cpp
index b7148d0dbc..95e6c51989 100644
--- a/ydb/core/yq/libs/test_connection/test_connection.cpp
+++ b/ydb/core/yq/libs/test_connection/test_connection.cpp
@@ -1,70 +1,70 @@
-#include "events/events.h"
-#include "probes.h"
-#include "test_connection.h"
-
-#include <library/cpp/actors/core/actor_bootstrapped.h>
-#include <library/cpp/lwtrace/mon/mon_lwtrace.h>
-#include <library/cpp/monlib/service/pages/templates.h>
-
-#include <ydb/core/mon/mon.h>
-#include <ydb/core/yq/libs/config/yq_issue.h>
-
-namespace NYq {
-
-using namespace NActors;
-
-class TTestConnectionActor : public NActors::TActorBootstrapped<TTestConnectionActor> {
- NMonitoring::TDynamicCounterPtr Counters;
- NConfig::TTestConnectionConfig Config;
-
-public:
- TTestConnectionActor(const NConfig::TTestConnectionConfig& config, const NMonitoring::TDynamicCounterPtr& counters)
- : Counters(counters)
- , Config(config)
- {
- }
-
- static constexpr char ActorName[] = "YQ_TEST_CONNECTION";
-
- void Bootstrap() {
- TC_LOG_D("Starting yandex query test connection. Actor id: " << SelfId());
-
- NLwTraceMonPage::ProbeRegistry().AddProbesList(LWTRACE_GET_PROBES(YQ_TEST_CONNECTION_PROVIDER));
-
- Become(&TTestConnectionActor::StateFunc);
- }
-
- STRICT_STFUNC(StateFunc,
- hFunc(TEvTestConnection::TEvTestConnectionRequest, Handle);
- hFunc(NMon::TEvHttpInfo, Handle);
- )
-
- void Handle(TEvTestConnection::TEvTestConnectionRequest::TPtr& ev) {
- YandexQuery::TestConnectionRequest request = std::move(ev->Get()->Request);
- TC_LOG_T("TestConnectionRequest: " << request.DebugString());
- Send(ev->Sender, new TEvTestConnection::TEvTestConnectionResponse(NYql::TIssues{MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, "Unimplemented yet")}), 0, ev->Cookie);
- }
-
- void Handle(NMon::TEvHttpInfo::TPtr& ev) {
- TStringStream str;
- HTML(str) {
- PRE() {
- str << "Current config:" << Endl;
- str << Config.DebugString() << Endl;
- str << Endl;
- }
- }
- Send(ev->Sender, new NMon::TEvHttpInfoRes(str.Str()));
- }
-};
-
-NActors::TActorId TestConnectionActorId() {
- constexpr TStringBuf name = "TSTCONN";
- return NActors::TActorId(0, name);
-}
-
-NActors::IActor* CreateTestConnectionActor(const NConfig::TTestConnectionConfig& config, const NMonitoring::TDynamicCounterPtr& counters) {
- return new TTestConnectionActor(config, counters);
-}
-
-} // namespace NYq
+#include "events/events.h"
+#include "probes.h"
+#include "test_connection.h"
+
+#include <library/cpp/actors/core/actor_bootstrapped.h>
+#include <library/cpp/lwtrace/mon/mon_lwtrace.h>
+#include <library/cpp/monlib/service/pages/templates.h>
+
+#include <ydb/core/mon/mon.h>
+#include <ydb/core/yq/libs/config/yq_issue.h>
+
+namespace NYq {
+
+using namespace NActors;
+
+class TTestConnectionActor : public NActors::TActorBootstrapped<TTestConnectionActor> {
+ NMonitoring::TDynamicCounterPtr Counters;
+ NConfig::TTestConnectionConfig Config;
+
+public:
+ TTestConnectionActor(const NConfig::TTestConnectionConfig& config, const NMonitoring::TDynamicCounterPtr& counters)
+ : Counters(counters)
+ , Config(config)
+ {
+ }
+
+ static constexpr char ActorName[] = "YQ_TEST_CONNECTION";
+
+ void Bootstrap() {
+ TC_LOG_D("Starting yandex query test connection. Actor id: " << SelfId());
+
+ NLwTraceMonPage::ProbeRegistry().AddProbesList(LWTRACE_GET_PROBES(YQ_TEST_CONNECTION_PROVIDER));
+
+ Become(&TTestConnectionActor::StateFunc);
+ }
+
+ STRICT_STFUNC(StateFunc,
+ hFunc(TEvTestConnection::TEvTestConnectionRequest, Handle);
+ hFunc(NMon::TEvHttpInfo, Handle);
+ )
+
+ void Handle(TEvTestConnection::TEvTestConnectionRequest::TPtr& ev) {
+ YandexQuery::TestConnectionRequest request = std::move(ev->Get()->Request);
+ TC_LOG_T("TestConnectionRequest: " << request.DebugString());
+ Send(ev->Sender, new TEvTestConnection::TEvTestConnectionResponse(NYql::TIssues{MakeErrorIssue(TIssuesIds::INTERNAL_ERROR, "Unimplemented yet")}), 0, ev->Cookie);
+ }
+
+ void Handle(NMon::TEvHttpInfo::TPtr& ev) {
+ TStringStream str;
+ HTML(str) {
+ PRE() {
+ str << "Current config:" << Endl;
+ str << Config.DebugString() << Endl;
+ str << Endl;
+ }
+ }
+ Send(ev->Sender, new NMon::TEvHttpInfoRes(str.Str()));
+ }
+};
+
+NActors::TActorId TestConnectionActorId() {
+ constexpr TStringBuf name = "TSTCONN";
+ return NActors::TActorId(0, name);
+}
+
+NActors::IActor* CreateTestConnectionActor(const NConfig::TTestConnectionConfig& config, const NMonitoring::TDynamicCounterPtr& counters) {
+ return new TTestConnectionActor(config, counters);
+}
+
+} // namespace NYq
diff --git a/ydb/core/yq/libs/test_connection/test_connection.h b/ydb/core/yq/libs/test_connection/test_connection.h
index 7be25e8e57..1f57eb996c 100644
--- a/ydb/core/yq/libs/test_connection/test_connection.h
+++ b/ydb/core/yq/libs/test_connection/test_connection.h
@@ -1,27 +1,27 @@
-#pragma once
-
+#pragma once
+
#include <ydb/core/yq/libs/actors/logging/log.h>
-#include <ydb/core/yq/libs/config/protos/test_connection.pb.h>
-
-#include <library/cpp/actors/core/actor.h>
-#include <library/cpp/monlib/dynamic_counters/counters.h>
-
-
-#define TC_LOG_D(s) \
- LOG_YQ_TEST_CONNECTION_DEBUG(s)
-#define TC_LOG_I(s) \
- LOG_YQ_TEST_CONNECTION_INFO(s)
-#define TC_LOG_W(s) \
- LOG_YQ_TEST_CONNECTION_WARN(s)
-#define TC_LOG_E(s) \
- LOG_YQ_TEST_CONNECTION_ERROR(s)
-#define TC_LOG_T(s) \
- LOG_YQ_TEST_CONNECTION_TRACE(s)
-
-namespace NYq {
-
-NActors::TActorId TestConnectionActorId();
-
-NActors::IActor* CreateTestConnectionActor(const NConfig::TTestConnectionConfig& config, const NMonitoring::TDynamicCounterPtr& counters);
-
-} // namespace NYq
+#include <ydb/core/yq/libs/config/protos/test_connection.pb.h>
+
+#include <library/cpp/actors/core/actor.h>
+#include <library/cpp/monlib/dynamic_counters/counters.h>
+
+
+#define TC_LOG_D(s) \
+ LOG_YQ_TEST_CONNECTION_DEBUG(s)
+#define TC_LOG_I(s) \
+ LOG_YQ_TEST_CONNECTION_INFO(s)
+#define TC_LOG_W(s) \
+ LOG_YQ_TEST_CONNECTION_WARN(s)
+#define TC_LOG_E(s) \
+ LOG_YQ_TEST_CONNECTION_ERROR(s)
+#define TC_LOG_T(s) \
+ LOG_YQ_TEST_CONNECTION_TRACE(s)
+
+namespace NYq {
+
+NActors::TActorId TestConnectionActorId();
+
+NActors::IActor* CreateTestConnectionActor(const NConfig::TTestConnectionConfig& config, const NMonitoring::TDynamicCounterPtr& counters);
+
+} // namespace NYq
diff --git a/ydb/core/yq/libs/test_connection/ut/test_connection_ut.cpp b/ydb/core/yq/libs/test_connection/ut/test_connection_ut.cpp
index 0cd598c0d2..ff21e70a13 100644
--- a/ydb/core/yq/libs/test_connection/ut/test_connection_ut.cpp
+++ b/ydb/core/yq/libs/test_connection/ut/test_connection_ut.cpp
@@ -1,7 +1,7 @@
-#include <library/cpp/testing/unittest/registar.h>
-
-namespace NYq {
-
-// TODO: tests
-
-} // namespace NYq
+#include <library/cpp/testing/unittest/registar.h>
+
+namespace NYq {
+
+// TODO: tests
+
+} // namespace NYq
diff --git a/ydb/core/yq/libs/test_connection/ut/ya.make b/ydb/core/yq/libs/test_connection/ut/ya.make
index fb0219a36b..b9b590f975 100644
--- a/ydb/core/yq/libs/test_connection/ut/ya.make
+++ b/ydb/core/yq/libs/test_connection/ut/ya.make
@@ -1,15 +1,15 @@
-UNITTEST_FOR(ydb/core/yq/libs/control_plane_proxy)
-
-OWNER(g:yq)
-
-PEERDIR(
- library/cpp/testing/unittest
-)
-
-YQL_LAST_ABI_VERSION()
-
-SRCS(
- test_connection_ut.cpp
-)
-
-END()
+UNITTEST_FOR(ydb/core/yq/libs/control_plane_proxy)
+
+OWNER(g:yq)
+
+PEERDIR(
+ library/cpp/testing/unittest
+)
+
+YQL_LAST_ABI_VERSION()
+
+SRCS(
+ test_connection_ut.cpp
+)
+
+END()
diff --git a/ydb/core/yq/libs/test_connection/ya.make b/ydb/core/yq/libs/test_connection/ya.make
index 1b320aafcd..dc42a647ae 100644
--- a/ydb/core/yq/libs/test_connection/ya.make
+++ b/ydb/core/yq/libs/test_connection/ya.make
@@ -1,27 +1,27 @@
-OWNER(g:yq)
-
-LIBRARY()
-
-SRCS(
- test_connection.cpp
- probes.cpp
-)
-
-PEERDIR(
- library/cpp/lwtrace
+OWNER(g:yq)
+
+LIBRARY()
+
+SRCS(
+ test_connection.cpp
+ probes.cpp
+)
+
+PEERDIR(
+ library/cpp/lwtrace
ydb/core/yq/libs/actors/logging
- ydb/core/yq/libs/config/protos
+ ydb/core/yq/libs/config/protos
ydb/core/yq/libs/test_connection/events
-)
-
-YQL_LAST_ABI_VERSION()
-
-END()
-
-RECURSE(
- events
-)
-
-RECURSE_FOR_TESTS(
- ut
-)
+)
+
+YQL_LAST_ABI_VERSION()
+
+END()
+
+RECURSE(
+ events
+)
+
+RECURSE_FOR_TESTS(
+ ut
+)
diff --git a/ydb/core/yq/libs/ya.make b/ydb/core/yq/libs/ya.make
index ccc88a55b6..2ddd5d54bd 100644
--- a/ydb/core/yq/libs/ya.make
+++ b/ydb/core/yq/libs/ya.make
@@ -7,7 +7,7 @@ RECURSE(
checkpointing
checkpointing_common
common
- config
+ config
control_plane_proxy
control_plane_storage
db_resolver
@@ -17,7 +17,7 @@ RECURSE(
graph_params
hmac
init
- logs
+ logs
mock
pretty_printers
private_client
@@ -26,6 +26,6 @@ RECURSE(
shared_resources
signer
tasks_packer
- test_connection
- ydb
+ test_connection
+ ydb
)
diff --git a/ydb/core/yq/libs/ydb/ydb.cpp b/ydb/core/yq/libs/ydb/ydb.cpp
index d6096abce3..0c3a8d9e72 100644
--- a/ydb/core/yq/libs/ydb/ydb.cpp
+++ b/ydb/core/yq/libs/ydb/ydb.cpp
@@ -4,12 +4,12 @@
#include <util/stream/str.h>
#include <util/string/printf.h>
-#include <util/stream/file.h>
-#include <util/string/strip.h>
-#include <util/system/env.h>
+#include <util/stream/file.h>
+#include <util/string/strip.h>
+#include <util/system/env.h>
#include <ydb/library/security/ydb_credentials_provider_factory.h>
-
+
namespace NYq {
using namespace NThreading;
@@ -55,10 +55,10 @@ TFuture<TStatus> CheckGeneration(
return MakeFuture<TStatus>(selectResult);
}
-
+
TResultSetParser parser(selectResult.GetResultSet(0));
if (parser.TryNextRow()) {
- context->GenerationRead = parser.ColumnParser(context->GenerationColumn).GetOptionalUint64().GetOrElse(0);
+ context->GenerationRead = parser.ColumnParser(context->GenerationColumn).GetOptionalUint64().GetOrElse(0);
}
bool isOk = false;
@@ -186,24 +186,24 @@ TYdbConnection::~TYdbConnection()
////////////////////////////////////////////////////////////////////////////////
-
-NYdb::TDriverConfig GetDriverConfig(const NConfig::TYdbStorageConfig& config,
- const NKikimr::TYdbCredentialsProviderFactory& credProviderFactory) {
- TString oauth;
- if (config.GetToken()) {
- oauth = config.GetToken();
- } else if (config.GetOAuthFile()) {
- oauth = StripString(TFileInput(config.GetOAuthFile()).ReadAll());
- } else {
- oauth = GetEnv("YDB_TOKEN");
- }
-
- const TString iamEndpoint = config.GetIamEndpoint();
- const TString saKeyFile = config.GetSaKeyFile();
-
+
+NYdb::TDriverConfig GetDriverConfig(const NConfig::TYdbStorageConfig& config,
+ const NKikimr::TYdbCredentialsProviderFactory& credProviderFactory) {
+ TString oauth;
+ if (config.GetToken()) {
+ oauth = config.GetToken();
+ } else if (config.GetOAuthFile()) {
+ oauth = StripString(TFileInput(config.GetOAuthFile()).ReadAll());
+ } else {
+ oauth = GetEnv("YDB_TOKEN");
+ }
+
+ const TString iamEndpoint = config.GetIamEndpoint();
+ const TString saKeyFile = config.GetSaKeyFile();
+
auto driverConfig = TDriverConfig()
.SetEndpoint(config.GetEndpoint())
- .SetDatabase(config.GetDatabase());
+ .SetDatabase(config.GetDatabase());
NKikimr::TYdbCredentialsSettings credSettings;
credSettings.UseLocalMetadata = config.GetUseLocalMetadataService();
@@ -213,20 +213,20 @@ NYdb::TDriverConfig GetDriverConfig(const NConfig::TYdbStorageConfig& config,
driverConfig.SetCredentialsProviderFactory(credProviderFactory(credSettings));
- if (config.GetUseLocalMetadataService()) {
- driverConfig.UseSecureConnection();
- }
-
- if (config.GetCertificateFile()) {
- auto cert = StripString(TFileInput(config.GetCertificateFile()).ReadAll());
- driverConfig.UseSecureConnection(cert);
- }
-
- return driverConfig;
-}
-
-TYdbConnectionPtr NewYdbConnection(const NConfig::TYdbStorageConfig& config,
- const NKikimr::TYdbCredentialsProviderFactory& credProviderFactory) {
+ if (config.GetUseLocalMetadataService()) {
+ driverConfig.UseSecureConnection();
+ }
+
+ if (config.GetCertificateFile()) {
+ auto cert = StripString(TFileInput(config.GetCertificateFile()).ReadAll());
+ driverConfig.UseSecureConnection(cert);
+ }
+
+ return driverConfig;
+}
+
+TYdbConnectionPtr NewYdbConnection(const NConfig::TYdbStorageConfig& config,
+ const NKikimr::TYdbCredentialsProviderFactory& credProviderFactory) {
auto driverConfig = GetDriverConfig(config, credProviderFactory);
return MakeIntrusive<TYdbConnection>(driverConfig, config);
}
diff --git a/ydb/core/yq/libs/ydb/ydb.h b/ydb/core/yq/libs/ydb/ydb.h
index 14c0742288..be2c330b58 100644
--- a/ydb/core/yq/libs/ydb/ydb.h
+++ b/ydb/core/yq/libs/ydb/ydb.h
@@ -95,7 +95,7 @@ using TGenerationContextPtr = TIntrusivePtr<TGenerationContext>;
////////////////////////////////////////////////////////////////////////////////
NYdb::TDriverConfig GetDriverConfig(const NConfig::TYdbStorageConfig& config, const NKikimr::TYdbCredentialsProviderFactory& credProviderFactory);
-
+
TYdbConnectionPtr NewYdbConnection(const NConfig::TYdbStorageConfig& config, const NKikimr::TYdbCredentialsProviderFactory& credProviderFactory);
NYdb::TStatus MakeErrorStatus(
diff --git a/ydb/library/folder_service/folder_service.h b/ydb/library/folder_service/folder_service.h
index 142118c3c9..1b7ef8ff5a 100644
--- a/ydb/library/folder_service/folder_service.h
+++ b/ydb/library/folder_service/folder_service.h
@@ -1,12 +1,12 @@
#pragma once
#include <ydb/library/folder_service/proto/config.pb.h>
-#include <library/cpp/actors/core/actor.h>
-
+#include <library/cpp/actors/core/actor.h>
+
namespace NKikimr::NFolderService {
-
+
NActors::TActorId FolderServiceActorId();
-
+
NActors::IActor* CreateFolderServiceActor(const NKikimrProto::NFolderService::TFolderServiceConfig& config);
-
+
} // namespace NKikimr::NFolderService
diff --git a/ydb/library/protobuf_printer/hide_field_printer.cpp b/ydb/library/protobuf_printer/hide_field_printer.cpp
index 743701a31b..8249baade9 100644
--- a/ydb/library/protobuf_printer/hide_field_printer.cpp
+++ b/ydb/library/protobuf_printer/hide_field_printer.cpp
@@ -3,49 +3,49 @@
namespace NKikimr {
void THideFieldValuePrinter::PrintBool(bool, google::protobuf::TextFormat::BaseTextGenerator* generator) const {
- generator->PrintLiteral("***");
+ generator->PrintLiteral("***");
}
void THideFieldValuePrinter::PrintInt32(i32, google::protobuf::TextFormat::BaseTextGenerator* generator) const {
- generator->PrintLiteral("***");
+ generator->PrintLiteral("***");
}
void THideFieldValuePrinter::PrintUInt32(ui32, google::protobuf::TextFormat::BaseTextGenerator* generator) const {
- generator->PrintLiteral("***");
+ generator->PrintLiteral("***");
}
void THideFieldValuePrinter::PrintInt64(i64, google::protobuf::TextFormat::BaseTextGenerator* generator) const {
- generator->PrintLiteral("***");
+ generator->PrintLiteral("***");
}
void THideFieldValuePrinter::PrintUInt64(ui64, google::protobuf::TextFormat::BaseTextGenerator* generator) const {
- generator->PrintLiteral("***");
+ generator->PrintLiteral("***");
}
void THideFieldValuePrinter::PrintFloat(float, google::protobuf::TextFormat::BaseTextGenerator* generator) const {
- generator->PrintLiteral("***");
+ generator->PrintLiteral("***");
}
void THideFieldValuePrinter::PrintDouble(double, google::protobuf::TextFormat::BaseTextGenerator* generator) const {
- generator->PrintLiteral("***");
+ generator->PrintLiteral("***");
}
void THideFieldValuePrinter::PrintString(const TString&, google::protobuf::TextFormat::BaseTextGenerator* generator) const {
- generator->PrintLiteral("\"***\"");
+ generator->PrintLiteral("\"***\"");
}
void THideFieldValuePrinter::PrintBytes(const TString&, google::protobuf::TextFormat::BaseTextGenerator* generator) const {
- generator->PrintLiteral("\"***\"");
+ generator->PrintLiteral("\"***\"");
}
void THideFieldValuePrinter::PrintEnum(i32, const TString&, google::protobuf::TextFormat::BaseTextGenerator* generator) const {
- generator->PrintLiteral("***");
+ generator->PrintLiteral("***");
}
bool THideFieldValuePrinter::PrintMessageContent(const google::protobuf::Message&, int,
int, bool singleLineMode,
google::protobuf::TextFormat::BaseTextGenerator* generator) const {
- generator->PrintLiteral("***");
+ generator->PrintLiteral("***");
if (singleLineMode) {
generator->PrintLiteral(" ");
} else {
diff --git a/ydb/library/protobuf_printer/protobuf_printer_ut.cpp b/ydb/library/protobuf_printer/protobuf_printer_ut.cpp
index f71c330d46..93f1a45716 100644
--- a/ydb/library/protobuf_printer/protobuf_printer_ut.cpp
+++ b/ydb/library/protobuf_printer/protobuf_printer_ut.cpp
@@ -1,6 +1,6 @@
#include "hide_field_printer.h"
#include "protobuf_printer.h"
-#include "security_printer.h"
+#include "security_printer.h"
#include "stream_helper.h"
#include "token_field_printer.h"
#include <ydb/library/protobuf_printer/ut/test_proto.pb.h>
@@ -51,43 +51,43 @@ Y_UNIT_TEST_SUITE(HideFieldPrinterTest) {
printer.RegisterFieldValuePrinters<NTestProto::TTestProto, THideFieldValuePrinter>("s1", "s2", "msg");
{
const TString s = TProtobufPrinterOutputWrapper(m, printer);
- UNIT_ASSERT_STRINGS_EQUAL(s, "s1: \"***\"\ns2: \"***\"\nmsg {\n ***\n}\n");
+ UNIT_ASSERT_STRINGS_EQUAL(s, "s1: \"***\"\ns2: \"***\"\nmsg {\n ***\n}\n");
}
printer.SetSingleLineMode(true);
{
const TString s = TProtobufPrinterOutputWrapper(m, printer);
- UNIT_ASSERT_STRINGS_EQUAL(s, "s1: \"***\" s2: \"***\" msg { *** } ");
- }
- }
-}
-
-Y_UNIT_TEST_SUITE(SecurityPrinterTest) {
- Y_UNIT_TEST(PrintSensitive) {
- NTestProto::TConnectionContent m;
- m.set_name("name1");
- m.mutable_setting()->mutable_connection2()->set_login("login1");
- m.mutable_setting()->mutable_connection2()->set_password("pswd");
-
- TSecurityTextFormatPrinter<NTestProto::TConnectionContent> printer;
- printer.SetSingleLineMode(true);
- {
- const TString s = TProtobufPrinterOutputWrapper(m, printer);
- UNIT_ASSERT_STRINGS_EQUAL(s, "name: \"name1\" setting { connection2 { login: \"***\" password: \"***\" } } ");
- }
- }
-
- Y_UNIT_TEST(PrintRecursiveType) {
- NTestProto::TRecursiveType response;
- response.set_name("name1");
- response.set_login("login1");
- response.add_types()->set_login("login2");
- response.add_types()->set_name("name3");
- TSecurityTextFormatPrinter<NTestProto::TRecursiveType> printer;
- printer.SetSingleLineMode(true);
- {
- const TString s = TProtobufPrinterOutputWrapper(response, printer);
- UNIT_ASSERT_STRINGS_EQUAL(s, "name: \"name1\" login: \"***\" types { login: \"***\" } types { name: \"name3\" } ");
+ UNIT_ASSERT_STRINGS_EQUAL(s, "s1: \"***\" s2: \"***\" msg { *** } ");
}
}
}
+
+Y_UNIT_TEST_SUITE(SecurityPrinterTest) {
+ Y_UNIT_TEST(PrintSensitive) {
+ NTestProto::TConnectionContent m;
+ m.set_name("name1");
+ m.mutable_setting()->mutable_connection2()->set_login("login1");
+ m.mutable_setting()->mutable_connection2()->set_password("pswd");
+
+ TSecurityTextFormatPrinter<NTestProto::TConnectionContent> printer;
+ printer.SetSingleLineMode(true);
+ {
+ const TString s = TProtobufPrinterOutputWrapper(m, printer);
+ UNIT_ASSERT_STRINGS_EQUAL(s, "name: \"name1\" setting { connection2 { login: \"***\" password: \"***\" } } ");
+ }
+ }
+
+ Y_UNIT_TEST(PrintRecursiveType) {
+ NTestProto::TRecursiveType response;
+ response.set_name("name1");
+ response.set_login("login1");
+ response.add_types()->set_login("login2");
+ response.add_types()->set_name("name3");
+ TSecurityTextFormatPrinter<NTestProto::TRecursiveType> printer;
+ printer.SetSingleLineMode(true);
+ {
+ const TString s = TProtobufPrinterOutputWrapper(response, printer);
+ UNIT_ASSERT_STRINGS_EQUAL(s, "name: \"name1\" login: \"***\" types { login: \"***\" } types { name: \"name3\" } ");
+ }
+ }
+}
diff --git a/ydb/library/protobuf_printer/security_printer.h b/ydb/library/protobuf_printer/security_printer.h
index 69398949d0..6ab3bad060 100644
--- a/ydb/library/protobuf_printer/security_printer.h
+++ b/ydb/library/protobuf_printer/security_printer.h
@@ -1,37 +1,37 @@
-#pragma once
-
-#include "hide_field_printer.h"
+#pragma once
+
+#include "hide_field_printer.h"
#include <ydb/public/api/protos/annotations/sensitive.pb.h>
-
-#include <google/protobuf/message.h>
-#include <google/protobuf/text_format.h>
-
-#include <util/generic/set.h>
-
-namespace NKikimr {
-
-template<typename TMsg>
-class TSecurityTextFormatPrinter : public google::protobuf::TextFormat::Printer {
-public:
- TSecurityTextFormatPrinter() {
- TSet<std::pair<TString, int>> visited;
- Walk(TMsg::descriptor(), visited);
- }
-
- void Walk(const google::protobuf::Descriptor* desc, TSet<std::pair<TString, int>>& visited) {
- if (!desc || visited.contains(std::pair<TString, int>{desc->full_name(), desc->index()})) {
- return;
- }
- visited.insert({desc->full_name(), desc->index()});
- for (int i = 0; i < desc->field_count(); i++) {
- const auto field = desc->field(i);
- const auto options = field->options();
- if (options.GetExtension(Ydb::sensitive)) {
- RegisterFieldValuePrinter(field, new THideFieldValuePrinter());
- }
- Walk(field->message_type(), visited);
- }
- }
-};
-
-} // namespace NKikimr
+
+#include <google/protobuf/message.h>
+#include <google/protobuf/text_format.h>
+
+#include <util/generic/set.h>
+
+namespace NKikimr {
+
+template<typename TMsg>
+class TSecurityTextFormatPrinter : public google::protobuf::TextFormat::Printer {
+public:
+ TSecurityTextFormatPrinter() {
+ TSet<std::pair<TString, int>> visited;
+ Walk(TMsg::descriptor(), visited);
+ }
+
+ void Walk(const google::protobuf::Descriptor* desc, TSet<std::pair<TString, int>>& visited) {
+ if (!desc || visited.contains(std::pair<TString, int>{desc->full_name(), desc->index()})) {
+ return;
+ }
+ visited.insert({desc->full_name(), desc->index()});
+ for (int i = 0; i < desc->field_count(); i++) {
+ const auto field = desc->field(i);
+ const auto options = field->options();
+ if (options.GetExtension(Ydb::sensitive)) {
+ RegisterFieldValuePrinter(field, new THideFieldValuePrinter());
+ }
+ Walk(field->message_type(), visited);
+ }
+ }
+};
+
+} // namespace NKikimr
diff --git a/ydb/library/protobuf_printer/ut/test_proto.proto b/ydb/library/protobuf_printer/ut/test_proto.proto
index 80bf23c804..908530a799 100644
--- a/ydb/library/protobuf_printer/ut/test_proto.proto
+++ b/ydb/library/protobuf_printer/ut/test_proto.proto
@@ -3,7 +3,7 @@ syntax = "proto3";
package NTestProto;
import "ydb/public/api/protos/annotations/sensitive.proto";
-
+
message TTestSubProto {
uint64 i = 1;
}
@@ -14,33 +14,33 @@ message TTestProto {
string token = 3;
TTestSubProto msg = 4;
}
-
-message TConnection1 {
- string database_id = 1;
- string token = 2 [(Ydb.sensitive) = true];
-}
-
-message TConnection2 {
- string database_id = 1;
- string login = 2 [(Ydb.sensitive) = true];
- string password = 3 [(Ydb.sensitive) = true];
-}
-
-message TConnectionSetting {
- oneof connection {
- TConnection1 connection1 = 1;
- TConnection2 connection2 = 2;
- }
-}
-
-message TConnectionContent {
- string name = 1;
- TConnectionSetting setting = 2;
- string description = 3;
-}
-
-message TRecursiveType {
- string name = 1;
- string login = 2 [(Ydb.sensitive) = true];
- repeated TRecursiveType types = 3;
-}
+
+message TConnection1 {
+ string database_id = 1;
+ string token = 2 [(Ydb.sensitive) = true];
+}
+
+message TConnection2 {
+ string database_id = 1;
+ string login = 2 [(Ydb.sensitive) = true];
+ string password = 3 [(Ydb.sensitive) = true];
+}
+
+message TConnectionSetting {
+ oneof connection {
+ TConnection1 connection1 = 1;
+ TConnection2 connection2 = 2;
+ }
+}
+
+message TConnectionContent {
+ string name = 1;
+ TConnectionSetting setting = 2;
+ string description = 3;
+}
+
+message TRecursiveType {
+ string name = 1;
+ string login = 2 [(Ydb.sensitive) = true];
+ repeated TRecursiveType types = 3;
+}
diff --git a/ydb/library/security/ut/util_ut.cpp b/ydb/library/security/ut/util_ut.cpp
index bcb134f870..158c6b656e 100644
--- a/ydb/library/security/ut/util_ut.cpp
+++ b/ydb/library/security/ut/util_ut.cpp
@@ -1,11 +1,11 @@
-
+
#include <ydb/library/security/util.h>
-
-#include <library/cpp/testing/unittest/registar.h>
-
-Y_UNIT_TEST_SUITE(Util) {
- Y_UNIT_TEST(MaskTicket) {
- TString ticket = "my_secret_abaabaabaaba";
- UNIT_ASSERT_VALUES_EQUAL(NKikimr::MaskTicket(ticket), "my_s****aaba (47A7C701)");
- }
-}
+
+#include <library/cpp/testing/unittest/registar.h>
+
+Y_UNIT_TEST_SUITE(Util) {
+ Y_UNIT_TEST(MaskTicket) {
+ TString ticket = "my_secret_abaabaabaaba";
+ UNIT_ASSERT_VALUES_EQUAL(NKikimr::MaskTicket(ticket), "my_s****aaba (47A7C701)");
+ }
+}
diff --git a/ydb/library/security/ut/ya.make b/ydb/library/security/ut/ya.make
index a6955ed999..a0b65af91a 100644
--- a/ydb/library/security/ut/ya.make
+++ b/ydb/library/security/ut/ya.make
@@ -1,16 +1,16 @@
-UNITTEST()
-
+UNITTEST()
+
OWNER(
hcpp
g:kikimr
)
-
-PEERDIR(
+
+PEERDIR(
ydb/library/security
-)
-
-SRCS(
- util_ut.cpp
-)
-
-END()
+)
+
+SRCS(
+ util_ut.cpp
+)
+
+END()
diff --git a/ydb/library/security/util.cpp b/ydb/library/security/util.cpp
index 0472117a89..feb258bf8a 100644
--- a/ydb/library/security/util.cpp
+++ b/ydb/library/security/util.cpp
@@ -1,29 +1,29 @@
-#include "util.h"
-
-#include <util/string/builder.h>
-#include <util/string/printf.h>
-
-#include <library/cpp/digest/crc32c/crc32c.h>
-
-namespace NKikimr {
-
-TString MaskTicket(TStringBuf token) {
- TStringBuilder mask;
- if (token.size() >= 16) {
- mask << token.substr(0, 4);
- mask << "****";
- mask << token.substr(token.size() - 4, 4);
- } else {
- mask << "****";
- }
- mask << " (";
- mask << Sprintf("%08X", Crc32c(token.data(), token.size()));
- mask << ")";
- return mask;
-}
-
-TString MaskTicket(const TString& token) {
- return MaskTicket(TStringBuf(token));
-}
-
-} // namespace NKikimr
+#include "util.h"
+
+#include <util/string/builder.h>
+#include <util/string/printf.h>
+
+#include <library/cpp/digest/crc32c/crc32c.h>
+
+namespace NKikimr {
+
+TString MaskTicket(TStringBuf token) {
+ TStringBuilder mask;
+ if (token.size() >= 16) {
+ mask << token.substr(0, 4);
+ mask << "****";
+ mask << token.substr(token.size() - 4, 4);
+ } else {
+ mask << "****";
+ }
+ mask << " (";
+ mask << Sprintf("%08X", Crc32c(token.data(), token.size()));
+ mask << ")";
+ return mask;
+}
+
+TString MaskTicket(const TString& token) {
+ return MaskTicket(TStringBuf(token));
+}
+
+} // namespace NKikimr
diff --git a/ydb/library/security/util.h b/ydb/library/security/util.h
index 7f6d9791a2..5dcd2f35ea 100644
--- a/ydb/library/security/util.h
+++ b/ydb/library/security/util.h
@@ -1,11 +1,11 @@
-#pragma once
-
-#include <util/generic/fwd.h>
+#pragma once
+
+#include <util/generic/fwd.h>
#include <util/datetime/base.h>
-
-namespace NKikimr {
- TString MaskTicket(TStringBuf token);
- TString MaskTicket(const TString& token);
+
+namespace NKikimr {
+ TString MaskTicket(TStringBuf token);
+ TString MaskTicket(const TString& token);
// copy-pasted from <robot/library/utils/time_convert.h>
template<typename Rep, typename Period>
@@ -17,4 +17,4 @@ namespace NKikimr {
constexpr TInstant ToInstant(std::chrono::time_point<Clock, Duration> value) {
return TInstant::MicroSeconds(ToMicroseconds(value.time_since_epoch()));
}
-}
+}
diff --git a/ydb/library/security/ya.make b/ydb/library/security/ya.make
index ce048987e4..c6a72991fa 100644
--- a/ydb/library/security/ya.make
+++ b/ydb/library/security/ya.make
@@ -1,22 +1,22 @@
-LIBRARY()
-
+LIBRARY()
+
OWNER(
hcpp
g:kikimr
)
-
-PEERDIR(
- library/cpp/digest/crc32c
+
+PEERDIR(
+ library/cpp/digest/crc32c
ydb/public/sdk/cpp/client/ydb_types/credentials
-)
-
-SRCS(
- util.cpp
+)
+
+SRCS(
+ util.cpp
ydb_credentials_provider_factory.cpp
-)
-
-END()
-
+)
+
+END()
+
RECURSE_FOR_TESTS(
- ut
-)
+ ut
+)
diff --git a/ydb/library/yql/providers/ydb/provider/yql_ydb_load_meta.cpp b/ydb/library/yql/providers/ydb/provider/yql_ydb_load_meta.cpp
index 607b3ba7a8..eded643d5b 100644
--- a/ydb/library/yql/providers/ydb/provider/yql_ydb_load_meta.cpp
+++ b/ydb/library/yql/providers/ydb/provider/yql_ydb_load_meta.cpp
@@ -217,7 +217,7 @@ public:
} else {
failed = true;
const auto& config = State_->Configuration->Clusters[TString(client.first)];
- ctx.AddError(TIssue({}, TStringBuilder() << "Failed to take snapshot for: `" << client.first << "`, endpoint: " << config.Endpoint << ", status: " << snapshot.GetStatus()));
+ ctx.AddError(TIssue({}, TStringBuilder() << "Failed to take snapshot for: `" << client.first << "`, endpoint: " << config.Endpoint << ", status: " << snapshot.GetStatus()));
for (const auto& issue : snapshot.GetIssues())
ctx.AddError(issue);
}
@@ -254,7 +254,7 @@ public:
meta.Partitions.back().back().clear();
} else {
failed = true;
- ctx.AddError(TIssue({}, TStringBuilder() << "Failed to load table metadata for: `" << pair.first.second << ", status: " << result.GetStatus() << "`\n"));
+ ctx.AddError(TIssue({}, TStringBuilder() << "Failed to load table metadata for: `" << pair.first.second << ", status: " << result.GetStatus() << "`\n"));
for (const auto& issue : result.GetIssues())
ctx.AddError(issue);
}
diff --git a/ydb/public/api/grpc/ya.make b/ydb/public/api/grpc/ya.make
index 24173a0264..a5bfe94831 100644
--- a/ydb/public/api/grpc/ya.make
+++ b/ydb/public/api/grpc/ya.make
@@ -24,7 +24,7 @@ SRCS(
ydb_scheme_v1.proto
ydb_scripting_v1.proto
ydb_table_v1.proto
- yq_v1.proto
+ yq_v1.proto
)
PEERDIR(
diff --git a/ydb/public/api/grpc/yq_v1.proto b/ydb/public/api/grpc/yq_v1.proto
index 6f48bcc11f..ae5da41e7c 100644
--- a/ydb/public/api/grpc/yq_v1.proto
+++ b/ydb/public/api/grpc/yq_v1.proto
@@ -1,79 +1,79 @@
-syntax = "proto3";
-
-package YandexQuery.V1;
-option java_package = "com.yandex.query.v1";
-
+syntax = "proto3";
+
+package YandexQuery.V1;
+option java_package = "com.yandex.query.v1";
+
import "ydb/public/api/protos/yq.proto";
-
-service YandexQueryService {
- // Query
- // Query is the text of an SQL request, the results of the last run and the state after the last run (partitions offsets, consumer in YDS)
- // Create a query object with a given SQL
- rpc CreateQuery(YandexQuery.CreateQueryRequest) returns (YandexQuery.CreateQueryResponse);
-
- // Get a list of brief queries objects
- rpc ListQueries(YandexQuery.ListQueriesRequest) returns (YandexQuery.ListQueriesResponse);
-
- // Get full information about the object of the query
- rpc DescribeQuery(YandexQuery.DescribeQueryRequest) returns (YandexQuery.DescribeQueryResponse);
-
+
+service YandexQueryService {
+ // Query
+ // Query is the text of an SQL request, the results of the last run and the state after the last run (partitions offsets, consumer in YDS)
+ // Create a query object with a given SQL
+ rpc CreateQuery(YandexQuery.CreateQueryRequest) returns (YandexQuery.CreateQueryResponse);
+
+ // Get a list of brief queries objects
+ rpc ListQueries(YandexQuery.ListQueriesRequest) returns (YandexQuery.ListQueriesResponse);
+
+ // Get full information about the object of the query
+ rpc DescribeQuery(YandexQuery.DescribeQueryRequest) returns (YandexQuery.DescribeQueryResponse);
+
// Get status of the query
rpc GetQueryStatus(YandexQuery.GetQueryStatusRequest) returns (YandexQuery.GetQueryStatusResponse);
- // Change the attributes of the query (acl, name, ...)
- rpc ModifyQuery(YandexQuery.ModifyQueryRequest) returns (YandexQuery.ModifyQueryResponse);
-
- // Completely delete the query
- rpc DeleteQuery(YandexQuery.DeleteQueryRequest) returns (YandexQuery.DeleteQueryResponse);
-
- // Change the state of the query lifecycle
- rpc ControlQuery(YandexQuery.ControlQueryRequest) returns (YandexQuery.ControlQueryResponse);
-
- // Get a results page
- rpc GetResultData(YandexQuery.GetResultDataRequest) returns (YandexQuery.GetResultDataResponse);
-
- // Job
- // Job - appears immediately after starting the request and contains the request metadata
+ // Change the attributes of the query (acl, name, ...)
+ rpc ModifyQuery(YandexQuery.ModifyQueryRequest) returns (YandexQuery.ModifyQueryResponse);
+
+ // Completely delete the query
+ rpc DeleteQuery(YandexQuery.DeleteQueryRequest) returns (YandexQuery.DeleteQueryResponse);
+
+ // Change the state of the query lifecycle
+ rpc ControlQuery(YandexQuery.ControlQueryRequest) returns (YandexQuery.ControlQueryResponse);
+
+ // Get a results page
+ rpc GetResultData(YandexQuery.GetResultDataRequest) returns (YandexQuery.GetResultDataResponse);
+
+ // Job
+ // Job - appears immediately after starting the request and contains the request metadata
// Get a list of jobs
- rpc ListJobs(YandexQuery.ListJobsRequest) returns (YandexQuery.ListJobsResponse);
-
+ rpc ListJobs(YandexQuery.ListJobsRequest) returns (YandexQuery.ListJobsResponse);
+
// Get information about the job
rpc DescribeJob(YandexQuery.DescribeJobRequest) returns (YandexQuery.DescribeJobResponse);
- // Connection
- // Connection - entity that describes connection points. This can be imagined as an analogue of a network address.
- // Create a connection object (ObjectStorage, YDB, YDS, ...)
- rpc CreateConnection(YandexQuery.CreateConnectionRequest) returns (YandexQuery.CreateConnectionResponse);
-
- // Get a list of connections objects
- rpc ListConnections(YandexQuery.ListConnectionsRequest) returns (YandexQuery.ListConnectionsResponse);
-
- // Get information about the object of the connection
- rpc DescribeConnection(YandexQuery.DescribeConnectionRequest) returns (YandexQuery.DescribeConnectionResponse);
-
- // Change the attributes of the connection
- rpc ModifyConnection(YandexQuery.ModifyConnectionRequest) returns (YandexQuery.ModifyConnectionResponse);
-
- // Completely delete the connection
- rpc DeleteConnection(YandexQuery.DeleteConnectionRequest) returns (YandexQuery.DeleteConnectionResponse);
-
- // Test the connection (permissions, network, ...)
- rpc TestConnection(YandexQuery.TestConnectionRequest) returns (YandexQuery.TestConnectionResponse);
-
- // Binding
- // Binding - entity using which a schema is assigned to non-schematic data
- // Create a binding object - bind schema with ObjectStorage object or YDS stream
- rpc CreateBinding(YandexQuery.CreateBindingRequest) returns (YandexQuery.CreateBindingResponse);
-
- // Get a list of bindings objects
- rpc ListBindings(YandexQuery.ListBindingsRequest) returns (YandexQuery.ListBindingsResponse);
-
- // Get information about the object of the binding
- rpc DescribeBinding(YandexQuery.DescribeBindingRequest) returns (YandexQuery.DescribeBindingResponse);
-
- // Change the attributes of the binding
- rpc ModifyBinding(YandexQuery.ModifyBindingRequest) returns (YandexQuery.ModifyBindingResponse);
-
- // Completely delete the binding
- rpc DeleteBinding(YandexQuery.DeleteBindingRequest) returns (YandexQuery.DeleteBindingResponse);
-}
+ // Connection
+ // Connection - entity that describes connection points. This can be imagined as an analogue of a network address.
+ // Create a connection object (ObjectStorage, YDB, YDS, ...)
+ rpc CreateConnection(YandexQuery.CreateConnectionRequest) returns (YandexQuery.CreateConnectionResponse);
+
+ // Get a list of connections objects
+ rpc ListConnections(YandexQuery.ListConnectionsRequest) returns (YandexQuery.ListConnectionsResponse);
+
+ // Get information about the object of the connection
+ rpc DescribeConnection(YandexQuery.DescribeConnectionRequest) returns (YandexQuery.DescribeConnectionResponse);
+
+ // Change the attributes of the connection
+ rpc ModifyConnection(YandexQuery.ModifyConnectionRequest) returns (YandexQuery.ModifyConnectionResponse);
+
+ // Completely delete the connection
+ rpc DeleteConnection(YandexQuery.DeleteConnectionRequest) returns (YandexQuery.DeleteConnectionResponse);
+
+ // Test the connection (permissions, network, ...)
+ rpc TestConnection(YandexQuery.TestConnectionRequest) returns (YandexQuery.TestConnectionResponse);
+
+ // Binding
+ // Binding - entity using which a schema is assigned to non-schematic data
+ // Create a binding object - bind schema with ObjectStorage object or YDS stream
+ rpc CreateBinding(YandexQuery.CreateBindingRequest) returns (YandexQuery.CreateBindingResponse);
+
+ // Get a list of bindings objects
+ rpc ListBindings(YandexQuery.ListBindingsRequest) returns (YandexQuery.ListBindingsResponse);
+
+ // Get information about the object of the binding
+ rpc DescribeBinding(YandexQuery.DescribeBindingRequest) returns (YandexQuery.DescribeBindingResponse);
+
+ // Change the attributes of the binding
+ rpc ModifyBinding(YandexQuery.ModifyBindingRequest) returns (YandexQuery.ModifyBindingResponse);
+
+ // Completely delete the binding
+ rpc DeleteBinding(YandexQuery.DeleteBindingRequest) returns (YandexQuery.DeleteBindingResponse);
+}
diff --git a/ydb/public/api/protos/annotations/sensitive.proto b/ydb/public/api/protos/annotations/sensitive.proto
index 081471030a..7c1ad048cc 100644
--- a/ydb/public/api/protos/annotations/sensitive.proto
+++ b/ydb/public/api/protos/annotations/sensitive.proto
@@ -1,12 +1,12 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package Ydb;
-option java_package = "com.yandex.ydb";
-
-import "google/protobuf/descriptor.proto";
-
-
-extend google.protobuf.FieldOptions {
- bool sensitive = 87655; // do not print this field
-}
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package Ydb;
+option java_package = "com.yandex.ydb";
+
+import "google/protobuf/descriptor.proto";
+
+
+extend google.protobuf.FieldOptions {
+ bool sensitive = 87655; // do not print this field
+}
diff --git a/ydb/public/api/protos/annotations/ya.make b/ydb/public/api/protos/annotations/ya.make
index a4d2dab483..3aa0c3c25c 100644
--- a/ydb/public/api/protos/annotations/ya.make
+++ b/ydb/public/api/protos/annotations/ya.make
@@ -6,7 +6,7 @@ OWNER(
)
SRCS(
- sensitive.proto
+ sensitive.proto
validation.proto
)
diff --git a/ydb/public/api/protos/draft/datastreams.proto b/ydb/public/api/protos/draft/datastreams.proto
index 5c1354288a..816ad374fa 100644
--- a/ydb/public/api/protos/draft/datastreams.proto
+++ b/ydb/public/api/protos/draft/datastreams.proto
@@ -512,7 +512,7 @@ message PutRecordRequest {
// Hash value used to explicitly determine the shard
string explicit_hash_key = 3;
// Used as input to hash function that maps partition key to a specific shard
- string partition_key = 4;
+ string partition_key = 4;
string sequence_number_for_ordering = 5;
// Name of the stream to put record to
string stream_name = 6;
diff --git a/ydb/public/api/protos/ya.make b/ydb/public/api/protos/ya.make
index 8a156403a3..08e9d19937 100644
--- a/ydb/public/api/protos/ya.make
+++ b/ydb/public/api/protos/ya.make
@@ -44,7 +44,7 @@ SRCS(
ydb_table.proto
ydb_value.proto
ydb_s3_internal.proto
- yq.proto
+ yq.proto
)
CPP_PROTO_PLUGIN0(validation ydb/core/grpc_services/validation)
diff --git a/ydb/public/api/protos/yq.proto b/ydb/public/api/protos/yq.proto
index 6aa7169a89..ad67fb6169 100644
--- a/ydb/public/api/protos/yq.proto
+++ b/ydb/public/api/protos/yq.proto
@@ -1,85 +1,85 @@
-syntax = "proto3";
-option cc_enable_arenas = true;
-
-package YandexQuery;
-option java_package = "com.yandex.query";
-option java_outer_classname = "YandexQueryProtos";
-
+syntax = "proto3";
+option cc_enable_arenas = true;
+
+package YandexQuery;
+option java_package = "com.yandex.query";
+option java_outer_classname = "YandexQueryProtos";
+
import "ydb/public/api/protos/annotations/sensitive.proto";
import "ydb/public/api/protos/annotations/validation.proto";
import "ydb/public/api/protos/ydb_operation.proto";
import "ydb/public/api/protos/ydb_value.proto";
import "ydb/public/api/protos/ydb_issue_message.proto";
-
-import "google/protobuf/duration.proto";
-import "google/protobuf/timestamp.proto";
-import "google/protobuf/empty.proto";
-
-////////////////////////////////////////////////////////////
-
-// === Query API ===
-
-// Header: x-yq-scope => yandexcloud://cloud_id/folder_id
-
-message Acl {
- enum Visibility {
- VISIBILITY_UNSPECIFIED = 0;
- PRIVATE = 1; // Visibility only for the creator of the entity
- SCOPE = 2; // Visibility for subjects within scope
- }
- Visibility visibility = 1;
-}
-
-message Limits {
- // Used only for streaming queries
+
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
+import "google/protobuf/empty.proto";
+
+////////////////////////////////////////////////////////////
+
+// === Query API ===
+
+// Header: x-yq-scope => yandexcloud://cloud_id/folder_id
+
+message Acl {
+ enum Visibility {
+ VISIBILITY_UNSPECIFIED = 0;
+ PRIVATE = 1; // Visibility only for the creator of the entity
+ SCOPE = 2; // Visibility for subjects within scope
+ }
+ Visibility visibility = 1;
+}
+
+message Limits {
+ // Used only for streaming queries
int64 vcpu_rate_limit = 1 [(Ydb.value) = ">= 0"]; // 0.01 vcpu per second
int64 flow_rate_limit = 2 [(Ydb.value) = ">= 0"]; // Bytes per second
int64 vcpu_time_limit = 3 [(Ydb.value) = ">= 0"]; // Milliseconds per second
-
- // Used only for analytics queries
+
+ // Used only for analytics queries
int64 max_result_size = 4 [(Ydb.value) = ">= 0"]; // Bytes
int64 max_result_rows = 5 [(Ydb.value) = ">= 0"]; // Count
-
- // Common limits
+
+ // Common limits
int64 memory_limit = 6 [(Ydb.value) = ">= 0"]; // Bytes
- google.protobuf.Duration result_ttl = 7;
-}
-
-enum ExecuteMode {
- EXECUTE_MODE_UNSPECIFIED = 0;
- SAVE = 1; // Save a query without changing its state
- PARSE = 2; // Parse the query
- COMPILE = 3; // Parse and compile the query
- VALIDATE = 4; // Parse, compile and validate the query
- EXPLAIN = 5; // High-level query plan that specifies only physical operations and non-temporary table names
- RUN = 6; // Do all the previous + execution of the query
-}
-
-enum QueryAction {
- QUERY_ACTION_UNSPECIFIED = 0;
- PAUSE = 1; // Pause the query, with the possibility of its quick resumption
+ google.protobuf.Duration result_ttl = 7;
+}
+
+enum ExecuteMode {
+ EXECUTE_MODE_UNSPECIFIED = 0;
+ SAVE = 1; // Save a query without changing its state
+ PARSE = 2; // Parse the query
+ COMPILE = 3; // Parse and compile the query
+ VALIDATE = 4; // Parse, compile and validate the query
+ EXPLAIN = 5; // High-level query plan that specifies only physical operations and non-temporary table names
+ RUN = 6; // Do all the previous + execution of the query
+}
+
+enum QueryAction {
+ QUERY_ACTION_UNSPECIFIED = 0;
+ PAUSE = 1; // Pause the query, with the possibility of its quick resumption
PAUSE_GRACEFULLY = 2; // Similar to PAUSE, only suspends the query allowing it to pause in checkpoint. Can work for a long time
- ABORT = 3; // Stop the query
+ ABORT = 3; // Stop the query
ABORT_GRACEFULLY = 4; // Similar to ABORT, only stops the query in checkpoint
- RESUME = 5; // Resumes the execution of the query. Works only for PAUSE queries
-}
-
-enum StateLoadMode {
- STATE_LOAD_MODE_UNSPECIFIED = 0;
+ RESUME = 5; // Resumes the execution of the query. Works only for PAUSE queries
+}
+
+enum StateLoadMode {
+ STATE_LOAD_MODE_UNSPECIFIED = 0;
EMPTY = 1; // Start the query with an empty state
- FROM_LAST_CHECKPOINT = 2; // Start the query with the state that is saved in the last checkpoint
-}
-
-// For streaming queries only
-message StreamingDisposition {
- message FromTime {
- google.protobuf.Timestamp timestamp = 1;
- }
-
- message TimeAgo {
- google.protobuf.Duration duration = 1;
- }
-
+ FROM_LAST_CHECKPOINT = 2; // Start the query with the state that is saved in the last checkpoint
+}
+
+// For streaming queries only
+message StreamingDisposition {
+ message FromTime {
+ google.protobuf.Timestamp timestamp = 1;
+ }
+
+ message TimeAgo {
+ google.protobuf.Duration duration = 1;
+ }
+
message FromLastCheckpoint {
// By default if new query streams set doesn't equal to old query streams set,
// error will occur and query won't be allowed to load offsets for streams for the last checkpoint.
@@ -88,65 +88,65 @@ message StreamingDisposition {
bool force = 1;
}
- oneof disposition {
+ oneof disposition {
google.protobuf.Empty oldest = 1; // Start processing with the oldest offset
google.protobuf.Empty fresh = 2; // Start processing with the fresh offset
- FromTime from_time = 3; // Start processing with offset from the specified time
- TimeAgo time_ago = 4; // Start processing with offset some time ago
+ FromTime from_time = 3; // Start processing with offset from the specified time
+ TimeAgo time_ago = 4; // Start processing with offset some time ago
FromLastCheckpoint from_last_checkpoint = 5; // Start processing with offset which corresponds to the last checkpoint
- }
-}
-
-// Query information that the subject can change
-message QueryContent {
- enum QueryType {
- QUERY_TYPE_UNSPECIFIED = 0;
- ANALYTICS = 1; // Analytical query (used for analytical data processing for example to work with YDB, ClickHouse, ...)
- STREAMING = 2; // Streaming query (used for streaming data processing, such as working with YDS)
- }
+ }
+}
+
+// Query information that the subject can change
+message QueryContent {
+ enum QueryType {
+ QUERY_TYPE_UNSPECIFIED = 0;
+ ANALYTICS = 1; // Analytical query (used for analytical data processing for example to work with YDB, ClickHouse, ...)
+ STREAMING = 2; // Streaming query (used for streaming data processing, such as working with YDS)
+ }
QueryType type = 1;
- string name = 2 [(Ydb.length).le = 1024];
- Acl acl = 3;
- Limits limits = 4;
- string text = 5 [(Ydb.length).le = 102400]; // The text of the query itself
- bool automatic = 6; // Is used for queries that are created by automatic systems (robots, jdbc driver, ...)
- string description = 7 [(Ydb.length).le = 10240]; // Description of the query, there can be any text
-}
-
-message CommonMeta {
- string id = 1 [(Ydb.length).range = {min: 1, max: 1024}];
- string created_by = 2 [(Ydb.length).range = {min: 1, max: 1024}];
- string modified_by = 3 [(Ydb.length).range = {min: 1, max: 1024}];
- google.protobuf.Timestamp created_at = 4;
- google.protobuf.Timestamp modified_at = 5;
- int64 revision = 6 [(Ydb.value) = ">= 0"]; // Entity version, increases with each change
-}
-
-message QueryMeta {
- enum ComputeStatus {
- COMPUTE_STATUS_UNSPECIFIED = 0;
- STARTING = 1; // Start execution of the action on query
- ABORTED_BY_USER = 2; // Query aborted by user
- ABORTED_BY_SYSTEM = 3; // Query aborted by system
- ABORTING_BY_USER = 4; // Query aborting by user
- ABORTING_BY_SYSTEM = 5; // Query aborting by system
- RESUMING = 6; // Resuming query execution from PAUSED status
- RUNNING = 7; // Query started for execution
- COMPLETED = 8; // Query completed successfully
+ string name = 2 [(Ydb.length).le = 1024];
+ Acl acl = 3;
+ Limits limits = 4;
+ string text = 5 [(Ydb.length).le = 102400]; // The text of the query itself
+ bool automatic = 6; // Is used for queries that are created by automatic systems (robots, jdbc driver, ...)
+ string description = 7 [(Ydb.length).le = 10240]; // Description of the query, there can be any text
+}
+
+message CommonMeta {
+ string id = 1 [(Ydb.length).range = {min: 1, max: 1024}];
+ string created_by = 2 [(Ydb.length).range = {min: 1, max: 1024}];
+ string modified_by = 3 [(Ydb.length).range = {min: 1, max: 1024}];
+ google.protobuf.Timestamp created_at = 4;
+ google.protobuf.Timestamp modified_at = 5;
+ int64 revision = 6 [(Ydb.value) = ">= 0"]; // Entity version, increases with each change
+}
+
+message QueryMeta {
+ enum ComputeStatus {
+ COMPUTE_STATUS_UNSPECIFIED = 0;
+ STARTING = 1; // Start execution of the action on query
+ ABORTED_BY_USER = 2; // Query aborted by user
+ ABORTED_BY_SYSTEM = 3; // Query aborted by system
+ ABORTING_BY_USER = 4; // Query aborting by user
+ ABORTING_BY_SYSTEM = 5; // Query aborting by system
+ RESUMING = 6; // Resuming query execution from PAUSED status
+ RUNNING = 7; // Query started for execution
+ COMPLETED = 8; // Query completed successfully
COMPLETING = 12; // Finalizing query before become COMPLETED
- FAILED = 9; // Query completed with errors
+ FAILED = 9; // Query completed with errors
FAILING = 13; // Finalizing query before become FAILED
PAUSED = 11; // Query paused
- PAUSING = 10; // Query starts pausing
- }
-
- CommonMeta common = 1;
- google.protobuf.Timestamp started_at = 2;
- google.protobuf.Timestamp finished_at = 3;
- ExecuteMode execute_mode = 4;
- ComputeStatus status = 5;
- int64 last_job_query_revision = 6;
- string last_job_id = 7;
+ PAUSING = 10; // Query starts pausing
+ }
+
+ CommonMeta common = 1;
+ google.protobuf.Timestamp started_at = 2;
+ google.protobuf.Timestamp finished_at = 3;
+ ExecuteMode execute_mode = 4;
+ ComputeStatus status = 5;
+ int64 last_job_query_revision = 6;
+ string last_job_id = 7;
google.protobuf.Timestamp expire_at = 8;
google.protobuf.Timestamp result_expire_at = 9;
string started_by = 10;
@@ -157,109 +157,109 @@ message QueryMeta {
// One of the versions of this query has fully saved checkpoint.
// If this flag is not set streaming disposition mode "from last checkpoint" can't be used.
bool has_saved_checkpoints = 13;
-}
-
-message BriefQuery {
+}
+
+message BriefQuery {
QueryContent.QueryType type = 1;
- string name = 2 [(Ydb.length).le = 1024];
- QueryMeta meta = 3;
- Acl.Visibility visibility = 4;
- bool automatic = 5;
-}
-
-message QueryPlan {
- string json = 1; // No validation because generated on server side
-}
-
+ string name = 2 [(Ydb.length).le = 1024];
+ QueryMeta meta = 3;
+ Acl.Visibility visibility = 4;
+ bool automatic = 5;
+}
+
+message QueryPlan {
+ string json = 1; // No validation because generated on server side
+}
+
message QueryAst {
string data = 1;
}
-message ResultSetMeta {
- repeated Ydb.Column column = 1;
- int64 rows_count = 2 [(Ydb.value) = ">= 0"];
- bool truncated = 3;
-}
-
-message Query {
- QueryMeta meta = 1;
- QueryContent content = 2;
- QueryPlan plan = 3;
- repeated Ydb.Issue.IssueMessage issue = 4;
- repeated Ydb.Issue.IssueMessage transient_issue = 5;
- QueryStatistics statistics = 6;
- repeated ResultSetMeta result_set_meta = 7;
+message ResultSetMeta {
+ repeated Ydb.Column column = 1;
+ int64 rows_count = 2 [(Ydb.value) = ">= 0"];
+ bool truncated = 3;
+}
+
+message Query {
+ QueryMeta meta = 1;
+ QueryContent content = 2;
+ QueryPlan plan = 3;
+ repeated Ydb.Issue.IssueMessage issue = 4;
+ repeated Ydb.Issue.IssueMessage transient_issue = 5;
+ QueryStatistics statistics = 6;
+ repeated ResultSetMeta result_set_meta = 7;
QueryAst ast = 8;
-}
-
-message QueryStatistics {
- string json = 1; // No validation because generated on server side
-}
-
-// Create a new query
-message CreateQueryRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- QueryContent content = 2;
- ExecuteMode execute_mode = 3;
+}
+
+message QueryStatistics {
+ string json = 1; // No validation because generated on server side
+}
+
+// Create a new query
+message CreateQueryRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ QueryContent content = 2;
+ ExecuteMode execute_mode = 3;
StreamingDisposition disposition = 4;
- string idempotency_key = 5 [(Ydb.length).le = 1024];
-}
-
-message CreateQueryResponse {
- Ydb.Operations.Operation operation = 1; // CreateQueryResult
-}
-
-message CreateQueryResult {
- string query_id = 1 [(Ydb.length).le = 1024];
-}
-
+ string idempotency_key = 5 [(Ydb.length).le = 1024];
+}
+
+message CreateQueryResponse {
+ Ydb.Operations.Operation operation = 1; // CreateQueryResult
+}
+
+message CreateQueryResult {
+ string query_id = 1 [(Ydb.length).le = 1024];
+}
+
enum AutomaticType {
AUTOMATIC_TYPE_UNSPECIFIED = 0;
AUTOMATIC = 1;
NOT_AUTOMATIC = 2;
}
-// Getting brief information about queries
-message ListQueriesRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- string page_token = 2 [(Ydb.length).le = 1024];
- int32 limit = 3 [(Ydb.value) = "[1; 100]"];
-
- message Filter {
- QueryContent.QueryType query_type = 1;
- repeated QueryMeta.ComputeStatus status = 2 [(Ydb.size).le = 20];
- repeated ExecuteMode mode = 3 [(Ydb.size).le = 20];
- string name = 4 [(Ydb.length).le = 1024]; // queries whose name contains the filter.name substring
- bool created_by_me = 5;
+// Getting brief information about queries
+message ListQueriesRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ string page_token = 2 [(Ydb.length).le = 1024];
+ int32 limit = 3 [(Ydb.value) = "[1; 100]"];
+
+ message Filter {
+ QueryContent.QueryType query_type = 1;
+ repeated QueryMeta.ComputeStatus status = 2 [(Ydb.size).le = 20];
+ repeated ExecuteMode mode = 3 [(Ydb.size).le = 20];
+ string name = 4 [(Ydb.length).le = 1024]; // queries whose name contains the filter.name substring
+ bool created_by_me = 5;
Acl.Visibility visibility = 6;
AutomaticType automatic = 7;
- }
- Filter filter = 4;
-}
-
-message ListQueriesResponse {
- Ydb.Operations.Operation operation = 1; // ListQueriesResult
-}
-
-message ListQueriesResult {
- repeated BriefQuery query = 1;
- string next_page_token = 2 [(Ydb.length).le = 1024];
-}
-
-// Getting complete information about the query
-message DescribeQueryRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- string query_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
-}
-
-message DescribeQueryResponse {
- Ydb.Operations.Operation operation = 1; // DescribeQueryResult
-}
-
-message DescribeQueryResult {
- Query query = 1;
-}
-
+ }
+ Filter filter = 4;
+}
+
+message ListQueriesResponse {
+ Ydb.Operations.Operation operation = 1; // ListQueriesResult
+}
+
+message ListQueriesResult {
+ repeated BriefQuery query = 1;
+ string next_page_token = 2 [(Ydb.length).le = 1024];
+}
+
+// Getting complete information about the query
+message DescribeQueryRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ string query_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
+}
+
+message DescribeQueryResponse {
+ Ydb.Operations.Operation operation = 1; // DescribeQueryResult
+}
+
+message DescribeQueryResult {
+ Query query = 1;
+}
+
// Getting status of the query
message GetQueryStatusRequest {
Ydb.Operations.OperationParams operation_params = 1;
@@ -275,58 +275,58 @@ message GetQueryStatusResult {
int64 meta_revision = 2;
}
-// Complete removal of query. Recovery of the query after this operation is not possible
-message DeleteQueryRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- string query_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
- int64 previous_revision = 3 [(Ydb.value) = ">= 0"];
- string idempotency_key = 4 [(Ydb.length).le = 1024];
-}
-
-message DeleteQueryResponse {
- Ydb.Operations.Operation operation = 1; // DeleteQueryResult
-}
-
-message DeleteQueryResult {
-}
-
-// Change query information with launch policy option. All fields must be filled in the request. The query changes completely
-message ModifyQueryRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- string query_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
- QueryContent content = 3;
- ExecuteMode execute_mode = 4;
- StreamingDisposition disposition = 5;
+// Complete removal of query. Recovery of the query after this operation is not possible
+message DeleteQueryRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ string query_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
+ int64 previous_revision = 3 [(Ydb.value) = ">= 0"];
+ string idempotency_key = 4 [(Ydb.length).le = 1024];
+}
+
+message DeleteQueryResponse {
+ Ydb.Operations.Operation operation = 1; // DeleteQueryResult
+}
+
+message DeleteQueryResult {
+}
+
+// Change query information with launch policy option. All fields must be filled in the request. The query changes completely
+message ModifyQueryRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ string query_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
+ QueryContent content = 3;
+ ExecuteMode execute_mode = 4;
+ StreamingDisposition disposition = 5;
StateLoadMode state_load_mode = 6;
- int64 previous_revision = 7 [(Ydb.value) = ">= 0"];
- string idempotency_key = 8 [(Ydb.length).le = 1024];
-}
-
-message ModifyQueryResponse {
- Ydb.Operations.Operation operation = 1; // ModifyQueryResult
-}
-
-message ModifyQueryResult {
-}
-
-// Managing query status (pause, abort, resume, ...)
-message ControlQueryRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- string query_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
- QueryAction action = 3;
- int64 previous_revision = 4 [(Ydb.value) = ">= 0"];
- string idempotency_key = 5 [(Ydb.length).le = 1024];
-}
-
-message ControlQueryResponse {
- Ydb.Operations.Operation operation = 1; // ControlQueryResult
-}
-
-message ControlQueryResult {
-}
-
-// === Job API ===
-
+ int64 previous_revision = 7 [(Ydb.value) = ">= 0"];
+ string idempotency_key = 8 [(Ydb.length).le = 1024];
+}
+
+message ModifyQueryResponse {
+ Ydb.Operations.Operation operation = 1; // ModifyQueryResult
+}
+
+message ModifyQueryResult {
+}
+
+// Managing query status (pause, abort, resume, ...)
+message ControlQueryRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ string query_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
+ QueryAction action = 3;
+ int64 previous_revision = 4 [(Ydb.value) = ">= 0"];
+ string idempotency_key = 5 [(Ydb.length).le = 1024];
+}
+
+message ControlQueryResponse {
+ Ydb.Operations.Operation operation = 1; // ControlQueryResult
+}
+
+message ControlQueryResult {
+}
+
+// === Job API ===
+
message BriefJob {
CommonMeta meta = 1;
QueryMeta query_meta = 3;
@@ -336,44 +336,44 @@ message BriefJob {
google.protobuf.Timestamp expire_at = 12;
}
-message Job {
- CommonMeta meta = 1;
- string text = 2;
- QueryMeta query_meta = 3;
- QueryPlan plan = 4;
- repeated Ydb.Issue.IssueMessage issue = 5;
- QueryStatistics statistics = 6;
- repeated ResultSetMeta result_set_meta = 7;
+message Job {
+ CommonMeta meta = 1;
+ string text = 2;
+ QueryMeta query_meta = 3;
+ QueryPlan plan = 4;
+ repeated Ydb.Issue.IssueMessage issue = 5;
+ QueryStatistics statistics = 6;
+ repeated ResultSetMeta result_set_meta = 7;
QueryAst ast = 8;
string query_name = 9;
Acl acl = 10;
bool automatic = 11;
google.protobuf.Timestamp expire_at = 12;
-}
-
-// Information about recent query runs
-message ListJobsRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- string page_token = 2 [(Ydb.length).le = 1024];
- int32 limit = 3 [(Ydb.value) = "[1; 100]"];
- string query_id = 5; // deprecated
-
- message Filter {
- string query_id = 1 [(Ydb.length).le = 1024];
- bool created_by_me = 2;
- }
- Filter filter = 4;
-}
-
-message ListJobsResponse {
- Ydb.Operations.Operation operation = 1; // ListJobsResult
-}
-
-message ListJobsResult {
+}
+
+// Information about recent query runs
+message ListJobsRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ string page_token = 2 [(Ydb.length).le = 1024];
+ int32 limit = 3 [(Ydb.value) = "[1; 100]"];
+ string query_id = 5; // deprecated
+
+ message Filter {
+ string query_id = 1 [(Ydb.length).le = 1024];
+ bool created_by_me = 2;
+ }
+ Filter filter = 4;
+}
+
+message ListJobsResponse {
+ Ydb.Operations.Operation operation = 1; // ListJobsResult
+}
+
+message ListJobsResult {
repeated BriefJob job = 1;
- string next_page_token = 2 [(Ydb.length).le = 1024];
-}
-
+ string next_page_token = 2 [(Ydb.length).le = 1024];
+}
+
// Getting information about the job
message DescribeJobRequest {
Ydb.Operations.OperationParams operation_params = 1;
@@ -388,70 +388,70 @@ message DescribeJobResult {
Job job = 1;
}
-// === Connection API ===
-
-message CurrentIAMTokenAuth {
-}
-
+// === Connection API ===
+
+message CurrentIAMTokenAuth {
+}
+
message NoneAuth {
}
-message ServiceAccountAuth {
- string id = 1 [(Ydb.length).le = 1024];
-}
-
-message IamAuth {
- oneof identity {
- CurrentIAMTokenAuth current_iam = 1;
- ServiceAccountAuth service_account = 2;
+message ServiceAccountAuth {
+ string id = 1 [(Ydb.length).le = 1024];
+}
+
+message IamAuth {
+ oneof identity {
+ CurrentIAMTokenAuth current_iam = 1;
+ ServiceAccountAuth service_account = 2;
NoneAuth none = 3;
- }
-}
-
-message DataStreams {
- string database_id = 1 [(Ydb.length).le = 1024];
- IamAuth auth = 2;
-
- // for internal usage
- string endpoint = 3 [(Ydb.length).le = 1024];
- string database = 4 [(Ydb.length).le = 1024];
- bool secure = 5;
-}
-
+ }
+}
+
+message DataStreams {
+ string database_id = 1 [(Ydb.length).le = 1024];
+ IamAuth auth = 2;
+
+ // for internal usage
+ string endpoint = 3 [(Ydb.length).le = 1024];
+ string database = 4 [(Ydb.length).le = 1024];
+ bool secure = 5;
+}
+
message Monitoring {
string project = 1 [(Ydb.length).le = 200];
string cluster = 2 [(Ydb.length).le = 200];
IamAuth auth = 3;
}
-message YdbDatabase {
- string database_id = 1 [(Ydb.length).le = 1024];
- IamAuth auth = 2;
-
- // for internal usage
- string endpoint = 3 [(Ydb.length).le = 1024];
- string database = 4 [(Ydb.length).le = 1024];
- bool secure = 5;
-}
-
-message ClickHouseCluster {
- string database_id = 1 [(Ydb.length).le = 1024];
- string login = 2 [(Ydb.length).le = 1024, (Ydb.sensitive) = true];
- string password = 3 [(Ydb.length).le = 1024, (Ydb.sensitive) = true];
- IamAuth auth = 4;
-
- // for internal usage
- string host = 5 [(Ydb.length).le = 1024];
- int32 port = 6 [(Ydb.value) = "[0; 65536]"];
- bool secure = 7;
-}
-
-message ObjectStorageConnection {
- string bucket = 1 [(Ydb.length).le = 1024];
- IamAuth auth = 2;
-}
-
-message ConnectionSetting {
+message YdbDatabase {
+ string database_id = 1 [(Ydb.length).le = 1024];
+ IamAuth auth = 2;
+
+ // for internal usage
+ string endpoint = 3 [(Ydb.length).le = 1024];
+ string database = 4 [(Ydb.length).le = 1024];
+ bool secure = 5;
+}
+
+message ClickHouseCluster {
+ string database_id = 1 [(Ydb.length).le = 1024];
+ string login = 2 [(Ydb.length).le = 1024, (Ydb.sensitive) = true];
+ string password = 3 [(Ydb.length).le = 1024, (Ydb.sensitive) = true];
+ IamAuth auth = 4;
+
+ // for internal usage
+ string host = 5 [(Ydb.length).le = 1024];
+ int32 port = 6 [(Ydb.value) = "[0; 65536]"];
+ bool secure = 7;
+}
+
+message ObjectStorageConnection {
+ string bucket = 1 [(Ydb.length).le = 1024];
+ IamAuth auth = 2;
+}
+
+message ConnectionSetting {
enum ConnectionType {
CONNECTION_TYPE_UNSPECIFIED = 0;
YDB_DATABASE = 1;
@@ -461,279 +461,279 @@ message ConnectionSetting {
MONITORING = 5;
}
- oneof connection {
- YdbDatabase ydb_database = 1;
- ClickHouseCluster clickhouse_cluster = 2;
- DataStreams data_streams = 3;
- ObjectStorageConnection object_storage = 4;
+ oneof connection {
+ YdbDatabase ydb_database = 1;
+ ClickHouseCluster clickhouse_cluster = 2;
+ DataStreams data_streams = 3;
+ ObjectStorageConnection object_storage = 4;
Monitoring monitoring = 5;
- }
-}
-
-message ConnectionContent {
- string name = 1 [(Ydb.length).range = {min: 1, max: 1024}];
- ConnectionSetting setting = 2;
- Acl acl = 3;
- string description = 4 [(Ydb.length).le = 10240];
-}
-
-message Connection {
- ConnectionContent content = 1;
- CommonMeta meta = 2;
-}
-
-// Create a new connection
-message CreateConnectionRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- ConnectionContent content = 2;
- string idempotency_key = 3 [(Ydb.length).le = 1024];
-}
-
-message CreateConnectionResponse {
- Ydb.Operations.Operation operation = 1; // CreateConnectionResult
-}
-
-message CreateConnectionResult {
- string connection_id = 1 [(Ydb.length).range = {min: 1, max: 1024}];
-}
-
-// Getting information about connections
-message ListConnectionsRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- string page_token = 2 [(Ydb.length).le = 1024];
- int32 limit = 3 [(Ydb.value) = "[1; 100]"];
-
- message Filter {
- string name = 1 [(Ydb.length).le = 1024]; // connections whose name contains the filter.name substring
- bool created_by_me = 2;
+ }
+}
+
+message ConnectionContent {
+ string name = 1 [(Ydb.length).range = {min: 1, max: 1024}];
+ ConnectionSetting setting = 2;
+ Acl acl = 3;
+ string description = 4 [(Ydb.length).le = 10240];
+}
+
+message Connection {
+ ConnectionContent content = 1;
+ CommonMeta meta = 2;
+}
+
+// Create a new connection
+message CreateConnectionRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ ConnectionContent content = 2;
+ string idempotency_key = 3 [(Ydb.length).le = 1024];
+}
+
+message CreateConnectionResponse {
+ Ydb.Operations.Operation operation = 1; // CreateConnectionResult
+}
+
+message CreateConnectionResult {
+ string connection_id = 1 [(Ydb.length).range = {min: 1, max: 1024}];
+}
+
+// Getting information about connections
+message ListConnectionsRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ string page_token = 2 [(Ydb.length).le = 1024];
+ int32 limit = 3 [(Ydb.value) = "[1; 100]"];
+
+ message Filter {
+ string name = 1 [(Ydb.length).le = 1024]; // connections whose name contains the filter.name substring
+ bool created_by_me = 2;
ConnectionSetting.ConnectionType connection_type = 3;
- }
- Filter filter = 4;
-}
-
-message ListConnectionsResponse {
- Ydb.Operations.Operation operation = 1; // ListConnectionsResult
-}
-
-message ListConnectionsResult {
- repeated Connection connection = 1;
- string next_page_token = 2 [(Ydb.length).le = 1024];
-}
-
-// Getting information about the connection
-message DescribeConnectionRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- string connection_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
-}
-
-message DescribeConnectionResponse {
- Ydb.Operations.Operation operation = 1; // DescribeConnectionResult
-}
-
-message DescribeConnectionResult {
- Connection connection = 1;
-}
-
-// Change connection information. All fields must be filled in the request. The connection changes completely
-message ModifyConnectionRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- string connection_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
- ConnectionContent content = 3;
- int64 previous_revision = 4 [(Ydb.value) = ">= 0"];
- string idempotency_key = 5 [(Ydb.length).le = 1024];
-}
-
-message ModifyConnectionResponse {
- Ydb.Operations.Operation operation = 1; // ModifyConnectionResult
-}
-
-message ModifyConnectionResult {
-}
-
-// Complete removal of connection. Recovery of the connection after this operation is not possible
-message DeleteConnectionRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- string connection_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
- int64 previous_revision = 3 [(Ydb.value) = ">= 0"];
- string idempotency_key = 4 [(Ydb.length).le = 1024];
-}
-
-message DeleteConnectionResponse {
- Ydb.Operations.Operation operation = 1; // DeleteConnectionResult
-}
-
-message DeleteConnectionResult {
-}
-
-message TestConnectionRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- ConnectionSetting setting = 2;
-}
-
-message TestConnectionResponse {
- Ydb.Operations.Operation operation = 1; // TestConnectionResult
-}
-
-message TestConnectionResult {
-}
-
-// ResultSet API
-
-// Getting the result of the query execution
-message GetResultDataRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- string query_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
- int32 result_set_index = 3 [(Ydb.value) = ">= 0"];
- int64 offset = 4 [(Ydb.value) = ">= 0"];
+ }
+ Filter filter = 4;
+}
+
+message ListConnectionsResponse {
+ Ydb.Operations.Operation operation = 1; // ListConnectionsResult
+}
+
+message ListConnectionsResult {
+ repeated Connection connection = 1;
+ string next_page_token = 2 [(Ydb.length).le = 1024];
+}
+
+// Getting information about the connection
+message DescribeConnectionRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ string connection_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
+}
+
+message DescribeConnectionResponse {
+ Ydb.Operations.Operation operation = 1; // DescribeConnectionResult
+}
+
+message DescribeConnectionResult {
+ Connection connection = 1;
+}
+
+// Change connection information. All fields must be filled in the request. The connection changes completely
+message ModifyConnectionRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ string connection_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
+ ConnectionContent content = 3;
+ int64 previous_revision = 4 [(Ydb.value) = ">= 0"];
+ string idempotency_key = 5 [(Ydb.length).le = 1024];
+}
+
+message ModifyConnectionResponse {
+ Ydb.Operations.Operation operation = 1; // ModifyConnectionResult
+}
+
+message ModifyConnectionResult {
+}
+
+// Complete removal of connection. Recovery of the connection after this operation is not possible
+message DeleteConnectionRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ string connection_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
+ int64 previous_revision = 3 [(Ydb.value) = ">= 0"];
+ string idempotency_key = 4 [(Ydb.length).le = 1024];
+}
+
+message DeleteConnectionResponse {
+ Ydb.Operations.Operation operation = 1; // DeleteConnectionResult
+}
+
+message DeleteConnectionResult {
+}
+
+message TestConnectionRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ ConnectionSetting setting = 2;
+}
+
+message TestConnectionResponse {
+ Ydb.Operations.Operation operation = 1; // TestConnectionResult
+}
+
+message TestConnectionResult {
+}
+
+// ResultSet API
+
+// Getting the result of the query execution
+message GetResultDataRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ string query_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
+ int32 result_set_index = 3 [(Ydb.value) = ">= 0"];
+ int64 offset = 4 [(Ydb.value) = ">= 0"];
int64 limit = 5 [(Ydb.value) = "[1; 1000]"];
-}
-
-message GetResultDataResponse {
- Ydb.Operations.Operation operation = 1; // GetResultDataResult
-}
-
-message GetResultDataResult {
- Ydb.ResultSet result_set = 1;
-}
-
-// Binding API
-
-message Schema {
- repeated Ydb.Column column = 1 [(Ydb.size).le = 100];
-}
-
-message DataStreamsBinding {
- string stream_name = 1 [(Ydb.length).range = {min: 1, max: 1024}];
- string format = 2 [(Ydb.length).le = 1024];
- string compression = 3 [(Ydb.length).le = 1024];
- Schema schema = 4;
+}
+
+message GetResultDataResponse {
+ Ydb.Operations.Operation operation = 1; // GetResultDataResult
+}
+
+message GetResultDataResult {
+ Ydb.ResultSet result_set = 1;
+}
+
+// Binding API
+
+message Schema {
+ repeated Ydb.Column column = 1 [(Ydb.size).le = 100];
+}
+
+message DataStreamsBinding {
+ string stream_name = 1 [(Ydb.length).range = {min: 1, max: 1024}];
+ string format = 2 [(Ydb.length).le = 1024];
+ string compression = 3 [(Ydb.length).le = 1024];
+ Schema schema = 4;
map<string, string> format_setting = 5 [(Ydb.size).le = 100];
-}
-
-message ObjectStorageBinding {
- message Subset {
- string path_pattern = 1 [(Ydb.length).range = {min: 1, max: 1024}];
- string format = 2 [(Ydb.length).le = 1024];
- map<string, string> format_setting = 3 [(Ydb.size).le = 100];
- string compression = 4 [(Ydb.length).le = 1024];
- Schema schema = 5;
- }
-
- repeated Subset subset = 1;
-}
-
-message BindingSetting {
+}
+
+message ObjectStorageBinding {
+ message Subset {
+ string path_pattern = 1 [(Ydb.length).range = {min: 1, max: 1024}];
+ string format = 2 [(Ydb.length).le = 1024];
+ map<string, string> format_setting = 3 [(Ydb.size).le = 100];
+ string compression = 4 [(Ydb.length).le = 1024];
+ Schema schema = 5;
+ }
+
+ repeated Subset subset = 1;
+}
+
+message BindingSetting {
enum BindingType {
BINDING_TYPE_UNSPECIFIED = 0;
DATA_STREAMS = 1;
OBJECT_STORAGE = 2;
}
- oneof binding {
- DataStreamsBinding data_streams = 1;
- ObjectStorageBinding object_storage = 2;
- }
-}
-
-message BriefBinding {
- string name = 1 [(Ydb.length).range = {min: 1, max: 1024}];
- string connection_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
- CommonMeta meta = 3;
+ oneof binding {
+ DataStreamsBinding data_streams = 1;
+ ObjectStorageBinding object_storage = 2;
+ }
+}
+
+message BriefBinding {
+ string name = 1 [(Ydb.length).range = {min: 1, max: 1024}];
+ string connection_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
+ CommonMeta meta = 3;
BindingSetting.BindingType type = 4;
-}
-
-message BindingContent {
- string name = 1 [(Ydb.length).range = {min: 1, max: 1024}];
- string connection_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
- BindingSetting setting = 3;
- Acl acl = 4;
- string description = 5 [(Ydb.length).le = 10240];
-}
-
-message Binding {
- BindingContent content = 1;
- CommonMeta meta = 2;
-}
-
-// Create a new binding
-message CreateBindingRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- BindingContent content = 2;
- string idempotency_key = 3 [(Ydb.length).le = 1024];
-}
-
-message CreateBindingResponse {
- Ydb.Operations.Operation operation = 1; // CreateBindingResult
-}
-
-message CreateBindingResult {
- string binding_id = 1 [(Ydb.length).range = {min: 1, max: 1024}];
-}
-
-// Getting information about bindings
-message ListBindingsRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- string page_token = 2 [(Ydb.length).le = 1024];
- int32 limit = 3 [(Ydb.value) = "[1; 100]"];
-
- message Filter {
- string connection_id = 1 [(Ydb.length).le = 1024];
- string name = 2 [(Ydb.length).le = 1024]; // bindings whose name contains the filter.name substring
- bool created_by_me = 3;
- }
- Filter filter = 4;
-}
-
-message ListBindingsResponse {
- Ydb.Operations.Operation operation = 1; // ListBindingsResult
-}
-
-message ListBindingsResult {
- repeated BriefBinding binding = 1;
- string next_page_token = 2 [(Ydb.length).le = 1024];
-}
-
-// Getting information about the binding
-message DescribeBindingRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- string binding_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
-}
-
-message DescribeBindingResponse {
- Ydb.Operations.Operation operation = 1; // DescribeBindingResult
-}
-
-message DescribeBindingResult {
- Binding binding = 1;
-}
-
-// Change binding information. All fields must be filled in the request. The binding changes completely
-message ModifyBindingRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- string binding_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
- BindingContent content = 3;
- int64 previous_revision = 4 [(Ydb.value) = ">= 0"];
- string idempotency_key = 5 [(Ydb.length).le = 1024];
-}
-
-message ModifyBindingResponse {
- Ydb.Operations.Operation operation = 1; // ModifyBindingResult
-}
-
-message ModifyBindingResult {
-}
-
-// Complete removal of binding. Recovery of the binding after this operation is not possible
-message DeleteBindingRequest {
- Ydb.Operations.OperationParams operation_params = 1;
- string binding_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
- int64 previous_revision = 3 [(Ydb.value) = ">= 0"];
- string idempotency_key = 4 [(Ydb.length).le = 1024];
-}
-
-message DeleteBindingResponse {
- Ydb.Operations.Operation operation = 1; // DeleteBindingResult
-}
-
-message DeleteBindingResult {
+}
+
+message BindingContent {
+ string name = 1 [(Ydb.length).range = {min: 1, max: 1024}];
+ string connection_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
+ BindingSetting setting = 3;
+ Acl acl = 4;
+ string description = 5 [(Ydb.length).le = 10240];
+}
+
+message Binding {
+ BindingContent content = 1;
+ CommonMeta meta = 2;
+}
+
+// Create a new binding
+message CreateBindingRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ BindingContent content = 2;
+ string idempotency_key = 3 [(Ydb.length).le = 1024];
+}
+
+message CreateBindingResponse {
+ Ydb.Operations.Operation operation = 1; // CreateBindingResult
+}
+
+message CreateBindingResult {
+ string binding_id = 1 [(Ydb.length).range = {min: 1, max: 1024}];
+}
+
+// Getting information about bindings
+message ListBindingsRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ string page_token = 2 [(Ydb.length).le = 1024];
+ int32 limit = 3 [(Ydb.value) = "[1; 100]"];
+
+ message Filter {
+ string connection_id = 1 [(Ydb.length).le = 1024];
+ string name = 2 [(Ydb.length).le = 1024]; // bindings whose name contains the filter.name substring
+ bool created_by_me = 3;
+ }
+ Filter filter = 4;
+}
+
+message ListBindingsResponse {
+ Ydb.Operations.Operation operation = 1; // ListBindingsResult
+}
+
+message ListBindingsResult {
+ repeated BriefBinding binding = 1;
+ string next_page_token = 2 [(Ydb.length).le = 1024];
+}
+
+// Getting information about the binding
+message DescribeBindingRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ string binding_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
+}
+
+message DescribeBindingResponse {
+ Ydb.Operations.Operation operation = 1; // DescribeBindingResult
+}
+
+message DescribeBindingResult {
+ Binding binding = 1;
+}
+
+// Change binding information. All fields must be filled in the request. The binding changes completely
+message ModifyBindingRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ string binding_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
+ BindingContent content = 3;
+ int64 previous_revision = 4 [(Ydb.value) = ">= 0"];
+ string idempotency_key = 5 [(Ydb.length).le = 1024];
+}
+
+message ModifyBindingResponse {
+ Ydb.Operations.Operation operation = 1; // ModifyBindingResult
+}
+
+message ModifyBindingResult {
+}
+
+// Complete removal of binding. Recovery of the binding after this operation is not possible
+message DeleteBindingRequest {
+ Ydb.Operations.OperationParams operation_params = 1;
+ string binding_id = 2 [(Ydb.length).range = {min: 1, max: 1024}];
+ int64 previous_revision = 3 [(Ydb.value) = ">= 0"];
+ string idempotency_key = 4 [(Ydb.length).le = 1024];
+}
+
+message DeleteBindingResponse {
+ Ydb.Operations.Operation operation = 1; // DeleteBindingResult
+}
+
+message DeleteBindingResult {
}
diff --git a/ydb/public/lib/ydb_cli/common/command.h b/ydb/public/lib/ydb_cli/common/command.h
index 441206cdf7..6b53fc027c 100644
--- a/ydb/public/lib/ydb_cli/common/command.h
+++ b/ydb/public/lib/ydb_cli/common/command.h
@@ -97,7 +97,7 @@ public:
bool UseMetadataCredentials = false;
TString SaKeyFile;
TString IamEndpoint;
- TString YScope;
+ TString YScope;
TString YdbDir;
bool UseOAuthToken = true;
diff --git a/ydb/public/lib/yq/helpers.h b/ydb/public/lib/yq/helpers.h
index f07331f38f..07176e5796 100644
--- a/ydb/public/lib/yq/helpers.h
+++ b/ydb/public/lib/yq/helpers.h
@@ -6,10 +6,10 @@ namespace NYdb {
namespace NYq {
template<typename T>
-T CreateYqSettings(const TString& folderId)
+T CreateYqSettings(const TString& folderId)
{
T settings;
- settings.Header_ = {{ "x-yq-scope", TScope::YandexCloudScopeSchema + "://" + folderId }};
+ settings.Header_ = {{ "x-yq-scope", TScope::YandexCloudScopeSchema + "://" + folderId }};
return settings;
}
diff --git a/ydb/public/lib/yq/ya.make b/ydb/public/lib/yq/ya.make
index df334eef0c..1fccdf95ff 100644
--- a/ydb/public/lib/yq/ya.make
+++ b/ydb/public/lib/yq/ya.make
@@ -1,19 +1,19 @@
-LIBRARY()
-
+LIBRARY()
+
OWNER(
g:kikimr
g:yq
)
-
-SRCS(
- yq.cpp
+
+SRCS(
+ yq.cpp
scope.cpp
-)
-
-PEERDIR(
- library/cpp/json
+)
+
+PEERDIR(
+ library/cpp/json
ydb/public/api/grpc/draft
ydb/public/sdk/cpp/client/ydb_table
-)
-
-END()
+)
+
+END()
diff --git a/ydb/public/lib/yq/yq.cpp b/ydb/public/lib/yq/yq.cpp
index e9aa329323..bdd9f00e93 100644
--- a/ydb/public/lib/yq/yq.cpp
+++ b/ydb/public/lib/yq/yq.cpp
@@ -1,121 +1,121 @@
-#include "yq.h"
-
-#define INCLUDE_YDB_INTERNAL_H
+#include "yq.h"
+
+#define INCLUDE_YDB_INTERNAL_H
#include <ydb/public/sdk/cpp/client/impl/ydb_internal/make_request/make.h>
-#undef INCLUDE_YDB_INTERNAL_H
-
+#undef INCLUDE_YDB_INTERNAL_H
+
#include <ydb/public/sdk/cpp/client/ydb_common_client/impl/client.h>
-
-namespace NYdb::NYq {
-
-using namespace NYdb;
-
-class TClient::TImpl : public TClientImplCommon<TClient::TImpl> {
-public:
- TImpl(std::shared_ptr<TGRpcConnectionsImpl>&& connections, const TCommonClientSettings& settings)
- : TClientImplCommon(std::move(connections), settings) {}
-
- template<class TProtoResult, class TResultWrapper>
- auto MakeResultExtractor(NThreading::TPromise<TResultWrapper> promise) {
- return [promise = std::move(promise)]
- (google::protobuf::Any* any, TPlainStatus status) mutable {
- std::unique_ptr<TProtoResult> result;
- if (any) {
- result.reset(new TProtoResult);
- any->UnpackTo(result.get());
- }
-
- promise.SetValue(
- TResultWrapper(
- TStatus(std::move(status)),
- std::move(result)));
- };
- }
-
- TAsyncCreateQueryResult CreateQuery(
- const YandexQuery::CreateQueryRequest& protoRequest,
- const TCreateQuerySettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::CreateQueryRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TCreateQueryResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::CreateQueryResult,
- TCreateQueryResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::CreateQueryRequest,
- YandexQuery::CreateQueryResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncCreateQuery,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
- TAsyncListQueriesResult ListQueries(
- const YandexQuery::ListQueriesRequest& protoRequest,
- const TListQueriesSettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::ListQueriesRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TListQueriesResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::ListQueriesResult,
- TListQueriesResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::ListQueriesRequest,
- YandexQuery::ListQueriesResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncListQueries,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
- TAsyncDescribeQueryResult DescribeQuery(
- const YandexQuery::DescribeQueryRequest& protoRequest,
- const TDescribeQuerySettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::DescribeQueryRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TDescribeQueryResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::DescribeQueryResult,
- TDescribeQueryResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::DescribeQueryRequest,
- YandexQuery::DescribeQueryResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncDescribeQuery,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
+
+namespace NYdb::NYq {
+
+using namespace NYdb;
+
+class TClient::TImpl : public TClientImplCommon<TClient::TImpl> {
+public:
+ TImpl(std::shared_ptr<TGRpcConnectionsImpl>&& connections, const TCommonClientSettings& settings)
+ : TClientImplCommon(std::move(connections), settings) {}
+
+ template<class TProtoResult, class TResultWrapper>
+ auto MakeResultExtractor(NThreading::TPromise<TResultWrapper> promise) {
+ return [promise = std::move(promise)]
+ (google::protobuf::Any* any, TPlainStatus status) mutable {
+ std::unique_ptr<TProtoResult> result;
+ if (any) {
+ result.reset(new TProtoResult);
+ any->UnpackTo(result.get());
+ }
+
+ promise.SetValue(
+ TResultWrapper(
+ TStatus(std::move(status)),
+ std::move(result)));
+ };
+ }
+
+ TAsyncCreateQueryResult CreateQuery(
+ const YandexQuery::CreateQueryRequest& protoRequest,
+ const TCreateQuerySettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::CreateQueryRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TCreateQueryResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::CreateQueryResult,
+ TCreateQueryResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::CreateQueryRequest,
+ YandexQuery::CreateQueryResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncCreateQuery,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
+ TAsyncListQueriesResult ListQueries(
+ const YandexQuery::ListQueriesRequest& protoRequest,
+ const TListQueriesSettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::ListQueriesRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TListQueriesResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::ListQueriesResult,
+ TListQueriesResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::ListQueriesRequest,
+ YandexQuery::ListQueriesResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncListQueries,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
+ TAsyncDescribeQueryResult DescribeQuery(
+ const YandexQuery::DescribeQueryRequest& protoRequest,
+ const TDescribeQuerySettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::DescribeQueryRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TDescribeQueryResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::DescribeQueryResult,
+ TDescribeQueryResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::DescribeQueryRequest,
+ YandexQuery::DescribeQueryResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncDescribeQuery,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
TAsyncGetQueryStatusResult GetQueryStatus(
const YandexQuery::GetQueryStatusRequest& protoRequest,
const TGetQueryStatusSettings& settings) {
@@ -144,146 +144,146 @@ public:
return future;
}
- TAsyncModifyQueryResult ModifyQuery(
- const YandexQuery::ModifyQueryRequest& protoRequest,
- const TModifyQuerySettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::ModifyQueryRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TModifyQueryResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::ModifyQueryResult,
- TModifyQueryResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::ModifyQueryRequest,
- YandexQuery::ModifyQueryResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncModifyQuery,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
- TAsyncDeleteQueryResult DeleteQuery(
- const YandexQuery::DeleteQueryRequest& protoRequest,
- const TDeleteQuerySettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::DeleteQueryRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TDeleteQueryResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::DeleteQueryResult,
- TDeleteQueryResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::DeleteQueryRequest,
- YandexQuery::DeleteQueryResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncDeleteQuery,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
- TAsyncControlQueryResult ControlQuery(
- const YandexQuery::ControlQueryRequest& protoRequest,
- const TControlQuerySettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::ControlQueryRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TControlQueryResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::ControlQueryResult,
- TControlQueryResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::ControlQueryRequest,
- YandexQuery::ControlQueryResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncControlQuery,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
- TAsyncGetResultDataResult GetResultData(
- const YandexQuery::GetResultDataRequest& protoRequest,
- const TGetResultDataSettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::GetResultDataRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TGetResultDataResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::GetResultDataResult,
- TGetResultDataResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::GetResultDataRequest,
- YandexQuery::GetResultDataResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncGetResultData,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
- TAsyncListJobsResult ListJobs(
- const YandexQuery::ListJobsRequest& protoRequest,
- const TListJobsSettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::ListJobsRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TListJobsResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::ListJobsResult,
- TListJobsResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::ListJobsRequest,
- YandexQuery::ListJobsResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncListJobs,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
+ TAsyncModifyQueryResult ModifyQuery(
+ const YandexQuery::ModifyQueryRequest& protoRequest,
+ const TModifyQuerySettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::ModifyQueryRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TModifyQueryResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::ModifyQueryResult,
+ TModifyQueryResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::ModifyQueryRequest,
+ YandexQuery::ModifyQueryResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncModifyQuery,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
+ TAsyncDeleteQueryResult DeleteQuery(
+ const YandexQuery::DeleteQueryRequest& protoRequest,
+ const TDeleteQuerySettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::DeleteQueryRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TDeleteQueryResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::DeleteQueryResult,
+ TDeleteQueryResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::DeleteQueryRequest,
+ YandexQuery::DeleteQueryResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncDeleteQuery,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
+ TAsyncControlQueryResult ControlQuery(
+ const YandexQuery::ControlQueryRequest& protoRequest,
+ const TControlQuerySettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::ControlQueryRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TControlQueryResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::ControlQueryResult,
+ TControlQueryResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::ControlQueryRequest,
+ YandexQuery::ControlQueryResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncControlQuery,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
+ TAsyncGetResultDataResult GetResultData(
+ const YandexQuery::GetResultDataRequest& protoRequest,
+ const TGetResultDataSettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::GetResultDataRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TGetResultDataResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::GetResultDataResult,
+ TGetResultDataResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::GetResultDataRequest,
+ YandexQuery::GetResultDataResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncGetResultData,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
+ TAsyncListJobsResult ListJobs(
+ const YandexQuery::ListJobsRequest& protoRequest,
+ const TListJobsSettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::ListJobsRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TListJobsResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::ListJobsResult,
+ TListJobsResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::ListJobsRequest,
+ YandexQuery::ListJobsResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncListJobs,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
TAsyncDescribeJobResult DescribeJob(
const YandexQuery::DescribeJobRequest& protoRequest,
const TDescribeJobSettings& settings) {
@@ -312,146 +312,146 @@ public:
return future;
}
- TAsyncCreateConnectionResult CreateConnection(
- const YandexQuery::CreateConnectionRequest& protoRequest,
- const TCreateConnectionSettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::CreateConnectionRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TCreateConnectionResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::CreateConnectionResult,
- TCreateConnectionResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::CreateConnectionRequest,
- YandexQuery::CreateConnectionResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncCreateConnection,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
- TAsyncListConnectionsResult ListConnections(
- const YandexQuery::ListConnectionsRequest& protoRequest,
- const TListConnectionsSettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::ListConnectionsRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TListConnectionsResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::ListConnectionsResult,
- TListConnectionsResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::ListConnectionsRequest,
- YandexQuery::ListConnectionsResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncListConnections,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
- TAsyncDescribeConnectionResult DescribeConnection(
- const YandexQuery::DescribeConnectionRequest& protoRequest,
- const TDescribeConnectionSettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::DescribeConnectionRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TDescribeConnectionResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::DescribeConnectionResult,
- TDescribeConnectionResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::DescribeConnectionRequest,
- YandexQuery::DescribeConnectionResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncDescribeConnection,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
- TAsyncModifyConnectionResult ModifyConnection(
- const YandexQuery::ModifyConnectionRequest& protoRequest,
- const TModifyConnectionSettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::ModifyConnectionRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TModifyConnectionResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::ModifyConnectionResult,
- TModifyConnectionResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::ModifyConnectionRequest,
- YandexQuery::ModifyConnectionResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncModifyConnection,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
- TAsyncDeleteConnectionResult DeleteConnection(
- const YandexQuery::DeleteConnectionRequest& protoRequest,
- const TDeleteConnectionSettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::DeleteConnectionRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TDeleteConnectionResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::DeleteConnectionResult,
- TDeleteConnectionResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::DeleteConnectionRequest,
- YandexQuery::DeleteConnectionResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncDeleteConnection,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
+ TAsyncCreateConnectionResult CreateConnection(
+ const YandexQuery::CreateConnectionRequest& protoRequest,
+ const TCreateConnectionSettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::CreateConnectionRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TCreateConnectionResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::CreateConnectionResult,
+ TCreateConnectionResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::CreateConnectionRequest,
+ YandexQuery::CreateConnectionResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncCreateConnection,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
+ TAsyncListConnectionsResult ListConnections(
+ const YandexQuery::ListConnectionsRequest& protoRequest,
+ const TListConnectionsSettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::ListConnectionsRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TListConnectionsResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::ListConnectionsResult,
+ TListConnectionsResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::ListConnectionsRequest,
+ YandexQuery::ListConnectionsResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncListConnections,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
+ TAsyncDescribeConnectionResult DescribeConnection(
+ const YandexQuery::DescribeConnectionRequest& protoRequest,
+ const TDescribeConnectionSettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::DescribeConnectionRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TDescribeConnectionResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::DescribeConnectionResult,
+ TDescribeConnectionResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::DescribeConnectionRequest,
+ YandexQuery::DescribeConnectionResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncDescribeConnection,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
+ TAsyncModifyConnectionResult ModifyConnection(
+ const YandexQuery::ModifyConnectionRequest& protoRequest,
+ const TModifyConnectionSettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::ModifyConnectionRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TModifyConnectionResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::ModifyConnectionResult,
+ TModifyConnectionResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::ModifyConnectionRequest,
+ YandexQuery::ModifyConnectionResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncModifyConnection,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
+ TAsyncDeleteConnectionResult DeleteConnection(
+ const YandexQuery::DeleteConnectionRequest& protoRequest,
+ const TDeleteConnectionSettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::DeleteConnectionRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TDeleteConnectionResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::DeleteConnectionResult,
+ TDeleteConnectionResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::DeleteConnectionRequest,
+ YandexQuery::DeleteConnectionResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncDeleteConnection,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
TAsyncTestConnectionResult TestConnection(
const YandexQuery::TestConnectionRequest& protoRequest,
const TTestConnectionSettings& settings) {
@@ -480,276 +480,276 @@ public:
return future;
}
- TAsyncCreateBindingResult CreateBinding(
- const YandexQuery::CreateBindingRequest& protoRequest,
- const TCreateBindingSettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::CreateBindingRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TCreateBindingResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::CreateBindingResult,
- TCreateBindingResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::CreateBindingRequest,
- YandexQuery::CreateBindingResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncCreateBinding,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
- TAsyncListBindingsResult ListBindings(
- const YandexQuery::ListBindingsRequest& protoRequest,
- const TListBindingsSettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::ListBindingsRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TListBindingsResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::ListBindingsResult,
- TListBindingsResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::ListBindingsRequest,
- YandexQuery::ListBindingsResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncListBindings,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
- TAsyncDescribeBindingResult DescribeBinding(
- const YandexQuery::DescribeBindingRequest& protoRequest,
- const TDescribeBindingSettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::DescribeBindingRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TDescribeBindingResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::DescribeBindingResult,
- TDescribeBindingResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::DescribeBindingRequest,
- YandexQuery::DescribeBindingResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncDescribeBinding,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
- TAsyncModifyBindingResult ModifyBinding(
- const YandexQuery::ModifyBindingRequest& protoRequest,
- const TModifyBindingSettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::ModifyBindingRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TModifyBindingResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::ModifyBindingResult,
- TModifyBindingResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::ModifyBindingRequest,
- YandexQuery::ModifyBindingResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncModifyBinding,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-
- TAsyncDeleteBindingResult DeleteBinding(
- const YandexQuery::DeleteBindingRequest& protoRequest,
- const TDeleteBindingSettings& settings) {
- auto request = MakeOperationRequest<YandexQuery::DeleteBindingRequest>(settings);
- request = protoRequest;
-
- auto promise = NThreading::NewPromise<TDeleteBindingResult>();
- auto future = promise.GetFuture();
-
- auto extractor = MakeResultExtractor<
- YandexQuery::DeleteBindingResult,
- TDeleteBindingResult>(std::move(promise));
-
- Connections_->RunDeferred<
- YandexQuery::V1::YandexQueryService,
- YandexQuery::DeleteBindingRequest,
- YandexQuery::DeleteBindingResponse>(
- std::move(request),
- std::move(extractor),
- &YandexQuery::V1::YandexQueryService::Stub::AsyncDeleteBinding,
- DbDriverState_,
- INITIAL_DEFERRED_CALL_DELAY,
- TRpcRequestSettings::Make(settings),
- settings.ClientTimeout_);
-
- return future;
- }
-};
-
-TClient::TClient(const TDriver& driver, const TCommonClientSettings& settings)
- : Impl_(new TImpl(CreateInternalInterface(driver), settings))
-{}
-
-TAsyncCreateQueryResult TClient::CreateQuery(
- const YandexQuery::CreateQueryRequest& request,
- const TCreateQuerySettings& settings) {
- return Impl_->CreateQuery(request, settings);
-}
-
-TAsyncListQueriesResult TClient::ListQueries(
- const YandexQuery::ListQueriesRequest& request,
- const TListQueriesSettings& settings) {
- return Impl_->ListQueries(request, settings);
-}
-
-TAsyncDescribeQueryResult TClient::DescribeQuery(
- const YandexQuery::DescribeQueryRequest& request,
- const TDescribeQuerySettings& settings) {
- return Impl_->DescribeQuery(request, settings);
-}
-
+ TAsyncCreateBindingResult CreateBinding(
+ const YandexQuery::CreateBindingRequest& protoRequest,
+ const TCreateBindingSettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::CreateBindingRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TCreateBindingResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::CreateBindingResult,
+ TCreateBindingResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::CreateBindingRequest,
+ YandexQuery::CreateBindingResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncCreateBinding,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
+ TAsyncListBindingsResult ListBindings(
+ const YandexQuery::ListBindingsRequest& protoRequest,
+ const TListBindingsSettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::ListBindingsRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TListBindingsResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::ListBindingsResult,
+ TListBindingsResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::ListBindingsRequest,
+ YandexQuery::ListBindingsResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncListBindings,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
+ TAsyncDescribeBindingResult DescribeBinding(
+ const YandexQuery::DescribeBindingRequest& protoRequest,
+ const TDescribeBindingSettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::DescribeBindingRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TDescribeBindingResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::DescribeBindingResult,
+ TDescribeBindingResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::DescribeBindingRequest,
+ YandexQuery::DescribeBindingResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncDescribeBinding,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
+ TAsyncModifyBindingResult ModifyBinding(
+ const YandexQuery::ModifyBindingRequest& protoRequest,
+ const TModifyBindingSettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::ModifyBindingRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TModifyBindingResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::ModifyBindingResult,
+ TModifyBindingResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::ModifyBindingRequest,
+ YandexQuery::ModifyBindingResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncModifyBinding,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+
+ TAsyncDeleteBindingResult DeleteBinding(
+ const YandexQuery::DeleteBindingRequest& protoRequest,
+ const TDeleteBindingSettings& settings) {
+ auto request = MakeOperationRequest<YandexQuery::DeleteBindingRequest>(settings);
+ request = protoRequest;
+
+ auto promise = NThreading::NewPromise<TDeleteBindingResult>();
+ auto future = promise.GetFuture();
+
+ auto extractor = MakeResultExtractor<
+ YandexQuery::DeleteBindingResult,
+ TDeleteBindingResult>(std::move(promise));
+
+ Connections_->RunDeferred<
+ YandexQuery::V1::YandexQueryService,
+ YandexQuery::DeleteBindingRequest,
+ YandexQuery::DeleteBindingResponse>(
+ std::move(request),
+ std::move(extractor),
+ &YandexQuery::V1::YandexQueryService::Stub::AsyncDeleteBinding,
+ DbDriverState_,
+ INITIAL_DEFERRED_CALL_DELAY,
+ TRpcRequestSettings::Make(settings),
+ settings.ClientTimeout_);
+
+ return future;
+ }
+};
+
+TClient::TClient(const TDriver& driver, const TCommonClientSettings& settings)
+ : Impl_(new TImpl(CreateInternalInterface(driver), settings))
+{}
+
+TAsyncCreateQueryResult TClient::CreateQuery(
+ const YandexQuery::CreateQueryRequest& request,
+ const TCreateQuerySettings& settings) {
+ return Impl_->CreateQuery(request, settings);
+}
+
+TAsyncListQueriesResult TClient::ListQueries(
+ const YandexQuery::ListQueriesRequest& request,
+ const TListQueriesSettings& settings) {
+ return Impl_->ListQueries(request, settings);
+}
+
+TAsyncDescribeQueryResult TClient::DescribeQuery(
+ const YandexQuery::DescribeQueryRequest& request,
+ const TDescribeQuerySettings& settings) {
+ return Impl_->DescribeQuery(request, settings);
+}
+
TAsyncGetQueryStatusResult TClient::GetQueryStatus(
const YandexQuery::GetQueryStatusRequest& request,
const TGetQueryStatusSettings& settings) {
return Impl_->GetQueryStatus(request, settings);
}
-TAsyncModifyQueryResult TClient::ModifyQuery(
- const YandexQuery::ModifyQueryRequest& request,
- const TModifyQuerySettings& settings) {
- return Impl_->ModifyQuery(request, settings);
-}
-
-TAsyncDeleteQueryResult TClient::DeleteQuery(
- const YandexQuery::DeleteQueryRequest& request,
- const TDeleteQuerySettings& settings) {
- return Impl_->DeleteQuery(request, settings);
-}
-
-TAsyncControlQueryResult TClient::ControlQuery(
- const YandexQuery::ControlQueryRequest& request,
- const TControlQuerySettings& settings) {
- return Impl_->ControlQuery(request, settings);
-}
-
-TAsyncGetResultDataResult TClient::GetResultData(
- const YandexQuery::GetResultDataRequest& request,
- const TGetResultDataSettings& settings) {
- return Impl_->GetResultData(request, settings);
-}
-
-TAsyncListJobsResult TClient::ListJobs(
- const YandexQuery::ListJobsRequest& request,
- const TListJobsSettings& settings) {
- return Impl_->ListJobs(request, settings);
-}
-
+TAsyncModifyQueryResult TClient::ModifyQuery(
+ const YandexQuery::ModifyQueryRequest& request,
+ const TModifyQuerySettings& settings) {
+ return Impl_->ModifyQuery(request, settings);
+}
+
+TAsyncDeleteQueryResult TClient::DeleteQuery(
+ const YandexQuery::DeleteQueryRequest& request,
+ const TDeleteQuerySettings& settings) {
+ return Impl_->DeleteQuery(request, settings);
+}
+
+TAsyncControlQueryResult TClient::ControlQuery(
+ const YandexQuery::ControlQueryRequest& request,
+ const TControlQuerySettings& settings) {
+ return Impl_->ControlQuery(request, settings);
+}
+
+TAsyncGetResultDataResult TClient::GetResultData(
+ const YandexQuery::GetResultDataRequest& request,
+ const TGetResultDataSettings& settings) {
+ return Impl_->GetResultData(request, settings);
+}
+
+TAsyncListJobsResult TClient::ListJobs(
+ const YandexQuery::ListJobsRequest& request,
+ const TListJobsSettings& settings) {
+ return Impl_->ListJobs(request, settings);
+}
+
TAsyncDescribeJobResult TClient::DescribeJob(
const YandexQuery::DescribeJobRequest& request,
const TDescribeJobSettings& settings) {
return Impl_->DescribeJob(request, settings);
}
-TAsyncCreateConnectionResult TClient::CreateConnection(
- const YandexQuery::CreateConnectionRequest& request,
- const TCreateConnectionSettings& settings) {
- return Impl_->CreateConnection(request, settings);
-}
-
-TAsyncListConnectionsResult TClient::ListConnections(
- const YandexQuery::ListConnectionsRequest& request,
- const TListConnectionsSettings& settings) {
- return Impl_->ListConnections(request, settings);
-}
-
-TAsyncDescribeConnectionResult TClient::DescribeConnection(
- const YandexQuery::DescribeConnectionRequest& request,
- const TDescribeConnectionSettings& settings) {
- return Impl_->DescribeConnection(request, settings);
-}
-
-TAsyncModifyConnectionResult TClient::ModifyConnection(
- const YandexQuery::ModifyConnectionRequest& request,
- const TModifyConnectionSettings& settings) {
- return Impl_->ModifyConnection(request, settings);
-}
-
-TAsyncDeleteConnectionResult TClient::DeleteConnection(
- const YandexQuery::DeleteConnectionRequest& request,
- const TDeleteConnectionSettings& settings) {
- return Impl_->DeleteConnection(request, settings);
-}
-
+TAsyncCreateConnectionResult TClient::CreateConnection(
+ const YandexQuery::CreateConnectionRequest& request,
+ const TCreateConnectionSettings& settings) {
+ return Impl_->CreateConnection(request, settings);
+}
+
+TAsyncListConnectionsResult TClient::ListConnections(
+ const YandexQuery::ListConnectionsRequest& request,
+ const TListConnectionsSettings& settings) {
+ return Impl_->ListConnections(request, settings);
+}
+
+TAsyncDescribeConnectionResult TClient::DescribeConnection(
+ const YandexQuery::DescribeConnectionRequest& request,
+ const TDescribeConnectionSettings& settings) {
+ return Impl_->DescribeConnection(request, settings);
+}
+
+TAsyncModifyConnectionResult TClient::ModifyConnection(
+ const YandexQuery::ModifyConnectionRequest& request,
+ const TModifyConnectionSettings& settings) {
+ return Impl_->ModifyConnection(request, settings);
+}
+
+TAsyncDeleteConnectionResult TClient::DeleteConnection(
+ const YandexQuery::DeleteConnectionRequest& request,
+ const TDeleteConnectionSettings& settings) {
+ return Impl_->DeleteConnection(request, settings);
+}
+
TAsyncTestConnectionResult TClient::TestConnection(
const YandexQuery::TestConnectionRequest& request,
const TTestConnectionSettings& settings) {
return Impl_->TestConnection(request, settings);
}
-TAsyncCreateBindingResult TClient::CreateBinding(
- const YandexQuery::CreateBindingRequest& request,
- const TCreateBindingSettings& settings) {
- return Impl_->CreateBinding(request, settings);
-}
-
-TAsyncListBindingsResult TClient::ListBindings(
- const YandexQuery::ListBindingsRequest& request,
- const TListBindingsSettings& settings) {
- return Impl_->ListBindings(request, settings);
-}
-
-TAsyncDescribeBindingResult TClient::DescribeBinding(
- const YandexQuery::DescribeBindingRequest& request,
- const TDescribeBindingSettings& settings) {
- return Impl_->DescribeBinding(request, settings);
-}
-
-TAsyncModifyBindingResult TClient::ModifyBinding(
- const YandexQuery::ModifyBindingRequest& request,
- const TModifyBindingSettings& settings) {
- return Impl_->ModifyBinding(request, settings);
-}
-
-TAsyncDeleteBindingResult TClient::DeleteBinding(
- const YandexQuery::DeleteBindingRequest& request,
- const TDeleteBindingSettings& settings) {
- return Impl_->DeleteBinding(request, settings);
-}
-
-}
-
+TAsyncCreateBindingResult TClient::CreateBinding(
+ const YandexQuery::CreateBindingRequest& request,
+ const TCreateBindingSettings& settings) {
+ return Impl_->CreateBinding(request, settings);
+}
+
+TAsyncListBindingsResult TClient::ListBindings(
+ const YandexQuery::ListBindingsRequest& request,
+ const TListBindingsSettings& settings) {
+ return Impl_->ListBindings(request, settings);
+}
+
+TAsyncDescribeBindingResult TClient::DescribeBinding(
+ const YandexQuery::DescribeBindingRequest& request,
+ const TDescribeBindingSettings& settings) {
+ return Impl_->DescribeBinding(request, settings);
+}
+
+TAsyncModifyBindingResult TClient::ModifyBinding(
+ const YandexQuery::ModifyBindingRequest& request,
+ const TModifyBindingSettings& settings) {
+ return Impl_->ModifyBinding(request, settings);
+}
+
+TAsyncDeleteBindingResult TClient::DeleteBinding(
+ const YandexQuery::DeleteBindingRequest& request,
+ const TDeleteBindingSettings& settings) {
+ return Impl_->DeleteBinding(request, settings);
+}
+
+}
+
diff --git a/ydb/public/lib/yq/yq.h b/ydb/public/lib/yq/yq.h
index 31b3a6b991..8747b92e35 100644
--- a/ydb/public/lib/yq/yq.h
+++ b/ydb/public/lib/yq/yq.h
@@ -1,215 +1,215 @@
-#pragma once
-
+#pragma once
+
#include <ydb/public/sdk/cpp/client/ydb_table/table.h>
-
+
#include <ydb/public/api/grpc/yq_v1.grpc.pb.h>
-
-namespace NYdb::NYq {
-
-template<class TProtoResult>
-class TProtoResultWrapper : public NYdb::TStatus {
- friend class TClient;
-
-private:
- TProtoResultWrapper(
- NYdb::TStatus&& status,
- std::unique_ptr<TProtoResult> result)
- : TStatus(std::move(status))
- , Result(std::move(result))
- { }
-
-public:
- const TProtoResult& GetResult() const {
- if (!Result) {
- ythrow yexception() << "Uninitialized result: " << GetIssues().ToString();
- }
- return *Result;
- }
-
- bool HasResult() const {
- return Result;
- }
-
-private:
- std::unique_ptr<TProtoResult> Result;
-};
-
-using TCreateQueryResult = TProtoResultWrapper<YandexQuery::CreateQueryResult>;
-using TAsyncCreateQueryResult = NThreading::TFuture<TCreateQueryResult>;
-struct TCreateQuerySettings : public NYdb::TOperationRequestSettings<TCreateQuerySettings> {};
-
-using TListQueriesResult = TProtoResultWrapper<YandexQuery::ListQueriesResult>;
-using TAsyncListQueriesResult = NThreading::TFuture<TListQueriesResult>;
-struct TListQueriesSettings : public NYdb::TOperationRequestSettings<TListQueriesSettings> {};
-
-using TDescribeQueryResult = TProtoResultWrapper<YandexQuery::DescribeQueryResult>;
-using TAsyncDescribeQueryResult = NThreading::TFuture<TDescribeQueryResult>;
-struct TDescribeQuerySettings : public NYdb::TOperationRequestSettings<TDescribeQuerySettings> {};
-
+
+namespace NYdb::NYq {
+
+template<class TProtoResult>
+class TProtoResultWrapper : public NYdb::TStatus {
+ friend class TClient;
+
+private:
+ TProtoResultWrapper(
+ NYdb::TStatus&& status,
+ std::unique_ptr<TProtoResult> result)
+ : TStatus(std::move(status))
+ , Result(std::move(result))
+ { }
+
+public:
+ const TProtoResult& GetResult() const {
+ if (!Result) {
+ ythrow yexception() << "Uninitialized result: " << GetIssues().ToString();
+ }
+ return *Result;
+ }
+
+ bool HasResult() const {
+ return Result;
+ }
+
+private:
+ std::unique_ptr<TProtoResult> Result;
+};
+
+using TCreateQueryResult = TProtoResultWrapper<YandexQuery::CreateQueryResult>;
+using TAsyncCreateQueryResult = NThreading::TFuture<TCreateQueryResult>;
+struct TCreateQuerySettings : public NYdb::TOperationRequestSettings<TCreateQuerySettings> {};
+
+using TListQueriesResult = TProtoResultWrapper<YandexQuery::ListQueriesResult>;
+using TAsyncListQueriesResult = NThreading::TFuture<TListQueriesResult>;
+struct TListQueriesSettings : public NYdb::TOperationRequestSettings<TListQueriesSettings> {};
+
+using TDescribeQueryResult = TProtoResultWrapper<YandexQuery::DescribeQueryResult>;
+using TAsyncDescribeQueryResult = NThreading::TFuture<TDescribeQueryResult>;
+struct TDescribeQuerySettings : public NYdb::TOperationRequestSettings<TDescribeQuerySettings> {};
+
using TGetQueryStatusResult = TProtoResultWrapper<YandexQuery::GetQueryStatusResult>;
using TAsyncGetQueryStatusResult = NThreading::TFuture<TGetQueryStatusResult>;
struct TGetQueryStatusSettings : public NYdb::TOperationRequestSettings<TGetQueryStatusSettings> {};
-using TModifyQueryResult = TProtoResultWrapper<YandexQuery::ModifyQueryResult>;
-using TAsyncModifyQueryResult = NThreading::TFuture<TModifyQueryResult>;
-struct TModifyQuerySettings : public NYdb::TOperationRequestSettings<TModifyQuerySettings> {};
-
-using TDeleteQueryResult = TProtoResultWrapper<YandexQuery::DeleteQueryResult>;
-using TAsyncDeleteQueryResult = NThreading::TFuture<TDeleteQueryResult>;
-struct TDeleteQuerySettings : public NYdb::TOperationRequestSettings<TDeleteQuerySettings> {};
-
-using TControlQueryResult = TProtoResultWrapper<YandexQuery::ControlQueryResult>;
-using TAsyncControlQueryResult = NThreading::TFuture<TControlQueryResult>;
-struct TControlQuerySettings : public NYdb::TOperationRequestSettings<TControlQuerySettings> {};
-
-using TGetResultDataResult = TProtoResultWrapper<YandexQuery::GetResultDataResult>;
-using TAsyncGetResultDataResult = NThreading::TFuture<TGetResultDataResult>;
-struct TGetResultDataSettings : public NYdb::TOperationRequestSettings<TGetResultDataSettings> {};
-
-using TListJobsResult = TProtoResultWrapper<YandexQuery::ListJobsResult>;
-using TAsyncListJobsResult = NThreading::TFuture<TListJobsResult>;
-struct TListJobsSettings : public NYdb::TOperationRequestSettings<TListJobsSettings> {};
-
+using TModifyQueryResult = TProtoResultWrapper<YandexQuery::ModifyQueryResult>;
+using TAsyncModifyQueryResult = NThreading::TFuture<TModifyQueryResult>;
+struct TModifyQuerySettings : public NYdb::TOperationRequestSettings<TModifyQuerySettings> {};
+
+using TDeleteQueryResult = TProtoResultWrapper<YandexQuery::DeleteQueryResult>;
+using TAsyncDeleteQueryResult = NThreading::TFuture<TDeleteQueryResult>;
+struct TDeleteQuerySettings : public NYdb::TOperationRequestSettings<TDeleteQuerySettings> {};
+
+using TControlQueryResult = TProtoResultWrapper<YandexQuery::ControlQueryResult>;
+using TAsyncControlQueryResult = NThreading::TFuture<TControlQueryResult>;
+struct TControlQuerySettings : public NYdb::TOperationRequestSettings<TControlQuerySettings> {};
+
+using TGetResultDataResult = TProtoResultWrapper<YandexQuery::GetResultDataResult>;
+using TAsyncGetResultDataResult = NThreading::TFuture<TGetResultDataResult>;
+struct TGetResultDataSettings : public NYdb::TOperationRequestSettings<TGetResultDataSettings> {};
+
+using TListJobsResult = TProtoResultWrapper<YandexQuery::ListJobsResult>;
+using TAsyncListJobsResult = NThreading::TFuture<TListJobsResult>;
+struct TListJobsSettings : public NYdb::TOperationRequestSettings<TListJobsSettings> {};
+
using TDescribeJobResult = TProtoResultWrapper<YandexQuery::DescribeJobResult>;
using TAsyncDescribeJobResult = NThreading::TFuture<TDescribeJobResult>;
struct TDescribeJobSettings : public NYdb::TOperationRequestSettings<TDescribeJobSettings> {};
-using TCreateConnectionResult = TProtoResultWrapper<YandexQuery::CreateConnectionResult>;
-using TAsyncCreateConnectionResult = NThreading::TFuture<TCreateConnectionResult>;
-struct TCreateConnectionSettings : public NYdb::TOperationRequestSettings<TCreateConnectionSettings> {};
-
-using TListConnectionsResult = TProtoResultWrapper<YandexQuery::ListConnectionsResult>;
-using TAsyncListConnectionsResult = NThreading::TFuture<TListConnectionsResult>;
-struct TListConnectionsSettings : public NYdb::TOperationRequestSettings<TListConnectionsSettings> {};
-
-using TDescribeConnectionResult = TProtoResultWrapper<YandexQuery::DescribeConnectionResult>;
-using TAsyncDescribeConnectionResult = NThreading::TFuture<TDescribeConnectionResult>;
-struct TDescribeConnectionSettings : public NYdb::TOperationRequestSettings<TDescribeConnectionSettings> {};
-
-using TModifyConnectionResult = TProtoResultWrapper<YandexQuery::ModifyConnectionResult>;
-using TAsyncModifyConnectionResult = NThreading::TFuture<TModifyConnectionResult>;
-struct TModifyConnectionSettings : public NYdb::TOperationRequestSettings<TModifyConnectionSettings> {};
-
-using TDeleteConnectionResult = TProtoResultWrapper<YandexQuery::DeleteConnectionResult>;
-using TAsyncDeleteConnectionResult = NThreading::TFuture<TDeleteConnectionResult>;
-struct TDeleteConnectionSettings : public NYdb::TOperationRequestSettings<TDeleteConnectionSettings> {};
-
+using TCreateConnectionResult = TProtoResultWrapper<YandexQuery::CreateConnectionResult>;
+using TAsyncCreateConnectionResult = NThreading::TFuture<TCreateConnectionResult>;
+struct TCreateConnectionSettings : public NYdb::TOperationRequestSettings<TCreateConnectionSettings> {};
+
+using TListConnectionsResult = TProtoResultWrapper<YandexQuery::ListConnectionsResult>;
+using TAsyncListConnectionsResult = NThreading::TFuture<TListConnectionsResult>;
+struct TListConnectionsSettings : public NYdb::TOperationRequestSettings<TListConnectionsSettings> {};
+
+using TDescribeConnectionResult = TProtoResultWrapper<YandexQuery::DescribeConnectionResult>;
+using TAsyncDescribeConnectionResult = NThreading::TFuture<TDescribeConnectionResult>;
+struct TDescribeConnectionSettings : public NYdb::TOperationRequestSettings<TDescribeConnectionSettings> {};
+
+using TModifyConnectionResult = TProtoResultWrapper<YandexQuery::ModifyConnectionResult>;
+using TAsyncModifyConnectionResult = NThreading::TFuture<TModifyConnectionResult>;
+struct TModifyConnectionSettings : public NYdb::TOperationRequestSettings<TModifyConnectionSettings> {};
+
+using TDeleteConnectionResult = TProtoResultWrapper<YandexQuery::DeleteConnectionResult>;
+using TAsyncDeleteConnectionResult = NThreading::TFuture<TDeleteConnectionResult>;
+struct TDeleteConnectionSettings : public NYdb::TOperationRequestSettings<TDeleteConnectionSettings> {};
+
using TTestConnectionResult = TProtoResultWrapper<YandexQuery::TestConnectionResult>;
using TAsyncTestConnectionResult = NThreading::TFuture<TTestConnectionResult>;
struct TTestConnectionSettings : public NYdb::TOperationRequestSettings<TTestConnectionSettings> {};
-using TCreateBindingResult = TProtoResultWrapper<YandexQuery::CreateBindingResult>;
-using TAsyncCreateBindingResult = NThreading::TFuture<TCreateBindingResult>;
-struct TCreateBindingSettings : public NYdb::TOperationRequestSettings<TCreateBindingSettings> {};
-
-using TListBindingsResult = TProtoResultWrapper<YandexQuery::ListBindingsResult>;
-using TAsyncListBindingsResult = NThreading::TFuture<TListBindingsResult>;
-struct TListBindingsSettings : public NYdb::TOperationRequestSettings<TListBindingsSettings> {};
-
-using TDescribeBindingResult = TProtoResultWrapper<YandexQuery::DescribeBindingResult>;
-using TAsyncDescribeBindingResult = NThreading::TFuture<TDescribeBindingResult>;
-struct TDescribeBindingSettings : public NYdb::TOperationRequestSettings<TDescribeBindingSettings> {};
-
-using TModifyBindingResult = TProtoResultWrapper<YandexQuery::ModifyBindingResult>;
-using TAsyncModifyBindingResult = NThreading::TFuture<TModifyBindingResult>;
-struct TModifyBindingSettings : public NYdb::TOperationRequestSettings<TModifyBindingSettings> {};
-
-using TDeleteBindingResult = TProtoResultWrapper<YandexQuery::DeleteBindingResult>;
-using TAsyncDeleteBindingResult = NThreading::TFuture<TDeleteBindingResult>;
-struct TDeleteBindingSettings : public NYdb::TOperationRequestSettings<TDeleteBindingSettings> {};
-
-class TClient {
- class TImpl;
-
-public:
- TClient(const NYdb::TDriver& driver, const NYdb::TCommonClientSettings& settings = NYdb::TCommonClientSettings());
-
- TAsyncCreateQueryResult CreateQuery(
- const YandexQuery::CreateQueryRequest& request,
- const TCreateQuerySettings& settings = TCreateQuerySettings());
-
- TAsyncListQueriesResult ListQueries(
- const YandexQuery::ListQueriesRequest& request,
- const TListQueriesSettings& settings = TListQueriesSettings());
-
- TAsyncDescribeQueryResult DescribeQuery(
- const YandexQuery::DescribeQueryRequest& request,
- const TDescribeQuerySettings& settings = TDescribeQuerySettings());
-
+using TCreateBindingResult = TProtoResultWrapper<YandexQuery::CreateBindingResult>;
+using TAsyncCreateBindingResult = NThreading::TFuture<TCreateBindingResult>;
+struct TCreateBindingSettings : public NYdb::TOperationRequestSettings<TCreateBindingSettings> {};
+
+using TListBindingsResult = TProtoResultWrapper<YandexQuery::ListBindingsResult>;
+using TAsyncListBindingsResult = NThreading::TFuture<TListBindingsResult>;
+struct TListBindingsSettings : public NYdb::TOperationRequestSettings<TListBindingsSettings> {};
+
+using TDescribeBindingResult = TProtoResultWrapper<YandexQuery::DescribeBindingResult>;
+using TAsyncDescribeBindingResult = NThreading::TFuture<TDescribeBindingResult>;
+struct TDescribeBindingSettings : public NYdb::TOperationRequestSettings<TDescribeBindingSettings> {};
+
+using TModifyBindingResult = TProtoResultWrapper<YandexQuery::ModifyBindingResult>;
+using TAsyncModifyBindingResult = NThreading::TFuture<TModifyBindingResult>;
+struct TModifyBindingSettings : public NYdb::TOperationRequestSettings<TModifyBindingSettings> {};
+
+using TDeleteBindingResult = TProtoResultWrapper<YandexQuery::DeleteBindingResult>;
+using TAsyncDeleteBindingResult = NThreading::TFuture<TDeleteBindingResult>;
+struct TDeleteBindingSettings : public NYdb::TOperationRequestSettings<TDeleteBindingSettings> {};
+
+class TClient {
+ class TImpl;
+
+public:
+ TClient(const NYdb::TDriver& driver, const NYdb::TCommonClientSettings& settings = NYdb::TCommonClientSettings());
+
+ TAsyncCreateQueryResult CreateQuery(
+ const YandexQuery::CreateQueryRequest& request,
+ const TCreateQuerySettings& settings = TCreateQuerySettings());
+
+ TAsyncListQueriesResult ListQueries(
+ const YandexQuery::ListQueriesRequest& request,
+ const TListQueriesSettings& settings = TListQueriesSettings());
+
+ TAsyncDescribeQueryResult DescribeQuery(
+ const YandexQuery::DescribeQueryRequest& request,
+ const TDescribeQuerySettings& settings = TDescribeQuerySettings());
+
TAsyncGetQueryStatusResult GetQueryStatus(
const YandexQuery::GetQueryStatusRequest& request,
const TGetQueryStatusSettings& settings = TGetQueryStatusSettings());
- TAsyncModifyQueryResult ModifyQuery(
- const YandexQuery::ModifyQueryRequest& request,
- const TModifyQuerySettings& settings = TModifyQuerySettings());
-
- TAsyncDeleteQueryResult DeleteQuery(
- const YandexQuery::DeleteQueryRequest& request,
- const TDeleteQuerySettings& settings = TDeleteQuerySettings());
-
- TAsyncControlQueryResult ControlQuery(
- const YandexQuery::ControlQueryRequest& request,
- const TControlQuerySettings& settings = TControlQuerySettings());
-
- TAsyncGetResultDataResult GetResultData(
- const YandexQuery::GetResultDataRequest& request,
- const TGetResultDataSettings& settings = TGetResultDataSettings());
-
- TAsyncListJobsResult ListJobs(
- const YandexQuery::ListJobsRequest& request,
- const TListJobsSettings& settings = TListJobsSettings());
-
+ TAsyncModifyQueryResult ModifyQuery(
+ const YandexQuery::ModifyQueryRequest& request,
+ const TModifyQuerySettings& settings = TModifyQuerySettings());
+
+ TAsyncDeleteQueryResult DeleteQuery(
+ const YandexQuery::DeleteQueryRequest& request,
+ const TDeleteQuerySettings& settings = TDeleteQuerySettings());
+
+ TAsyncControlQueryResult ControlQuery(
+ const YandexQuery::ControlQueryRequest& request,
+ const TControlQuerySettings& settings = TControlQuerySettings());
+
+ TAsyncGetResultDataResult GetResultData(
+ const YandexQuery::GetResultDataRequest& request,
+ const TGetResultDataSettings& settings = TGetResultDataSettings());
+
+ TAsyncListJobsResult ListJobs(
+ const YandexQuery::ListJobsRequest& request,
+ const TListJobsSettings& settings = TListJobsSettings());
+
TAsyncDescribeJobResult DescribeJob(
const YandexQuery::DescribeJobRequest& request,
const TDescribeJobSettings& settings = TDescribeJobSettings());
- TAsyncCreateConnectionResult CreateConnection(
- const YandexQuery::CreateConnectionRequest& request,
- const TCreateConnectionSettings& settings = TCreateConnectionSettings());
-
- TAsyncListConnectionsResult ListConnections(
- const YandexQuery::ListConnectionsRequest& request,
- const TListConnectionsSettings& settings = TListConnectionsSettings());
-
- TAsyncDescribeConnectionResult DescribeConnection(
- const YandexQuery::DescribeConnectionRequest& request,
- const TDescribeConnectionSettings& settings = TDescribeConnectionSettings());
-
- TAsyncModifyConnectionResult ModifyConnection(
- const YandexQuery::ModifyConnectionRequest& request,
- const TModifyConnectionSettings& settings = TModifyConnectionSettings());
-
- TAsyncDeleteConnectionResult DeleteConnection(
- const YandexQuery::DeleteConnectionRequest& request,
- const TDeleteConnectionSettings& settings = TDeleteConnectionSettings());
-
+ TAsyncCreateConnectionResult CreateConnection(
+ const YandexQuery::CreateConnectionRequest& request,
+ const TCreateConnectionSettings& settings = TCreateConnectionSettings());
+
+ TAsyncListConnectionsResult ListConnections(
+ const YandexQuery::ListConnectionsRequest& request,
+ const TListConnectionsSettings& settings = TListConnectionsSettings());
+
+ TAsyncDescribeConnectionResult DescribeConnection(
+ const YandexQuery::DescribeConnectionRequest& request,
+ const TDescribeConnectionSettings& settings = TDescribeConnectionSettings());
+
+ TAsyncModifyConnectionResult ModifyConnection(
+ const YandexQuery::ModifyConnectionRequest& request,
+ const TModifyConnectionSettings& settings = TModifyConnectionSettings());
+
+ TAsyncDeleteConnectionResult DeleteConnection(
+ const YandexQuery::DeleteConnectionRequest& request,
+ const TDeleteConnectionSettings& settings = TDeleteConnectionSettings());
+
TAsyncTestConnectionResult TestConnection(
const YandexQuery::TestConnectionRequest& request,
const TTestConnectionSettings& settings = TTestConnectionSettings());
- TAsyncCreateBindingResult CreateBinding(
- const YandexQuery::CreateBindingRequest& request,
- const TCreateBindingSettings& settings = TCreateBindingSettings());
-
- TAsyncListBindingsResult ListBindings(
- const YandexQuery::ListBindingsRequest& request,
- const TListBindingsSettings& settings = TListBindingsSettings());
-
- TAsyncDescribeBindingResult DescribeBinding(
- const YandexQuery::DescribeBindingRequest& request,
- const TDescribeBindingSettings& settings = TDescribeBindingSettings());
-
- TAsyncModifyBindingResult ModifyBinding(
- const YandexQuery::ModifyBindingRequest& request,
- const TModifyBindingSettings& settings = TModifyBindingSettings());
-
- TAsyncDeleteBindingResult DeleteBinding(
- const YandexQuery::DeleteBindingRequest& request,
- const TDeleteBindingSettings& settings = TDeleteBindingSettings());
-
-private:
- std::shared_ptr<TImpl> Impl_;
-};
-
-} // namespace NYdb::NYq
+ TAsyncCreateBindingResult CreateBinding(
+ const YandexQuery::CreateBindingRequest& request,
+ const TCreateBindingSettings& settings = TCreateBindingSettings());
+
+ TAsyncListBindingsResult ListBindings(
+ const YandexQuery::ListBindingsRequest& request,
+ const TListBindingsSettings& settings = TListBindingsSettings());
+
+ TAsyncDescribeBindingResult DescribeBinding(
+ const YandexQuery::DescribeBindingRequest& request,
+ const TDescribeBindingSettings& settings = TDescribeBindingSettings());
+
+ TAsyncModifyBindingResult ModifyBinding(
+ const YandexQuery::ModifyBindingRequest& request,
+ const TModifyBindingSettings& settings = TModifyBindingSettings());
+
+ TAsyncDeleteBindingResult DeleteBinding(
+ const YandexQuery::DeleteBindingRequest& request,
+ const TDeleteBindingSettings& settings = TDeleteBindingSettings());
+
+private:
+ std::shared_ptr<TImpl> Impl_;
+};
+
+} // namespace NYdb::NYq
diff --git a/ydb/public/sdk/cpp/client/impl/ydb_internal/grpc_connections/grpc_connections.h b/ydb/public/sdk/cpp/client/impl/ydb_internal/grpc_connections/grpc_connections.h
index bfc1b7ec38..1eccb11db5 100644
--- a/ydb/public/sdk/cpp/client/impl/ydb_internal/grpc_connections/grpc_connections.h
+++ b/ydb/public/sdk/cpp/client/impl/ydb_internal/grpc_connections/grpc_connections.h
@@ -202,8 +202,8 @@ public:
meta.Aux.push_back({YDB_SDK_BUILD_INFO_HEADER, CreateSDKBuildInfo()});
}
- meta.Aux.insert(meta.Aux.end(), requestSettings.Header.begin(), requestSettings.Header.end());
-
+ meta.Aux.insert(meta.Aux.end(), requestSettings.Header.begin(), requestSettings.Header.end());
+
dbState->StatCollector.IncGRpcInFlight();
dbState->StatCollector.IncGRpcInFlightByHost(endpoint);
diff --git a/ydb/public/sdk/cpp/client/impl/ydb_internal/rpc_request_settings/settings.h b/ydb/public/sdk/cpp/client/impl/ydb_internal/rpc_request_settings/settings.h
index 2a2611794d..3173e34c00 100644
--- a/ydb/public/sdk/cpp/client/impl/ydb_internal/rpc_request_settings/settings.h
+++ b/ydb/public/sdk/cpp/client/impl/ydb_internal/rpc_request_settings/settings.h
@@ -20,7 +20,7 @@ struct TRpcRequestSettings {
TRpcRequestSettings rpcSettings;
rpcSettings.TraceId = settings.TraceId_;
rpcSettings.RequestType = settings.RequestType_;
- rpcSettings.Header = settings.Header_;
+ rpcSettings.Header = settings.Header_;
rpcSettings.EndpointPolicy = TEndpointPolicy::UsePreferedEndpoint;
rpcSettings.UseAuth = true;
return rpcSettings;
diff --git a/ydb/public/sdk/cpp/client/resources/ydb_resources.cpp b/ydb/public/sdk/cpp/client/resources/ydb_resources.cpp
index 079e8a59a2..fec977630f 100644
--- a/ydb/public/sdk/cpp/client/resources/ydb_resources.cpp
+++ b/ydb/public/sdk/cpp/client/resources/ydb_resources.cpp
@@ -4,10 +4,10 @@
namespace NYdb {
-const char* YDB_AUTH_TICKET_HEADER = "x-ydb-auth-ticket";
-const char* YDB_DATABASE_HEADER = "x-ydb-database";
-const char* YDB_TRACE_ID_HEADER = "x-ydb-trace-id";
-const char* YDB_SDK_BUILD_INFO_HEADER = "x-ydb-sdk-build-info";
+const char* YDB_AUTH_TICKET_HEADER = "x-ydb-auth-ticket";
+const char* YDB_DATABASE_HEADER = "x-ydb-database";
+const char* YDB_TRACE_ID_HEADER = "x-ydb-trace-id";
+const char* YDB_SDK_BUILD_INFO_HEADER = "x-ydb-sdk-build-info";
const char* YDB_REQUEST_TYPE_HEADER = "x-ydb-request-type";
const char* YDB_CONSUMED_UNITS_HEADER = "x-ydb-consumed-units";
diff --git a/ydb/public/sdk/cpp/client/resources/ydb_resources.h b/ydb/public/sdk/cpp/client/resources/ydb_resources.h
index 61dee0d2f4..c015bfca7e 100644
--- a/ydb/public/sdk/cpp/client/resources/ydb_resources.h
+++ b/ydb/public/sdk/cpp/client/resources/ydb_resources.h
@@ -4,10 +4,10 @@
namespace NYdb {
-extern const char* YDB_AUTH_TICKET_HEADER;
-extern const char* YDB_DATABASE_HEADER;
-extern const char* YDB_TRACE_ID_HEADER;
-extern const char* YDB_SDK_BUILD_INFO_HEADER;
+extern const char* YDB_AUTH_TICKET_HEADER;
+extern const char* YDB_DATABASE_HEADER;
+extern const char* YDB_TRACE_ID_HEADER;
+extern const char* YDB_SDK_BUILD_INFO_HEADER;
extern const char* YDB_REQUEST_TYPE_HEADER;
extern const char* YDB_CONSUMED_UNITS_HEADER;
extern const char* YDB_SERVER_HINTS;
diff --git a/ydb/public/sdk/cpp/client/ydb_types/request_settings.h b/ydb/public/sdk/cpp/client/ydb_types/request_settings.h
index fb8aa8ac68..336ea5e228 100644
--- a/ydb/public/sdk/cpp/client/ydb_types/request_settings.h
+++ b/ydb/public/sdk/cpp/client/ydb_types/request_settings.h
@@ -4,19 +4,19 @@
#include <util/datetime/base.h>
-#include <vector>
-#include <utility>
-
+#include <vector>
+#include <utility>
+
namespace NYdb {
template<typename TDerived>
struct TRequestSettings {
using TSelf = TDerived;
- using THeader = std::vector<std::pair<TString, TString>>;
+ using THeader = std::vector<std::pair<TString, TString>>;
FLUENT_SETTING(TString, TraceId);
FLUENT_SETTING(TString, RequestType);
- FLUENT_SETTING(THeader, Header);
+ FLUENT_SETTING(THeader, Header);
TRequestSettings() = default;
@@ -24,7 +24,7 @@ struct TRequestSettings {
explicit TRequestSettings(const TRequestSettings<T>& other)
: TraceId_(other.TraceId_)
, RequestType_(other.RequestType_)
- , Header_(other.Header_)
+ , Header_(other.Header_)
{}
};
diff --git a/ydb/services/ydb/ydb_common_ut.h b/ydb/services/ydb/ydb_common_ut.h
index c067928c78..2e2ca6a118 100644
--- a/ydb/services/ydb/ydb_common_ut.h
+++ b/ydb/services/ydb/ydb_common_ut.h
@@ -46,7 +46,7 @@ public:
NKikimrConfig::TAppConfig appConfig = {},
const TVector<NKikimrKqp::TKqpSetting>& kqpSettings = {},
TAutoPtr<TLogBackend> logBackend = {},
- bool enableYq = false,
+ bool enableYq = false,
TAppPrepare::TFnReg udfFrFactory = nullptr,
std::function<void(TServerSettings& settings)> builder = nullptr)
{
@@ -77,7 +77,7 @@ public:
ServerSettings->SetEnableNotNullColumns(true);
ServerSettings->SetEnableSystemViews(TestSettings::EnableSystemViews);
ServerSettings->SetEnableSchemeTransactionsAtSchemeShard(true);
- ServerSettings->SetEnableYq(enableYq);
+ ServerSettings->SetEnableYq(enableYq);
ServerSettings->Formats = new TFormatFactory;
ServerSettings->PQConfig = appConfig.GetPQConfig();
if (appConfig.HasMeteringConfig() && appConfig.GetMeteringConfig().HasMeteringFilePath()) {
diff --git a/ydb/services/yq/grpc_service.cpp b/ydb/services/yq/grpc_service.cpp
index bb71dde092..d18b2ce29a 100644
--- a/ydb/services/yq/grpc_service.cpp
+++ b/ydb/services/yq/grpc_service.cpp
@@ -1,40 +1,40 @@
-#include "grpc_service.h"
-
+#include "grpc_service.h"
+
#include <ydb/core/grpc_services/grpc_helper.h>
#include <ydb/core/grpc_services/grpc_request_proxy.h>
#include <ydb/core/grpc_services/rpc_calls.h>
#include <ydb/core/grpc_services/service_yq.h>
#include <ydb/library/protobuf_printer/security_printer.h>
-
-namespace NKikimr::NGRpcService {
-
-TGRpcYandexQueryService::TGRpcYandexQueryService(NActors::TActorSystem *system,
- TIntrusivePtr<NMonitoring::TDynamicCounters> counters, NActors::TActorId id)
- : ActorSystem_(system)
- , Counters_(counters)
- , GRpcRequestProxyId_(id) {}
-
-void TGRpcYandexQueryService::InitService(grpc::ServerCompletionQueue *cq, NGrpc::TLoggerPtr logger) {
- CQ_ = cq;
- SetupIncomingRequests(std::move(logger));
-}
-
-void TGRpcYandexQueryService::SetGlobalLimiterHandle(NGrpc::TGlobalLimiter* limiter) {
- Limiter_ = limiter;
-}
-
-bool TGRpcYandexQueryService::IncRequest() {
- return Limiter_->Inc();
-}
-
-void TGRpcYandexQueryService::DecRequest() {
- Limiter_->Dec();
- Y_ASSERT(Limiter_->GetCurrentInFlight() >= 0);
-}
-
-void TGRpcYandexQueryService::SetupIncomingRequests(NGrpc::TLoggerPtr logger) {
- auto getCounterBlock = CreateCounterCb(Counters_, ActorSystem_);
-
+
+namespace NKikimr::NGRpcService {
+
+TGRpcYandexQueryService::TGRpcYandexQueryService(NActors::TActorSystem *system,
+ TIntrusivePtr<NMonitoring::TDynamicCounters> counters, NActors::TActorId id)
+ : ActorSystem_(system)
+ , Counters_(counters)
+ , GRpcRequestProxyId_(id) {}
+
+void TGRpcYandexQueryService::InitService(grpc::ServerCompletionQueue *cq, NGrpc::TLoggerPtr logger) {
+ CQ_ = cq;
+ SetupIncomingRequests(std::move(logger));
+}
+
+void TGRpcYandexQueryService::SetGlobalLimiterHandle(NGrpc::TGlobalLimiter* limiter) {
+ Limiter_ = limiter;
+}
+
+bool TGRpcYandexQueryService::IncRequest() {
+ return Limiter_->Inc();
+}
+
+void TGRpcYandexQueryService::DecRequest() {
+ Limiter_->Dec();
+ Y_ASSERT(Limiter_->GetCurrentInFlight() >= 0);
+}
+
+void TGRpcYandexQueryService::SetupIncomingRequests(NGrpc::TLoggerPtr logger) {
+ auto getCounterBlock = CreateCounterCb(Counters_, ActorSystem_);
+
static const TVector<TString> CreateQueryPermissions = {
"yq.queries.create",
"yq.queries.invoke",
@@ -143,9 +143,9 @@ void TGRpcYandexQueryService::SetupIncomingRequests(NGrpc::TLoggerPtr logger) {
"yq.resources.managePrivate"
};
-#ifdef ADD_REQUEST
-#error ADD_REQUEST macro already defined
-#endif
+#ifdef ADD_REQUEST
+#error ADD_REQUEST macro already defined
+#endif
#define ADD_REQUEST(NAME, CB, PERMISSIONS) \
MakeIntrusive<TGRpcRequest<YandexQuery::NAME##Request, YandexQuery::NAME##Response, TGRpcYandexQueryService, TSecurityTextFormatPrinter<YandexQuery::NAME##Request>, TSecurityTextFormatPrinter<YandexQuery::NAME##Response>>>( \
this, &Service_, CQ_, \
@@ -158,7 +158,7 @@ MakeIntrusive<TGRpcRequest<YandexQuery::NAME##Request, YandexQuery::NAME##Respon
&YandexQuery::V1::YandexQueryService::AsyncService::Request##NAME, \
#NAME, logger, getCounterBlock("yq", #NAME)) \
->Run(); \
-
+
ADD_REQUEST(CreateQuery, DoYandexQueryCreateQueryRequest, CreateQueryPermissions)
ADD_REQUEST(ListQueries, DoYandexQueryListQueriesRequest, ListQueriesPermissions)
ADD_REQUEST(DescribeQuery, DoYandexQueryDescribeQueryRequest, DescribeQueryPermissions)
@@ -180,9 +180,9 @@ MakeIntrusive<TGRpcRequest<YandexQuery::NAME##Request, YandexQuery::NAME##Respon
ADD_REQUEST(DescribeBinding, DoDescribeBindingRequest, DescribeBindingPermissions)
ADD_REQUEST(ModifyBinding, DoModifyBindingRequest, ModifyBindingPermissions)
ADD_REQUEST(DeleteBinding, DoDeleteBindingRequest, DeleteBindingPermissions)
-
+
#undef ADD_REQUEST
-
-}
-
-} // namespace NKikimr::NGRpcService
+
+}
+
+} // namespace NKikimr::NGRpcService
diff --git a/ydb/services/yq/grpc_service.h b/ydb/services/yq/grpc_service.h
index 6cb8d70c64..3140d03ca5 100644
--- a/ydb/services/yq/grpc_service.h
+++ b/ydb/services/yq/grpc_service.h
@@ -1,36 +1,36 @@
-#pragma once
-
-#include <library/cpp/actors/core/actorsystem.h>
-
-#include <library/cpp/grpc/server/grpc_server.h>
-
+#pragma once
+
+#include <library/cpp/actors/core/actorsystem.h>
+
+#include <library/cpp/grpc/server/grpc_server.h>
+
#include <ydb/public/api/grpc/yq_v1.grpc.pb.h>
-
-namespace NKikimr {
-namespace NGRpcService {
-
-class TGRpcYandexQueryService
- : public NGrpc::TGrpcServiceBase<YandexQuery::V1::YandexQueryService>
-{
-public:
- TGRpcYandexQueryService(NActors::TActorSystem* system, TIntrusivePtr<NMonitoring::TDynamicCounters> counters,
- NActors::TActorId id);
-
- void InitService(grpc::ServerCompletionQueue* cq, NGrpc::TLoggerPtr logger) override;
- void SetGlobalLimiterHandle(NGrpc::TGlobalLimiter* limiter) override;
-
- bool IncRequest();
- void DecRequest();
-private:
- void SetupIncomingRequests(NGrpc::TLoggerPtr logger);
-
- NActors::TActorSystem* ActorSystem_;
+
+namespace NKikimr {
+namespace NGRpcService {
+
+class TGRpcYandexQueryService
+ : public NGrpc::TGrpcServiceBase<YandexQuery::V1::YandexQueryService>
+{
+public:
+ TGRpcYandexQueryService(NActors::TActorSystem* system, TIntrusivePtr<NMonitoring::TDynamicCounters> counters,
+ NActors::TActorId id);
+
+ void InitService(grpc::ServerCompletionQueue* cq, NGrpc::TLoggerPtr logger) override;
+ void SetGlobalLimiterHandle(NGrpc::TGlobalLimiter* limiter) override;
+
+ bool IncRequest();
+ void DecRequest();
+private:
+ void SetupIncomingRequests(NGrpc::TLoggerPtr logger);
+
+ NActors::TActorSystem* ActorSystem_;
grpc::ServerCompletionQueue* CQ_ = nullptr;
-
- TIntrusivePtr<NMonitoring::TDynamicCounters> Counters_;
- NActors::TActorId GRpcRequestProxyId_;
+
+ TIntrusivePtr<NMonitoring::TDynamicCounters> Counters_;
+ NActors::TActorId GRpcRequestProxyId_;
NGrpc::TGlobalLimiter* Limiter_ = nullptr;
-};
-
-} // namespace NGRpcService
-} // namespace NKikimr
+};
+
+} // namespace NGRpcService
+} // namespace NKikimr
diff --git a/ydb/services/yq/private_grpc.cpp b/ydb/services/yq/private_grpc.cpp
index c4c076b482..6e1f1534db 100644
--- a/ydb/services/yq/private_grpc.cpp
+++ b/ydb/services/yq/private_grpc.cpp
@@ -39,7 +39,7 @@ void TGRpcYqPrivateTaskService::SetupIncomingRequests(NGrpc::TLoggerPtr logger)
#error ADD_REQUEST macro already defined
#endif
#define ADD_REQUEST(NAME, CB) \
-MakeIntrusive<TGRpcRequest<Yq::Private::NAME##Request, Yq::Private::NAME##Response, TGRpcYqPrivateTaskService, TSecurityTextFormatPrinter<Yq::Private::NAME##Request>, TSecurityTextFormatPrinter<Yq::Private::NAME##Response>>>( \
+MakeIntrusive<TGRpcRequest<Yq::Private::NAME##Request, Yq::Private::NAME##Response, TGRpcYqPrivateTaskService, TSecurityTextFormatPrinter<Yq::Private::NAME##Request>, TSecurityTextFormatPrinter<Yq::Private::NAME##Response>>>( \
this, &Service_, CQ_, \
[this](NGrpc::IRequestContextBase *ctx) { \
NGRpcService::ReportGrpcReqToMon(*ActorSystem_, ctx->GetPeer()); \
diff --git a/ydb/services/yq/ut_integration/ut_utils.cpp b/ydb/services/yq/ut_integration/ut_utils.cpp
index 925f74f7b3..9cb4c16623 100644
--- a/ydb/services/yq/ut_integration/ut_utils.cpp
+++ b/ydb/services/yq/ut_integration/ut_utils.cpp
@@ -40,7 +40,7 @@ void UpsertToExistingTable(TDriver& driver, const TString& location){
paramsBuilder.AddParam("$now").Timestamp(now).Build();
auto params = paramsBuilder.Build();
- const TString scope = TScope("some_folder_id").ToString();
+ const TString scope = TScope("some_folder_id").ToString();
{
auto result = session.ExecuteSchemeQuery(
diff --git a/ydb/services/yq/ut_integration/ya.make b/ydb/services/yq/ut_integration/ya.make
index bc62df4563..b384b23d5d 100644
--- a/ydb/services/yq/ut_integration/ya.make
+++ b/ydb/services/yq/ut_integration/ya.make
@@ -12,7 +12,7 @@ SIZE(MEDIUM)
SRCS(
ut_utils.cpp
- yq_ut.cpp
+ yq_ut.cpp
)
PEERDIR(
diff --git a/ydb/services/yq/ut_integration/yq_ut.cpp b/ydb/services/yq/ut_integration/yq_ut.cpp
index d4a35f195e..8dc4cf0f93 100644
--- a/ydb/services/yq/ut_integration/yq_ut.cpp
+++ b/ydb/services/yq/ut_integration/yq_ut.cpp
@@ -9,11 +9,11 @@
#include <ydb/core/yq/libs/control_plane_storage/message_builders.h>
#include <ydb/core/yq/libs/actors/database_resolver.h>
-
+
#include <ydb/library/yql/public/issue/yql_issue_message.h>
#include <library/cpp/protobuf/util/pb_io.h>
-#include <library/cpp/retry/retry.h>
+#include <library/cpp/retry/retry.h>
#include <util/system/mutex.h>
#include "ut_utils.h"
#include <google/protobuf/util/time_util.h>
@@ -24,7 +24,7 @@
#include <util/string/split.h>
using namespace NYdb;
-using namespace YandexQuery;;
+using namespace YandexQuery;;
using namespace NYdb::NYq;
namespace {
@@ -40,7 +40,7 @@ namespace {
Cerr << ">>> Issues: " << issues.ToString() << Endl;
}
- TString CreateNewHistoryAndWaitFinish(const TString& folderId,
+ TString CreateNewHistoryAndWaitFinish(const TString& folderId,
NYdb::NYq::TClient& client, const TString& yqlText,
const YandexQuery::QueryMeta::ComputeStatus& expectedStatusResult)
{
@@ -51,7 +51,7 @@ namespace {
.SetText(yqlText)
.Build();
auto result = client.CreateQuery(
- request, CreateYqSettings<TCreateQuerySettings>(folderId))
+ request, CreateYqSettings<TCreateQuerySettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
@@ -85,7 +85,7 @@ namespace {
.SetQueryId(queryId)
.Build();
const auto result = client.GetResultData(
- request, CreateYqSettings<TGetResultDataSettings>(folderId))
+ request, CreateYqSettings<TGetResultDataSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
@@ -103,16 +103,16 @@ namespace {
}
}
-Y_UNIT_TEST_SUITE(Yq_1) {
+Y_UNIT_TEST_SUITE(Yq_1) {
Y_UNIT_TEST(Basic) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
NYdb::NYq::TClient client(driver);
const auto folderId = "some_folder_id";
- const auto queryId = CreateNewHistoryAndWaitFinish(folderId, client, "select 1", YandexQuery::QueryMeta::COMPLETED);
- CheckGetResultData(client, queryId, folderId, 1, 1, 1);
+ const auto queryId = CreateNewHistoryAndWaitFinish(folderId, client, "select 1", YandexQuery::QueryMeta::COMPLETED);
+ CheckGetResultData(client, queryId, folderId, 1, 1, 1);
{
const auto request = ::NYq::TDescribeQueryBuilder()
@@ -120,7 +120,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.Build();
const auto result = DoWithRetryOnRetCode([&]() {
auto result = client.DescribeQuery(
- request, CreateYqSettings<TDescribeQuerySettings>("WTF"))
+ request, CreateYqSettings<TDescribeQuerySettings>("WTF"))
.ExtractValueSync();
return result.GetStatus() == EStatus::BAD_REQUEST;
}, TRetryOptions(Retries));
@@ -131,7 +131,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
auto request = ::NYq::TListQueriesBuilder{}.Build();
auto result = DoWithRetryOnRetCode([&]() {
auto result = client.ListQueries(
- request, CreateYqSettings<TListQueriesSettings>("WTF"))
+ request, CreateYqSettings<TListQueriesSettings>("WTF"))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
UNIT_ASSERT_VALUES_EQUAL(result.GetResult().query().size(), 0);
@@ -145,7 +145,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.SetQueryId(queryId)
.Build();
auto result = client.DescribeQuery(
- request, CreateYqSettings<TDescribeQuerySettings>(folderId))
+ request, CreateYqSettings<TDescribeQuerySettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
const auto status = result.GetResult().query().meta().status();
@@ -158,7 +158,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.SetName("MODIFIED_NAME")
.Build();
const auto result = client.ModifyQuery(
- request, CreateYqSettings<TModifyQuerySettings>(folderId))
+ request, CreateYqSettings<TModifyQuerySettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
}
@@ -168,7 +168,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.SetQueryId(queryId)
.Build();
const auto result = client.DescribeQuery(
- request, CreateYqSettings<TDescribeQuerySettings>(folderId))
+ request, CreateYqSettings<TDescribeQuerySettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
const auto& res = result.GetResult();
@@ -181,7 +181,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.SetQueryId("")
.Build();
const auto result = client.DescribeQuery(
- request, CreateYqSettings<TDescribeQuerySettings>(""))
+ request, CreateYqSettings<TDescribeQuerySettings>(""))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::BAD_REQUEST, result.GetIssues().ToString());
}
@@ -191,14 +191,14 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.SetQueryId("")
.Build();
const auto result = client.GetResultData(
- request, CreateYqSettings<TGetResultDataSettings>(""))
+ request, CreateYqSettings<TGetResultDataSettings>(""))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::BAD_REQUEST, result.GetIssues().ToString());
}
}
Y_UNIT_TEST(Basic_EmptyTable) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
@@ -211,20 +211,20 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.CreateYdb("Root", location, "")
.Build();
const auto result = client
- .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
+ .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::SUCCESS, result.GetIssues().ToString());
}
const TString queryId = CreateNewHistoryAndWaitFinish(
- folderId, client,
+ folderId, client,
"select count(*) from testdbempty.`yq/empty_table`",
YandexQuery::QueryMeta::COMPLETED);
- CheckGetResultData(client, queryId, folderId, 1, 1, 0);
+ CheckGetResultData(client, queryId, folderId, 1, 1, 0);
}
Y_UNIT_TEST(Basic_EmptyList) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
@@ -235,7 +235,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
}
Y_UNIT_TEST(Basic_EmptyDict) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
@@ -246,7 +246,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
}
Y_UNIT_TEST(Basic_Null) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
@@ -257,7 +257,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
}
SIMPLE_UNIT_FORKED_TEST(Basic_Tagged) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
@@ -283,7 +283,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
}
Y_UNIT_TEST(Basic_TaggedLiteral) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
@@ -296,7 +296,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
// use fork for data test due to ch initialization problem
SIMPLE_UNIT_FORKED_TEST(ExtendedDatabaseId) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
@@ -309,7 +309,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.CreateYdb("FakeDatabaseId", "")
.Build();
const auto result = client
- .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
+ .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::SUCCESS, result.GetIssues().ToString());
}
@@ -320,27 +320,27 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.CreateYdb("FakeDatabaseId", "")
.Build();
const auto result = client
- .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
+ .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::SUCCESS, result.GetIssues().ToString());
}
{
- const auto queryId = CreateNewHistoryAndWaitFinish(folderId, client,
+ const auto queryId = CreateNewHistoryAndWaitFinish(folderId, client,
"select count(*) from testdb01.`yq/connections`", YandexQuery::QueryMeta::COMPLETED);
- CheckGetResultData(client, queryId, folderId, 1, 1, 2);
+ CheckGetResultData(client, queryId, folderId, 1, 1, 2);
}
{
// test connections db with 2 databaseId
- const auto queryId = CreateNewHistoryAndWaitFinish(folderId, client,
+ const auto queryId = CreateNewHistoryAndWaitFinish(folderId, client,
"select count(*) from testdb02.`yq/connections`", YandexQuery::QueryMeta::COMPLETED);
- CheckGetResultData(client, queryId, folderId, 1, 1, 2);
+ CheckGetResultData(client, queryId, folderId, 1, 1, 2);
}
}
Y_UNIT_TEST(DescribeConnection) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
@@ -353,7 +353,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.CreateYdb("created_db", "")
.Build();
const auto result = client
- .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
+ .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::SUCCESS, result.GetIssues().ToString());
conId = result.GetResult().connection_id();
@@ -363,7 +363,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.SetConnectionId(conId)
.Build();
auto result = client
- .DescribeConnection(request, CreateYqSettings<TDescribeConnectionSettings>(folderId))
+ .DescribeConnection(request, CreateYqSettings<TDescribeConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::SUCCESS);
const auto& res = result.GetResult().connection();
@@ -375,7 +375,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
}
Y_UNIT_TEST(ListConnections) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
@@ -389,7 +389,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.CreateYdb("FakeDatabaseId", "")
.Build();
const auto result = client
- .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
+ .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::SUCCESS, result.GetIssues().ToString());
}
@@ -400,7 +400,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.CreateDataStreams("FakeDatabaseId", "") // We can use the same db in yds and ydb
.Build();
const auto result = client
- .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
+ .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::SUCCESS, result.GetIssues().ToString());
}
@@ -408,7 +408,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
{
const auto request = ::NYq::TListConnectionsBuilder().Build();
auto result = client
- .ListConnections(request, CreateYqSettings<TListConnectionsSettings>(folderId))
+ .ListConnections(request, CreateYqSettings<TListConnectionsSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
UNIT_ASSERT_VALUES_EQUAL(result.GetResult().connection().size(), conns);
@@ -435,7 +435,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
}
Y_UNIT_TEST(ListConnectionsOnEmptyConnectionsTable) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
@@ -444,7 +444,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
{
const auto request = ::NYq::TListConnectionsBuilder().Build();
auto result = client
- .ListConnections(request, CreateYqSettings<TListConnectionsSettings>("WTF"))
+ .ListConnections(request, CreateYqSettings<TListConnectionsSettings>("WTF"))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
UNIT_ASSERT(result.GetResult().connection().empty());
@@ -452,7 +452,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
}
Y_UNIT_TEST(ModifyConnections) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
TString userToken = "root@builtin";
@@ -468,7 +468,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.CreateYdb("created_db", "")
.Build();
const auto result = client
- .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
+ .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::SUCCESS, result.GetIssues().ToString());
conId = result.GetResult().connection_id();
@@ -482,7 +482,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.SetDescription("Modified")
.Build();
const auto result = client
- .ModifyConnection(request, CreateYqSettings<TModifyConnectionSettings>(folderId))
+ .ModifyConnection(request, CreateYqSettings<TModifyConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::SUCCESS, result.GetIssues().ToString());
}
@@ -492,7 +492,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.SetConnectionId(conId)
.Build();
auto result = client
- .DescribeConnection(request, CreateYqSettings<TDescribeConnectionSettings>(folderId))
+ .DescribeConnection(request, CreateYqSettings<TDescribeConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
const auto& res = result.GetResult().connection();
@@ -505,7 +505,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
}
Y_UNIT_TEST(DeleteConnections) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
@@ -519,7 +519,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.CreateYdb("created_db", "")
.Build();
const auto result = client
- .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
+ .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::SUCCESS, result.GetIssues().ToString());
conId = result.GetResult().connection_id();
@@ -531,14 +531,14 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.Build();
const auto result = client
- .DeleteConnection(request, CreateYqSettings<TDeleteConnectionSettings>(folderId))
+ .DeleteConnection(request, CreateYqSettings<TDeleteConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::SUCCESS, result.GetIssues().ToString());
}
}
Y_UNIT_TEST(Create_And_Modify_The_Same_Connection) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
TString userToken = "root@builtin";
@@ -554,7 +554,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.CreateYdb("created_db", "")
.Build();
const auto result = client
- .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
+ .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::SUCCESS, result.GetIssues().ToString());
conId = result.GetResult().connection_id();
@@ -566,14 +566,14 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.CreateYdb("modified_db", "")//TODO remove
.Build();
const auto result = client
- .ModifyConnection(request, CreateYqSettings<TModifyConnectionSettings>(folderId))
+ .ModifyConnection(request, CreateYqSettings<TModifyConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::SUCCESS, result.GetIssues().ToString());
}
}
Y_UNIT_TEST(CreateConnection_With_Existing_Name) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
TString userToken = "root@builtin";
@@ -590,7 +590,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.CreateYdb("created_db", "")
.Build();
const auto result = client
- .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
+ .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::SUCCESS, result.GetIssues().ToString());
}
@@ -601,14 +601,14 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.CreateYdb("created_db", "")
.Build();
const auto result = client
- .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
+ .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::BAD_REQUEST, result.GetIssues().ToString()); //TODO status should be ALREADY_EXISTS
}
}
Y_UNIT_TEST(CreateConnections_With_Idempotency) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
TString userToken = "root@builtin";
@@ -627,7 +627,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.CreateYdb("created_db", "")
.Build();
const auto result = client
- .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
+ .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::SUCCESS, result.GetIssues().ToString());
conId = result.GetResult().connection_id();
@@ -640,7 +640,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.CreateYdb("created_db", "")
.Build();
const auto result = client
- .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
+ .CreateConnection(request, CreateYqSettings<TCreateConnectionSettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_C(result.GetStatus() == EStatus::SUCCESS, result.GetIssues().ToString());
UNIT_ASSERT_VALUES_EQUAL(conId, result.GetResult().connection_id());
@@ -648,7 +648,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
}
Y_UNIT_TEST(CreateQuery_With_Idempotency) {//TODO Fix
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
TString userToken = "root@builtin";
@@ -666,7 +666,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
{
auto result = client.CreateQuery(
- request, CreateYqSettings<TCreateQuerySettings>(folderId))
+ request, CreateYqSettings<TCreateQuerySettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
queryId = result.GetResult().query_id();
@@ -678,7 +678,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.Build();
const auto result = DoWithRetryOnRetCode([&]() {
auto result = client.DescribeQuery(
- req, CreateYqSettings<TDescribeQuerySettings>(folderId))
+ req, CreateYqSettings<TDescribeQuerySettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
const auto status = result.GetResult().query().meta().status();
@@ -689,18 +689,18 @@ Y_UNIT_TEST_SUITE(Yq_1) {
}
{
auto result = client.CreateQuery(
- request, CreateYqSettings<TCreateQuerySettings>(folderId))
+ request, CreateYqSettings<TCreateQuerySettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
UNIT_ASSERT_VALUES_EQUAL(queryId, result.GetResult().query_id());
}
- CheckGetResultData(client, queryId, folderId, 1, 1, 1);
+ CheckGetResultData(client, queryId, folderId, 1, 1, 1);
}
// use fork for data test due to ch initialization problem
SIMPLE_UNIT_FORKED_TEST(CreateQuery_Without_Connection) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
TString userToken = "root@builtin";
@@ -708,12 +708,12 @@ Y_UNIT_TEST_SUITE(Yq_1) {
NYdb::NYq::TClient client(driver);
const TString yqlText = "select count(*) from testdbWTF.`connections`";
- CreateNewHistoryAndWaitFinish("folder_id_WTF", client,
+ CreateNewHistoryAndWaitFinish("folder_id_WTF", client,
yqlText, YandexQuery::QueryMeta::FAILED);
}
Y_UNIT_TEST(DeleteQuery) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
TString userToken = "root@builtin";
@@ -722,16 +722,16 @@ Y_UNIT_TEST_SUITE(Yq_1) {
const auto folderId = TString(__func__) + "folder_id";
const TString yqlText = "select 1";
- const TString queryId = CreateNewHistoryAndWaitFinish(folderId, client,
+ const TString queryId = CreateNewHistoryAndWaitFinish(folderId, client,
yqlText, YandexQuery::QueryMeta::COMPLETED);
- CheckGetResultData(client, queryId, folderId, 1, 1, 1);
+ CheckGetResultData(client, queryId, folderId, 1, 1, 1);
{
const auto request = ::NYq::TDeleteQueryBuilder()
.SetQueryId(queryId)
.Build();
auto result = client
- .DeleteQuery(request, CreateYqSettings<TDeleteQuerySettings>(folderId))
+ .DeleteQuery(request, CreateYqSettings<TDeleteQuerySettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL(result.IsTransportError(), false);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
@@ -742,14 +742,14 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.SetQueryId(queryId)
.Build();
auto result = client
- .DescribeQuery(request, CreateYqSettings<TDescribeQuerySettings>(folderId))
+ .DescribeQuery(request, CreateYqSettings<TDescribeQuerySettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::BAD_REQUEST, result.GetIssues().ToString());
}
}
Y_UNIT_TEST(ModifyQuery) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
TString userToken = "root@builtin";
@@ -758,9 +758,9 @@ Y_UNIT_TEST_SUITE(Yq_1) {
const auto folderId = TString(__func__) + "folder_id";
const TString yqlText = "select 1";
- const TString queryId = CreateNewHistoryAndWaitFinish(folderId, client,
+ const TString queryId = CreateNewHistoryAndWaitFinish(folderId, client,
yqlText, YandexQuery::QueryMeta::COMPLETED);
- CheckGetResultData(client, queryId, folderId, 1, 1, 1);
+ CheckGetResultData(client, queryId, folderId, 1, 1, 1);
{
const auto request = ::NYq::TModifyQueryBuilder()
@@ -769,7 +769,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.SetDescription("OK")
.Build();
auto result = client
- .ModifyQuery(request, CreateYqSettings<TModifyQuerySettings>(folderId))
+ .ModifyQuery(request, CreateYqSettings<TModifyQuerySettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL(result.IsTransportError(), false);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
@@ -780,7 +780,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
.SetQueryId(queryId)
.Build();
auto result = client
- .DescribeQuery(request, CreateYqSettings<TDescribeQuerySettings>(folderId))
+ .DescribeQuery(request, CreateYqSettings<TDescribeQuerySettings>(folderId))
.ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
const auto& query = result.GetResult().query();
@@ -855,7 +855,7 @@ Y_UNIT_TEST_SUITE(Yq_1) {
}
}
-Y_UNIT_TEST_SUITE(Yq_2) {
+Y_UNIT_TEST_SUITE(Yq_2) {
// use fork for data test due to ch initialization problem
Y_UNIT_TEST(Test_HostNameTrasformation) {
UNIT_ASSERT_VALUES_EQUAL(::NYq::TransformMdbHostToCorrectFormat("rc1c-p5waby2y5y1kb5ue.mdb.yandexcloud.net"), "rc1c-p5waby2y5y1kb5ue.db.yandex.net:8443");
@@ -863,79 +863,79 @@ Y_UNIT_TEST_SUITE(Yq_2) {
UNIT_ASSERT_VALUES_EQUAL(::NYq::TransformMdbHostToCorrectFormat("host."), "host.db.yandex.net:8443");
}
- SIMPLE_UNIT_FORKED_TEST(ReadFromYdbOverYq) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
- ui16 grpc = server.GetPort();
- TString location = TStringBuilder() << "localhost:" << grpc;
- auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
- NYdb::NYq::TClient client(driver);
- const auto folderId = TString(__func__) + "folder_id";
-
- {
- auto request = ::NYq::TCreateConnectionBuilder{}
- .SetName("testdb00")
- .CreateYdb("Root", location, "")
- .Build();
-
- auto result = client.CreateConnection(
- request, CreateYqSettings<TCreateConnectionSettings>(folderId))
- .ExtractValueSync();
-
- UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
- }
-
- TString queryId;
- {
- auto request = ::NYq::TCreateQueryBuilder{}
+ SIMPLE_UNIT_FORKED_TEST(ReadFromYdbOverYq) {
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ ui16 grpc = server.GetPort();
+ TString location = TStringBuilder() << "localhost:" << grpc;
+ auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
+ NYdb::NYq::TClient client(driver);
+ const auto folderId = TString(__func__) + "folder_id";
+
+ {
+ auto request = ::NYq::TCreateConnectionBuilder{}
+ .SetName("testdb00")
+ .CreateYdb("Root", location, "")
+ .Build();
+
+ auto result = client.CreateConnection(
+ request, CreateYqSettings<TCreateConnectionSettings>(folderId))
+ .ExtractValueSync();
+
+ UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
+ }
+
+ TString queryId;
+ {
+ auto request = ::NYq::TCreateQueryBuilder{}
.SetText("select count(*) from testdb00.`yq/connections`")
- .Build();
- auto result = client.CreateQuery(
- request, CreateYqSettings<TCreateQuerySettings>(folderId))
- .ExtractValueSync();
-
- UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
- queryId = result.GetResult().query_id();
- }
-
- {
- auto request = ::NYq::TDescribeQueryBuilder{}.SetQueryId(queryId).Build();
- auto result = DoWithRetryOnRetCode([&]() {
- auto result = client.DescribeQuery(
- request, CreateYqSettings<TDescribeQuerySettings>(folderId))
- .ExtractValueSync();
- UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
- const auto status = result.GetResult().query().meta().status();
+ .Build();
+ auto result = client.CreateQuery(
+ request, CreateYqSettings<TCreateQuerySettings>(folderId))
+ .ExtractValueSync();
+
+ UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
+ queryId = result.GetResult().query_id();
+ }
+
+ {
+ auto request = ::NYq::TDescribeQueryBuilder{}.SetQueryId(queryId).Build();
+ auto result = DoWithRetryOnRetCode([&]() {
+ auto result = client.DescribeQuery(
+ request, CreateYqSettings<TDescribeQuerySettings>(folderId))
+ .ExtractValueSync();
+ UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
+ const auto status = result.GetResult().query().meta().status();
PrintProtoIssues(result.GetResult().query().issue());
- return status == YandexQuery::QueryMeta::COMPLETED;
- }, TRetryOptions(10));
- UNIT_ASSERT_C(result, "the execution of the query did not end within the time limit");
- }
-
- {
- auto request = ::NYq::TGetResultDataBuilder{}.SetQueryId(queryId).Build();
- auto result = client.GetResultData(
- request, CreateYqSettings<TGetResultDataSettings>(folderId))
- .ExtractValueSync();
- UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
-
- const auto& resultSet = result.GetResult().result_set();
- UNIT_ASSERT_VALUES_EQUAL(resultSet.rows().size(), 1);
- UNIT_ASSERT_VALUES_EQUAL(resultSet.columns().size(), 1);
+ return status == YandexQuery::QueryMeta::COMPLETED;
+ }, TRetryOptions(10));
+ UNIT_ASSERT_C(result, "the execution of the query did not end within the time limit");
+ }
+
+ {
+ auto request = ::NYq::TGetResultDataBuilder{}.SetQueryId(queryId).Build();
+ auto result = client.GetResultData(
+ request, CreateYqSettings<TGetResultDataSettings>(folderId))
+ .ExtractValueSync();
+ UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
+
+ const auto& resultSet = result.GetResult().result_set();
+ UNIT_ASSERT_VALUES_EQUAL(resultSet.rows().size(), 1);
+ UNIT_ASSERT_VALUES_EQUAL(resultSet.columns().size(), 1);
UNIT_ASSERT_VALUES_EQUAL(resultSet.rows(0).items(0).uint64_value(), 1);
- }
- }
+ }
+ }
}
Y_UNIT_TEST_SUITE(PrivateApi) {
Y_UNIT_TEST(PingTask) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
::NYq::TPrivateClient client(driver);
const TString historyId = "id";
const TString folderId = "folder_id";
- const TScope scope(folderId);
+ const TScope scope(folderId);
{
Yq::Private::PingTaskRequest req;
req.mutable_query_id()->set_value("id");
@@ -949,7 +949,7 @@ Y_UNIT_TEST_SUITE(PrivateApi) {
}
Y_UNIT_TEST(GetTask) {//PendingFetcher can take task first
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
@@ -966,7 +966,7 @@ Y_UNIT_TEST_SUITE(PrivateApi) {
}
Y_UNIT_TEST(Nodes) {
- TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
+ TKikimrWithGrpcAndRootSchema server({}, {}, {}, true);
ui16 grpc = server.GetPort();
TString location = TStringBuilder() << "localhost:" << grpc;
auto driver = TDriver(TDriverConfig().SetEndpoint(location).SetAuthToken("root@builtin"));
diff --git a/ydb/services/yq/ya.make b/ydb/services/yq/ya.make
index 905c48a496..edc92f9c4e 100644
--- a/ydb/services/yq/ya.make
+++ b/ydb/services/yq/ya.make
@@ -1,26 +1,26 @@
-LIBRARY()
-
+LIBRARY()
+
OWNER(
g:kikimr
g:yq
)
-
-SRCS(
- grpc_service.cpp
+
+SRCS(
+ grpc_service.cpp
private_grpc.cpp
-)
-
-PEERDIR(
- library/cpp/grpc/server
+)
+
+PEERDIR(
+ library/cpp/grpc/server
library/cpp/retry
ydb/core/grpc_services
ydb/core/grpc_services/base
ydb/library/protobuf_printer
ydb/public/api/grpc
-)
-
-END()
-
-RECURSE_FOR_TESTS(
- ut_integration
-)
+)
+
+END()
+
+RECURSE_FOR_TESTS(
+ ut_integration
+)