summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniil Cherednik <[email protected]>2023-06-28 10:26:37 +0000
committerdcherednik <[email protected]>2023-06-28 13:26:37 +0300
commit21e20a77673c5662deb67ef574e8d524bc381bb1 (patch)
tree2c1b987890588f5736b436b406afeaa12477d1a6
parentbc1aaa964129ad4fba9f8ccac0bb9fc8619d8714 (diff)
AttachSession public api (UNIMPLEMENTED)
AttachSession public api (UNIMPLEMENTED) Pull Request resolved: #280
-rw-r--r--ydb/core/grpc_services/CMakeLists.darwin-x86_64.txt1
-rw-r--r--ydb/core/grpc_services/CMakeLists.linux-aarch64.txt1
-rw-r--r--ydb/core/grpc_services/CMakeLists.linux-x86_64.txt1
-rw-r--r--ydb/core/grpc_services/CMakeLists.windows-x86_64.txt1
-rw-r--r--ydb/core/grpc_services/query/rpc_attach_session.cpp12
-rw-r--r--ydb/core/grpc_services/query/service_query.h1
-rw-r--r--ydb/core/grpc_services/ya.make1
-rw-r--r--ydb/public/api/grpc/draft/ydb_query_v1.proto2
-rw-r--r--ydb/public/api/protos/draft/ydb_query.proto14
-rw-r--r--ydb/services/ydb/ydb_query.cpp7
-rw-r--r--ydb/services/ydb/ydb_query_ut.cpp28
11 files changed, 57 insertions, 12 deletions
diff --git a/ydb/core/grpc_services/CMakeLists.darwin-x86_64.txt b/ydb/core/grpc_services/CMakeLists.darwin-x86_64.txt
index a1f41aa61da..d2b235f8ea5 100644
--- a/ydb/core/grpc_services/CMakeLists.darwin-x86_64.txt
+++ b/ydb/core/grpc_services/CMakeLists.darwin-x86_64.txt
@@ -139,4 +139,5 @@ target_sources(ydb-core-grpc_services PRIVATE
${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_execute_query.cpp
${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_execute_script.cpp
${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_fetch_script_results.cpp
+ ${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_attach_session.cpp
)
diff --git a/ydb/core/grpc_services/CMakeLists.linux-aarch64.txt b/ydb/core/grpc_services/CMakeLists.linux-aarch64.txt
index 42b6878c872..f78de7db912 100644
--- a/ydb/core/grpc_services/CMakeLists.linux-aarch64.txt
+++ b/ydb/core/grpc_services/CMakeLists.linux-aarch64.txt
@@ -140,4 +140,5 @@ target_sources(ydb-core-grpc_services PRIVATE
${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_execute_query.cpp
${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_execute_script.cpp
${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_fetch_script_results.cpp
+ ${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_attach_session.cpp
)
diff --git a/ydb/core/grpc_services/CMakeLists.linux-x86_64.txt b/ydb/core/grpc_services/CMakeLists.linux-x86_64.txt
index 42b6878c872..f78de7db912 100644
--- a/ydb/core/grpc_services/CMakeLists.linux-x86_64.txt
+++ b/ydb/core/grpc_services/CMakeLists.linux-x86_64.txt
@@ -140,4 +140,5 @@ target_sources(ydb-core-grpc_services PRIVATE
${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_execute_query.cpp
${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_execute_script.cpp
${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_fetch_script_results.cpp
+ ${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_attach_session.cpp
)
diff --git a/ydb/core/grpc_services/CMakeLists.windows-x86_64.txt b/ydb/core/grpc_services/CMakeLists.windows-x86_64.txt
index a1f41aa61da..d2b235f8ea5 100644
--- a/ydb/core/grpc_services/CMakeLists.windows-x86_64.txt
+++ b/ydb/core/grpc_services/CMakeLists.windows-x86_64.txt
@@ -139,4 +139,5 @@ target_sources(ydb-core-grpc_services PRIVATE
${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_execute_query.cpp
${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_execute_script.cpp
${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_fetch_script_results.cpp
+ ${CMAKE_SOURCE_DIR}/ydb/core/grpc_services/query/rpc_attach_session.cpp
)
diff --git a/ydb/core/grpc_services/query/rpc_attach_session.cpp b/ydb/core/grpc_services/query/rpc_attach_session.cpp
new file mode 100644
index 00000000000..d529fb77a36
--- /dev/null
+++ b/ydb/core/grpc_services/query/rpc_attach_session.cpp
@@ -0,0 +1,12 @@
+#include "service_query.h"
+#include <ydb/core/grpc_services/base/base.h>
+
+namespace NKikimr::NGRpcService {
+namespace NQuery {
+
+void DoAttachSession(std::unique_ptr<IRequestNoOpCtx> p, const IFacilityProvider&) {
+ p->ReplyWithRpcStatus(grpc::StatusCode::UNIMPLEMENTED);
+}
+
+}
+}
diff --git a/ydb/core/grpc_services/query/service_query.h b/ydb/core/grpc_services/query/service_query.h
index d9225c5b815..4667760e0e1 100644
--- a/ydb/core/grpc_services/query/service_query.h
+++ b/ydb/core/grpc_services/query/service_query.h
@@ -14,6 +14,7 @@ void DoExecuteQuery(std::unique_ptr<IRequestNoOpCtx> p, const IFacilityProvider&
void DoExecuteScript(std::unique_ptr<IRequestNoOpCtx> p, const IFacilityProvider& f);
void DoFetchScriptResults(std::unique_ptr<IRequestNoOpCtx> p, const IFacilityProvider&);
void DoCreateSession(std::unique_ptr<IRequestNoOpCtx> p, const IFacilityProvider& f);
+void DoAttachSession(std::unique_ptr<IRequestNoOpCtx> p, const IFacilityProvider& f);
} // namespace NQuery
diff --git a/ydb/core/grpc_services/ya.make b/ydb/core/grpc_services/ya.make
index e45e685f0c2..282b97003a9 100644
--- a/ydb/core/grpc_services/ya.make
+++ b/ydb/core/grpc_services/ya.make
@@ -78,6 +78,7 @@ SRCS(
query/rpc_execute_query.cpp
query/rpc_execute_script.cpp
query/rpc_fetch_script_results.cpp
+ query/rpc_attach_session.cpp
query/service_query.h
)
diff --git a/ydb/public/api/grpc/draft/ydb_query_v1.proto b/ydb/public/api/grpc/draft/ydb_query_v1.proto
index 4bc10103efb..766261d1216 100644
--- a/ydb/public/api/grpc/draft/ydb_query_v1.proto
+++ b/ydb/public/api/grpc/draft/ydb_query_v1.proto
@@ -14,7 +14,7 @@ service QueryService {
// 3. Store state for volatile stateful operations, such as short-living transactions.
rpc CreateSession(Query.CreateSessionRequest) returns (Query.CreateSessionResponse);
rpc DeleteSession(Query.DeleteSessionRequest) returns (Query.DeleteSessionResponse);
- rpc PingSession(Query.PingSessionRequest) returns (Query.PingSessionResponse);
+ rpc AttachSession(Query.AttachSessionRequest) returns (stream Query.SessionState);
// Short-living transactions allow transactional execution of several queries, including support
// for interactive transactions. Transaction control can be implemented via flags in ExecuteQuery
diff --git a/ydb/public/api/protos/draft/ydb_query.proto b/ydb/public/api/protos/draft/ydb_query.proto
index ddbb808a3fa..ad87797041d 100644
--- a/ydb/public/api/protos/draft/ydb_query.proto
+++ b/ydb/public/api/protos/draft/ydb_query.proto
@@ -39,22 +39,14 @@ message DeleteSessionResponse {
repeated Ydb.Issue.IssueMessage issues = 2;
}
-message PingSessionRequest {
- // Identifier of session to ping (required)
+message AttachSessionRequest {
+ // Identifier of session to attach (required)
string session_id = 1 [(Ydb.length).le = 1024];
}
-enum SessionStatus {
- SESSION_STATUS_UNSPECIFIED = 0;
- SESSION_STATUS_READY = 1;
- SESSION_STATUS_BUSY = 2;
-}
-
-message PingSessionResponse {
+message SessionState {
StatusIds.StatusCode status = 1;
repeated Ydb.Issue.IssueMessage issues = 2;
-
- SessionStatus session_status = 3;
}
message SerializableModeSettings {
diff --git a/ydb/services/ydb/ydb_query.cpp b/ydb/services/ydb/ydb_query.cpp
index 89d2202d5b3..72ec468a954 100644
--- a/ydb/services/ydb/ydb_query.cpp
+++ b/ydb/services/ydb/ydb_query.cpp
@@ -47,6 +47,13 @@ void TGRpcYdbQueryService::SetupIncomingRequests(NGrpc::TLoggerPtr logger) {
new TGrpcRequestNoOperationCall<CreateSessionRequest, CreateSessionResponse>
(ctx, &DoCreateSession, TRequestAuxSettings{RLSWITCH(TRateLimiterMode::Rps), nullptr}));
})
+
+ ADD_REQUEST(AttachSession, AttachSessionRequest, SessionState, {
+ ActorSystem_->Send(GRpcRequestProxyId_,
+ new TGrpcRequestNoOperationCall<AttachSessionRequest, SessionState>
+ (ctx, &DoAttachSession, TRequestAuxSettings{RLSWITCH(TRateLimiterMode::Rps), nullptr}));
+ })
+
#undef ADD_REQUEST
}
diff --git a/ydb/services/ydb/ydb_query_ut.cpp b/ydb/services/ydb/ydb_query_ut.cpp
index 095253d041d..3108e6eaf7b 100644
--- a/ydb/services/ydb/ydb_query_ut.cpp
+++ b/ydb/services/ydb/ydb_query_ut.cpp
@@ -3,6 +3,7 @@
#include <ydb/public/api/grpc/draft/ydb_query_v1.grpc.pb.h>
using namespace NYdb;
+using namespace NGrpc;
Y_UNIT_TEST_SUITE(YdbQueryService) {
Y_UNIT_TEST(TestCreateSession) {
@@ -29,6 +30,33 @@ Y_UNIT_TEST_SUITE(YdbQueryService) {
connection->DoRequest(request, std::move(responseCb), &Ydb::Query::V1::QueryService::Stub::AsyncCreateSession);
}
+
+ UNIT_ASSERT(allDoneOk);
+ allDoneOk = false;
+
+ {
+ using TProcessor = typename NGrpc::IStreamRequestReadProcessor<Ydb::Query::SessionState>::TPtr;
+
+ NGrpc::TGRpcClientLow clientLow;
+ auto connection = clientLow.CreateGRpcServiceConnection<Ydb::Query::V1::QueryService>(clientConfig);
+
+ Ydb::Query::AttachSessionRequest request;
+
+ auto cb = [&allDoneOk](TGrpcStatus grpcStatus, TProcessor processor) {
+ if (grpcStatus.Ok()) {
+ Ydb::Query::SessionState resp;
+ processor->Read(&resp, [&allDoneOk](TGrpcStatus grpcStatus) {
+ allDoneOk = grpcStatus.GRpcStatusCode == grpc::StatusCode::UNIMPLEMENTED;
+ });
+ }
+ };
+
+ connection->DoStreamRequest<Ydb::Query::AttachSessionRequest, Ydb::Query::SessionState>(
+ request,
+ cb,
+ &Ydb::Query::V1::QueryService::Stub::AsyncAttachSession);
+ }
+
UNIT_ASSERT(allDoneOk);
}
}