Skip to content

Commit ca0fb03

Browse files
eivanov89Gazizonoki
authored andcommitted
Moved commit "Ping service" from ydb repo
1 parent becc193 commit ca0fb03

File tree

6 files changed

+250
-0
lines changed

6 files changed

+250
-0
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#pragma once
2+
3+
#include <ydb-cpp-sdk/client/driver/driver.h>
4+
5+
namespace NYdb::NDebug {
6+
7+
////////////////////////////////////////////////////////////////////////////////
8+
9+
class TPlainGrpcPingResult: public TStatus {
10+
public:
11+
TPlainGrpcPingResult(TStatus&& status)
12+
: TStatus(std::move(status))
13+
{}
14+
};
15+
16+
class TGrpcProxyPingResult: public TStatus {
17+
public:
18+
TGrpcProxyPingResult(TStatus&& status)
19+
: TStatus(std::move(status))
20+
{}
21+
};
22+
23+
class TKqpProxyPingResult: public TStatus {
24+
public:
25+
TKqpProxyPingResult(TStatus&& status)
26+
: TStatus(std::move(status))
27+
{}
28+
};
29+
30+
class TSchemeCachePingResult: public TStatus {
31+
public:
32+
TSchemeCachePingResult(TStatus&& status)
33+
: TStatus(std::move(status))
34+
{}
35+
};
36+
37+
class TTxProxyPingResult: public TStatus {
38+
public:
39+
TTxProxyPingResult(TStatus&& status)
40+
: TStatus(std::move(status))
41+
{}
42+
};
43+
44+
////////////////////////////////////////////////////////////////////////////////
45+
46+
using TAsyncPlainGrpcPingResult = NThreading::TFuture<TPlainGrpcPingResult>;
47+
using TAsyncGrpcProxyPingResult = NThreading::TFuture<TGrpcProxyPingResult>;
48+
using TAsyncKqpProxyPingResult = NThreading::TFuture<TKqpProxyPingResult>;
49+
using TAsyncSchemeCachePingResult = NThreading::TFuture<TSchemeCachePingResult>;
50+
using TAsyncTxProxyPingResult = NThreading::TFuture<TTxProxyPingResult>;
51+
52+
////////////////////////////////////////////////////////////////////////////////
53+
54+
struct TPlainGrpcPingSettings : public TOperationRequestSettings<TPlainGrpcPingSettings> {};
55+
struct TGrpcProxyPingSettings : public TOperationRequestSettings<TGrpcProxyPingSettings> {};
56+
struct TKqpProxyPingSettings : public TOperationRequestSettings<TKqpProxyPingSettings> {};
57+
struct TSchemeCachePingSettings : public TOperationRequestSettings<TSchemeCachePingSettings> {};
58+
struct TTxProxyPingSettings : public TOperationRequestSettings<TTxProxyPingSettings> {};
59+
60+
////////////////////////////////////////////////////////////////////////////////
61+
62+
struct TClientSettings : public TCommonClientSettingsBase<TClientSettings> {
63+
};
64+
65+
class TDebugClient {
66+
public:
67+
using TAsyncPlainGrpcPingResult = TAsyncPlainGrpcPingResult;
68+
public:
69+
TDebugClient(const TDriver& driver, const TClientSettings& settings = TClientSettings());
70+
71+
TAsyncPlainGrpcPingResult PingPlainGrpc(const TPlainGrpcPingSettings& settings);
72+
TAsyncGrpcProxyPingResult PingGrpcProxy(const TGrpcProxyPingSettings& settings);
73+
TAsyncKqpProxyPingResult PingKqpProxy(const TKqpProxyPingSettings& settings);
74+
75+
TAsyncSchemeCachePingResult PingSchemeCache(const TSchemeCachePingSettings& settings);
76+
TAsyncTxProxyPingResult PingTxProxy(const TTxProxyPingSettings& settings);
77+
78+
private:
79+
class TImpl;
80+
std::shared_ptr<TImpl> Impl_;
81+
};
82+
83+
} // namespace NYdb::NDebug

