Skip to content

Commit 202eb87

Browse files
Fq proxy timeout fix merge (#11348)
1 parent e8e7d78 commit 202eb87

File tree

9 files changed

+25
-8
lines changed

9 files changed

+25
-8
lines changed

ydb/core/fq/libs/actors/pending_fetcher.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,7 @@ class TPendingFetcher : public NActors::TActorBootstrapped<TPendingFetcher> {
435435
TenantName,
436436
task.result_limit(),
437437
NProtoInterop::CastFromProto(task.execution_limit()),
438+
NProtoInterop::CastFromProto(task.request_submitted_at()),
438439
NProtoInterop::CastFromProto(task.request_started_at()),
439440
task.restart_count(),
440441
task.job_id().value(),

ydb/core/fq/libs/compute/common/run_actor_params.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ TRunActorParams::TRunActorParams(
4949
const TString& tenantName,
5050
uint64_t resultBytesLimit,
5151
TDuration executionTtl,
52+
TInstant requestSubmittedAt,
5253
TInstant requestStartedAt,
5354
ui32 restartCount,
5455
const TString& jobId,
@@ -103,6 +104,7 @@ TRunActorParams::TRunActorParams(
103104
, TenantName(tenantName)
104105
, ResultBytesLimit(resultBytesLimit)
105106
, ExecutionTtl(executionTtl)
107+
, RequestSubmittedAt(requestSubmittedAt)
106108
, RequestStartedAt(requestStartedAt)
107109
, RestartCount(restartCount)
108110
, JobId(jobId)

ydb/core/fq/libs/compute/common/run_actor_params.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ struct TRunActorParams { // TODO2 : Change name
6868
const TString& tenantName,
6969
uint64_t resultBytesLimit,
7070
TDuration executionTtl,
71+
TInstant requestSubmittedAt,
7172
TInstant requestStartedAt,
7273
ui32 restartCount,
7374
const TString& jobId,
@@ -131,6 +132,7 @@ struct TRunActorParams { // TODO2 : Change name
131132
const TString TenantName;
132133
const uint64_t ResultBytesLimit;
133134
const TDuration ExecutionTtl;
135+
TInstant RequestSubmittedAt;
134136
TInstant RequestStartedAt;
135137
const ui32 RestartCount;
136138
const TString JobId;

ydb/core/fq/libs/compute/ydb/events/events.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,11 @@ struct TEvYdbCompute {
7171

7272
// Events
7373
struct TEvExecuteScriptRequest : public NActors::TEventLocal<TEvExecuteScriptRequest, EvExecuteScriptRequest> {
74-
TEvExecuteScriptRequest(TString sql, TString idempotencyKey, const TDuration& resultTtl, const TDuration& operationTimeout, Ydb::Query::Syntax syntax, Ydb::Query::ExecMode execMode, Ydb::Query::StatsMode statsMode, const TString& traceId, const std::map<TString, Ydb::TypedValue>& queryParameters)
74+
TEvExecuteScriptRequest(TString sql, TString idempotencyKey, const TDuration& resultTtl, const TInstant& operationDeadline, Ydb::Query::Syntax syntax, Ydb::Query::ExecMode execMode, Ydb::Query::StatsMode statsMode, const TString& traceId, const std::map<TString, Ydb::TypedValue>& queryParameters)
7575
: Sql(std::move(sql))
7676
, IdempotencyKey(std::move(idempotencyKey))
7777
, ResultTtl(resultTtl)
78-
, OperationTimeout(operationTimeout)
78+
, OperationDeadline(operationDeadline)
7979
, Syntax(syntax)
8080
, ExecMode(execMode)
8181
, StatsMode(statsMode)
@@ -86,7 +86,7 @@ struct TEvYdbCompute {
8686
TString Sql;
8787
TString IdempotencyKey;
8888
TDuration ResultTtl;
89-
TDuration OperationTimeout;
89+
TInstant OperationDeadline;
9090
Ydb::Query::Syntax Syntax = Ydb::Query::SYNTAX_YQL_V1;
9191
Ydb::Query::ExecMode ExecMode = Ydb::Query::EXEC_MODE_EXECUTE;
9292
Ydb::Query::StatsMode StatsMode = Ydb::Query::StatsMode::STATS_MODE_FULL;

ydb/core/fq/libs/compute/ydb/executer_actor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ class TExecuterActor : public TBaseComputeActor<TExecuterActor> {
115115
}
116116

117117
void SendExecuteScript() {
118-
Register(new TRetryActor<TEvYdbCompute::TEvExecuteScriptRequest, TEvYdbCompute::TEvExecuteScriptResponse, TString, TString, TDuration, TDuration, Ydb::Query::Syntax, Ydb::Query::ExecMode, Ydb::Query::StatsMode, TString, std::map<TString, Ydb::TypedValue>>(Counters.GetCounters(ERequestType::RT_EXECUTE_SCRIPT), SelfId(), Connector, Params.Sql, Params.JobId, Params.ResultTtl, Params.ExecutionTtl, GetSyntax(), GetExecuteMode(), StatsMode, Params.JobId + "_" + ToString(Params.RestartCount), Params.QueryParameters));
118+
Register(new TRetryActor<TEvYdbCompute::TEvExecuteScriptRequest, TEvYdbCompute::TEvExecuteScriptResponse, TString, TString, TDuration, TInstant, Ydb::Query::Syntax, Ydb::Query::ExecMode, Ydb::Query::StatsMode, TString, std::map<TString, Ydb::TypedValue>>(Counters.GetCounters(ERequestType::RT_EXECUTE_SCRIPT), SelfId(), Connector, Params.Sql, Params.JobId, Params.ResultTtl, Params.RequestSubmittedAt + Params.ExecutionTtl, GetSyntax(), GetExecuteMode(), StatsMode, Params.JobId + "_" + ToString(Params.RestartCount), Params.QueryParameters));
119119
}
120120

121121
Ydb::Query::Syntax GetSyntax() const {

ydb/core/fq/libs/compute/ydb/ydb_connector_actor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class TYdbConnectorActor : public NActors::TActorBootstrapped<TYdbConnectorActor
4747
const auto& event = *ev->Get();
4848
NYdb::NQuery::TExecuteScriptSettings settings;
4949
settings.ResultsTtl(event.ResultTtl);
50-
settings.OperationTimeout(event.OperationTimeout);
50+
settings.OperationTimeout(event.OperationDeadline - TInstant::Now());
5151
settings.Syntax(event.Syntax);
5252
settings.ExecMode(event.ExecMode);
5353
settings.StatsMode(event.StatsMode);

ydb/core/fq/libs/control_plane_storage/internal/task_get.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetTaskRequ
448448
newTask->set_result_limit(task.Internal.result_limit());
449449
*newTask->mutable_execution_limit() = NProtoInterop::CastToProto(ExtractLimit(task));
450450
*newTask->mutable_request_started_at() = task.Query.meta().started_at();
451+
*newTask->mutable_request_submitted_at() = task.Query.meta().submitted_at();
451452

452453
newTask->set_restart_count(task.RetryCount);
453454
auto* jobId = newTask->mutable_job_id();

ydb/core/fq/libs/control_plane_storage/internal/task_ping.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,16 @@ TPingTaskParams ConstructHardPingTask(
180180
policy = it->second;
181181
}
182182

183-
if (retryLimiter.UpdateOnRetry(Now(), policy)) {
183+
auto now = TInstant::Now();
184+
auto executionDeadline = TInstant::Max();
185+
186+
auto submittedAt = NProtoInterop::CastFromProto(query.meta().submitted_at());
187+
auto executionTtl = NProtoInterop::CastFromProto(internal.execution_ttl());
188+
if (submittedAt && executionTtl) {
189+
executionDeadline = submittedAt + executionTtl;
190+
}
191+
192+
if (retryLimiter.UpdateOnRetry(now, policy) && now < executionDeadline) {
184193
queryStatus.Clear();
185194
// failing query is throttled for backoff period
186195
backoff = policy.BackoffPeriod * (retryLimiter.RetryRate + 1);
@@ -191,7 +200,7 @@ TPingTaskParams ConstructHardPingTask(
191200
TStringBuilder builder;
192201
builder << "Query failed with code " << NYql::NDqProto::StatusIds_StatusCode_Name(request.status_code())
193202
<< " and will be restarted (RetryCount: " << retryLimiter.RetryCount << ")"
194-
<< " at " << Now();
203+
<< " at " << now;
195204
transientIssues->AddIssue(NYql::TIssue(builder));
196205
} else {
197206
// failure query should be processed instantly
@@ -202,7 +211,7 @@ TPingTaskParams ConstructHardPingTask(
202211
if (policy.RetryCount) {
203212
builder << " (failure rate " << retryLimiter.RetryRate << " exceeds limit of " << policy.RetryCount << ")";
204213
}
205-
builder << " at " << Now();
214+
builder << " at " << now;
206215

207216
// in case of problems with finalization, do not change the issues
208217
if (query.meta().status() == FederatedQuery::QueryMeta::FAILING || query.meta().status() == FederatedQuery::QueryMeta::ABORTING_BY_SYSTEM || query.meta().status() == FederatedQuery::QueryMeta::ABORTING_BY_USER) {

ydb/core/fq/libs/protos/fq_private.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ message GetTaskResult {
120120
NFq.NConfig.TYdbStorageConfig compute_connection = 37;
121121
google.protobuf.Duration result_ttl = 38;
122122
map<string, Ydb.TypedValue> parameters = 39;
123+
124+
google.protobuf.Timestamp request_submitted_at = 40;
123125
}
124126
repeated Task tasks = 1;
125127
}

0 commit comments

Comments
 (0)