Skip to content

Commit e18f0dd

Browse files
authored
25-1: Console request timeout (#18610)
2 parents ce73ffd + de949b0 commit e18f0dd

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

ydb/core/client/server/msgbus_server_console.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ class TConsoleRequestActor : public TMessageBusSecureRequest<TMessageBusServerRe
6060

6161
SendRequest(ctx);
6262
TBase::Become(&TConsoleRequestActor::MainState);
63+
64+
if (const auto timeout = TDuration::MilliSeconds(Request.GetTimeoutMs())) {
65+
ctx.Schedule(timeout, new TEvents::TEvWakeup());
66+
}
6367
}
6468

6569
void SendRequest(const TActorContext &ctx)
@@ -328,6 +332,10 @@ class TConsoleRequestActor : public TMessageBusSecureRequest<TMessageBusServerRe
328332
SendReplyAndDie(ctx);
329333
}
330334

335+
void HandleTimeout(const TActorContext &ctx) {
336+
ReplyWithErrorAndDie(Ydb::StatusIds::TIMEOUT, "Console request timed out", ctx);
337+
}
338+
331339
STFUNC(MainState) {
332340
switch (ev->GetTypeRewrite()) {
333341
CFunc(TEvents::TEvUndelivered::EventType, Undelivered);
@@ -347,6 +355,7 @@ class TConsoleRequestActor : public TMessageBusSecureRequest<TMessageBusServerRe
347355
HFunc(TEvConsole::TEvToggleConfigValidatorResponse, Handle);
348356
CFunc(TEvTabletPipe::EvClientDestroyed, Undelivered);
349357
HFunc(TEvTabletPipe::TEvClientConnected, Handle);
358+
SFunc(TEvents::TEvWakeup, HandleTimeout);
350359
default:
351360
Y_ABORT("TConsoleRequestActor::MainState unexpected event type: %" PRIx32 " event: %s",
352361
ev->GetTypeRewrite(),

ydb/core/protos/msgbus.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -662,6 +662,7 @@ message TConsoleRequest {
662662
}
663663
optional string DomainName = 100;
664664
optional string SecurityToken = 101;
665+
optional uint64 TimeoutMs = 102;
665666
}
666667

667668
message TConsoleResponse {

ydb/public/lib/deprecated/kicli/kikimr.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,9 @@ class TKikimr::TGRpcImpl : public TKikimr::TImpl {
266266
case NMsgBusProxy::MTYPE_CLIENT_INTERCONNECT_DEBUG:
267267
return ExecuteGRpcRequest<NMsgBusProxy::TBusInterconnectDebug>(&NGRpcProxy::TGRpcClient::InterconnectDebug, promise, request);
268268
case NMsgBusProxy::MTYPE_CLIENT_CONSOLE_REQUEST:
269+
if (const auto timeout = GRpcClient->GetConfig().Timeout; timeout != TDuration::Max()) {
270+
static_cast<NMsgBusProxy::TBusConsoleRequest*>(request.Get())->Record.SetTimeoutMs(timeout.MilliSeconds());
271+
}
269272
return ExecuteGRpcRequest<NMsgBusProxy::TBusConsoleRequest, NMsgBusProxy::TBusConsoleResponse>(&NGRpcProxy::TGRpcClient::ConsoleRequest, promise, request);
270273
case NMsgBusProxy::MTYPE_CLIENT_RESOLVE_NODE:
271274
return ExecuteGRpcRequest<NMsgBusProxy::TBusResolveNode, NMsgBusProxy::TBusResponse>(&NGRpcProxy::TGRpcClient::ResolveNode, promise, request);

0 commit comments

Comments
 (0)