src/api/grpc/ydb_debug_v1.proto

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
syntax = "proto3";
2+
3+
package Ydb.Debug.V1;
4+
option java_package = "com.yandex.ydb.debug.v1";
5+
6+
import "src/api/protos/ydb_debug.proto";
7+
8+
service DebugService {
9+
rpc PingPlainGrpc(Debug.PlainGrpcRequest) returns (Debug.PlainGrpcResponse);
10+
rpc PingGrpcProxy(Debug.GrpcProxyRequest) returns (Debug.GrpcProxyResponse);
11+
rpc PingKqpProxy(Debug.KqpProxyRequest) returns (Debug.KqpProxyResponse);
12+
rpc PingSchemeCache(Debug.SchemeCacheRequest) returns (Debug.SchemeCacheResponse);
13+
rpc PingTxProxy(Debug.TxProxyRequest) returns (Debug.TxProxyResponse);
14+
}

src/api/protos/ydb_debug.proto

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
syntax = "proto3";
2+
option cc_enable_arenas = true;
3+
4+
package Ydb.Debug;
5+
option java_package = "com.yandex.ydb.debug";
6+
option java_outer_classname = "DebugProtos";
7+
8+
import "src/api/protos/ydb_issue_message.proto";
9+
import "src/api/protos/ydb_status_codes.proto";
10+
11+
// just go to GRPC without the rest of YDB
12+
13+
message PlainGrpcRequest {
14+
}
15+
16+
message PlainGrpcResponse {
17+
StatusIds.StatusCode status = 1;
18+
repeated Ydb.Issue.IssueMessage issues = 2;
19+
}
20+
21+
// Go until GrpcProxy
22+
23+
message GrpcProxyRequest {
24+
}
25+
26+
message GrpcProxyResponse {
27+
StatusIds.StatusCode status = 1;
28+
repeated Ydb.Issue.IssueMessage issues = 2;
29+
}
30+
31+
// Ping KQP proxy without executing anything
32+
33+
message KqpProxyRequest {
34+
}
35+
36+
message KqpProxyResponse {
37+
StatusIds.StatusCode status = 1;
38+
repeated Ydb.Issue.IssueMessage issues = 2;
39+
}
40+
41+
// Ping SchemeCache
42+
43+
message SchemeCacheRequest {
44+
}
45+
46+
message SchemeCacheResponse {
47+
StatusIds.StatusCode status = 1;
48+
repeated Ydb.Issue.IssueMessage issues = 2;
49+
}
50+
51+
// Ping TxProxy
52+
53+
message TxProxyRequest {
54+
}
55+
56+
message TxProxyResponse {
57+
StatusIds.StatusCode status = 1;
58+
repeated Ydb.Issue.IssueMessage issues = 2;
59+
}

src/client/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ add_subdirectory(resources)
77
add_subdirectory(common_client)
88
add_subdirectory(coordination)
99
add_subdirectory(datastreams)
10+
add_subdirectory(debug)
1011
add_subdirectory(discovery)
1112
add_subdirectory(driver)
1213
add_subdirectory(export)

src/client/debug/CMakeLists.txt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
_ydb_sdk_add_library(client-debug)
2+
3+
target_link_libraries(client-debug
4+
PUBLIC
5+
client-ydb_driver
6+
PRIVATE
7+
api-grpc
8+
api-protos
9+
client-ydb_common_client-impl
10+
)
11+
12+
target_sources(client-debug
13+
PRIVATE
14+
client.cpp
15+
)
16+
17+
_ydb_sdk_make_client_component(Debug client-debug)

