diff options
author | Daniil Cherednik <[email protected]> | 2023-06-28 10:26:37 +0000 |
---|---|---|
committer | dcherednik <[email protected]> | 2023-06-28 13:26:37 +0300 |
commit | 21e20a77673c5662deb67ef574e8d524bc381bb1 (patch) | |
tree | 2c1b987890588f5736b436b406afeaa12477d1a6 | |
parent | bc1aaa964129ad4fba9f8ccac0bb9fc8619d8714 (diff) |
AttachSession public api (UNIMPLEMENTED)
AttachSession public api (UNIMPLEMENTED)
Pull Request resolved: #280
-rw-r--r-- | ydb/core/grpc_services/CMakeLists.darwin-x86_64.txt | 1 | ||||
-rw-r--r-- | ydb/core/grpc_services/CMakeLists.linux-aarch64.txt | 1 | ||||
-rw-r--r-- | ydb/core/grpc_services/CMakeLists.linux-x86_64.txt | 1 | ||||
-rw-r--r-- | ydb/core/grpc_services/CMakeLists.windows-x86_64.txt | 1 | ||||
-rw-r--r-- | ydb/core/grpc_services/query/rpc_attach_session.cpp | 12 | ||||
-rw-r--r-- | ydb/core/grpc_services/query/service_query.h | 1 | ||||
-rw-r--r-- | ydb/core/grpc_services/ya.make | 1 | ||||
-rw-r--r-- | ydb/public/api/grpc/draft/ydb_query_v1.proto | 2 | ||||
-rw-r--r-- | ydb/public/api/protos/draft/ydb_query.proto | 14 | ||||
-rw-r--r-- | ydb/services/ydb/ydb_query.cpp | 7 | ||||
-rw-r--r-- | ydb/services/ydb/ydb_query_ut.cpp | 28 |
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); } } |