Skip to content

Commit 06b6cf3

Browse files
committed
Add ChainActor ping kind (#12917)
1 parent dd3c880 commit 06b6cf3

File tree

4 files changed

+68
-6
lines changed

4 files changed

+68
-6
lines changed

include/ydb-cpp-sdk/client/debug/client.h

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,21 +41,35 @@ class TTxProxyPingResult: public TStatus {
4141
{}
4242
};
4343

44+
class TActorChainPingResult: public TStatus {
45+
public:
46+
TActorChainPingResult(TStatus&& status)
47+
: TStatus(std::move(status))
48+
{}
49+
};
50+
4451
////////////////////////////////////////////////////////////////////////////////
4552

4653
using TAsyncPlainGrpcPingResult = NThreading::TFuture<TPlainGrpcPingResult>;
4754
using TAsyncGrpcProxyPingResult = NThreading::TFuture<TGrpcProxyPingResult>;
4855
using TAsyncKqpProxyPingResult = NThreading::TFuture<TKqpProxyPingResult>;
4956
using TAsyncSchemeCachePingResult = NThreading::TFuture<TSchemeCachePingResult>;
5057
using TAsyncTxProxyPingResult = NThreading::TFuture<TTxProxyPingResult>;
58+
using TAsyncActorChainPingResult = NThreading::TFuture<TActorChainPingResult>;
5159

5260
////////////////////////////////////////////////////////////////////////////////
5361

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> {};
62+
struct TPlainGrpcPingSettings : public TSimpleRequestSettings<TPlainGrpcPingSettings> {};
63+
struct TGrpcProxyPingSettings : public TSimpleRequestSettings<TGrpcProxyPingSettings> {};
64+
struct TKqpProxyPingSettings : public TSimpleRequestSettings<TKqpProxyPingSettings> {};
65+
struct TSchemeCachePingSettings : public TSimpleRequestSettings<TSchemeCachePingSettings> {};
66+
struct TTxProxyPingSettings : public TSimpleRequestSettings<TTxProxyPingSettings> {};
67+
68+
struct TActorChainPingSettings : public TSimpleRequestSettings<TActorChainPingSettings> {
69+
FLUENT_SETTING_DEFAULT(size_t, ChainLength, 10);
70+
FLUENT_SETTING_DEFAULT(size_t, WorkUsec, 5);
71+
FLUENT_SETTING_DEFAULT(bool, NoTailChain, false);
72+
};
5973

6074
////////////////////////////////////////////////////////////////////////////////
6175

@@ -75,6 +89,8 @@ class TDebugClient {
7589
TAsyncSchemeCachePingResult PingSchemeCache(const TSchemeCachePingSettings& settings);
7690
TAsyncTxProxyPingResult PingTxProxy(const TTxProxyPingSettings& settings);
7791

92+
TAsyncActorChainPingResult PingActorChain(const TActorChainPingSettings& settings);
93+
7894
private:
7995
class TImpl;
8096
std::shared_ptr<TImpl> Impl_;

src/api/grpc/ydb_debug_v1.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ service DebugService {
1111
rpc PingKqpProxy(Debug.KqpProxyRequest) returns (Debug.KqpProxyResponse);
1212
rpc PingSchemeCache(Debug.SchemeCacheRequest) returns (Debug.SchemeCacheResponse);
1313
rpc PingTxProxy(Debug.TxProxyRequest) returns (Debug.TxProxyResponse);
14+
rpc PingActorChain(Debug.ActorChainRequest) returns (Debug.ActorChainResponse);
1415
}

src/api/protos/ydb_debug.proto

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,22 @@ message TxProxyResponse {
5757
StatusIds.StatusCode status = 1;
5858
repeated Ydb.Issue.IssueMessage issues = 2;
5959
}
60+
61+
// Ping Actor Chain
62+
63+
message ActorChainRequest {
64+
65+
// number of actors to be created, default 10
66+
uint32 ChainLength = 1;
67+
68+
// immitate work duration for each actor (approximate), default ~ 5 usec
69+
uint32 WorkUsec = 2;
70+
71+
// don't use tail sends and registrations
72+
bool NoTailChain = 3;
73+
}
74+
75+
message ActorChainResponse {
76+
StatusIds.StatusCode status = 1;
77+
repeated Ydb.Issue.IssueMessage issues = 2;
78+
}

src/client/debug/client.cpp

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,28 @@ class TDebugClient::TImpl: public TClientImplCommon<TDebugClient::TImpl> {
4040
return pingPromise;
4141
}
4242

43+
auto PingActorChain(const TActorChainPingSettings& settings) {
44+
auto pingPromise = NewPromise<TActorChainPingResult>();
45+
auto responseCb = [pingPromise] (Debug::ActorChainResponse*, TPlainStatus status) mutable {
46+
TActorChainPingResult val(TStatus(std::move(status)));
47+
pingPromise.SetValue(std::move(val));
48+
};
49+
50+
Debug::ActorChainRequest request;
51+
request.SetChainLength(settings.ChainLength_);
52+
request.SetWorkUsec(settings.WorkUsec_);
53+
request.SetNoTailChain(settings.NoTailChain_);
54+
55+
Connections_->Run<Debug::V1::DebugService, Debug::ActorChainRequest, Debug::ActorChainResponse>(
56+
std::move(request),
57+
responseCb,
58+
&Debug::V1::DebugService::Stub::AsyncPingActorChain,
59+
DbDriverState_,
60+
TRpcRequestSettings::Make(settings));
61+
62+
return pingPromise;
63+
}
64+
4365
~TImpl() = default;
4466
};
4567

@@ -73,4 +95,8 @@ TAsyncTxProxyPingResult TDebugClient::PingTxProxy(const TTxProxyPingSettings& se
7395
settings, &Debug::V1::DebugService::Stub::AsyncPingTxProxy);
7496
}
7597

76-
} // namespace NYdb::NDebug
98+
TAsyncActorChainPingResult TDebugClient::PingActorChain(const TActorChainPingSettings& settings) {
99+
return Impl_->PingActorChain(settings);
100+
}
101+
102+
} // namespace NYdb::V3::NDebug

0 commit comments

Comments
 (0)