src/client/debug/client.cpp

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
#include <ydb-cpp-sdk/client/debug/client.h>
2+
3+
#include <src/api/grpc/ydb_debug_v1.grpc.pb.h>
4+
#include <src/api/grpc/ydb_debug_v1.pb.h>
5+
#include <src/api/protos/ydb_debug.pb.h>
6+
7+
#define INCLUDE_YDB_INTERNAL_H
8+
#include <src/client/impl/ydb_internal/make_request/make.h>
9+
#undef INCLUDE_YDB_INTERNAL_H
10+
11+
#include <src/client/common_client/impl/client.h>
12+
13+
namespace NYdb::NDebug {
14+
15+
using namespace Ydb;
16+
17+
using namespace NThreading;
18+
19+
class TDebugClient::TImpl: public TClientImplCommon<TDebugClient::TImpl> {
20+
public:
21+
TImpl(std::shared_ptr<TGRpcConnectionsImpl>&& connections, const TClientSettings& settings)
22+
: TClientImplCommon(std::move(connections), settings)
23+
{}
24+
25+
template<typename TRequest, typename TResponse, typename TResult, typename TSettings>
26+
auto Ping(const TSettings& settings, auto serviceMethod) {
27+
auto pingPromise = NewPromise<TResult>();
28+
auto responseCb = [pingPromise] (TResponse*, TPlainStatus status) mutable {
29+
TResult val(TStatus(std::move(status)));
30+
pingPromise.SetValue(std::move(val));
31+
};
32+
33+
Connections_->Run<Debug::V1::DebugService, TRequest, TResponse>(
34+
TRequest(),
35+
responseCb,
36+
serviceMethod,
37+
DbDriverState_,
38+
TRpcRequestSettings::Make(settings));
39+
40+
return pingPromise;
41+
}
42+
43+
~TImpl() = default;
44+
};
45+
46+
TDebugClient::TDebugClient(const TDriver& driver, const TClientSettings& settings)
47+
: Impl_(new TImpl(CreateInternalInterface(driver), settings))
48+
{
49+
}
50+
51+
TAsyncPlainGrpcPingResult TDebugClient::PingPlainGrpc(const TPlainGrpcPingSettings& settings) {
52+
return Impl_->Ping<Debug::PlainGrpcRequest, Debug::PlainGrpcResponse, TPlainGrpcPingResult>(
53+
settings, &Debug::V1::DebugService::Stub::AsyncPingPlainGrpc);
54+
}
55+
56+
TAsyncGrpcProxyPingResult TDebugClient::PingGrpcProxy(const TGrpcProxyPingSettings& settings) {
57+
return Impl_->Ping<Debug::GrpcProxyRequest, Debug::GrpcProxyResponse, TGrpcProxyPingResult>(
58+
settings, &Debug::V1::DebugService::Stub::AsyncPingGrpcProxy);
59+
}
60+
61+
TAsyncKqpProxyPingResult TDebugClient::PingKqpProxy(const TKqpProxyPingSettings& settings) {
62+
return Impl_->Ping<Debug::KqpProxyRequest, Debug::KqpProxyResponse, TKqpProxyPingResult>(
63+
settings, &Debug::V1::DebugService::Stub::AsyncPingKqpProxy);
64+
}
65+
66+
TAsyncSchemeCachePingResult TDebugClient::PingSchemeCache(const TSchemeCachePingSettings& settings) {
67+
return Impl_->Ping<Debug::SchemeCacheRequest, Debug::SchemeCacheResponse, TSchemeCachePingResult>(
68+
settings, &Debug::V1::DebugService::Stub::AsyncPingSchemeCache);
69+
}
70+
71+
TAsyncTxProxyPingResult TDebugClient::PingTxProxy(const TTxProxyPingSettings& settings) {
72+
return Impl_->Ping<Debug::TxProxyRequest, Debug::TxProxyResponse, TTxProxyPingResult>(
73+
settings, &Debug::V1::DebugService::Stub::AsyncPingTxProxy);
74+
}
75+
76+
} // namespace NYdb::NDebug

0 commit comments

Comments
 (0)