Skip to content

Commit c07ddf8

Browse files
authored
YQ kqprun added cancel after for script requests (#8768)
1 parent 732bf12 commit c07ddf8

File tree

5 files changed

+30
-0
lines changed

5 files changed

+30
-0
lines changed

ydb/tests/tools/kqprun/kqprun.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,10 @@ class TMain : public TMainClassArgs {
493493
ExecutionOptions.ScriptQueryActions.emplace_back(scriptAction(choice));
494494
});
495495

496+
options.AddLongOption("cancel-after", "Cancel script execution operation after specified delay in milliseconds")
497+
.RequiredArgument("uint")
498+
.StoreMappedResultT<ui64>(&RunnerOptions.ScriptCancelAfter, &TDuration::MilliSeconds<ui64>);
499+
496500
options.AddLongOption('F', "forget", "Forget script execution operation after fetching results")
497501
.NoArgument()
498502
.SetFlag(&ExecutionOptions.ForgetExecution);

ydb/tests/tools/kqprun/src/common.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ struct TRunnerOptions {
7171
NYdb::NConsoleClient::EOutputFormat PlanOutputFormat = NYdb::NConsoleClient::EOutputFormat::Default;
7272
ETraceOptType TraceOptType = ETraceOptType::Disabled;
7373

74+
TDuration ScriptCancelAfter;
75+
7476
TYdbSetupSettings YdbSettings;
7577
};
7678

ydb/tests/tools/kqprun/src/kqp_runner.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,15 @@ class TKqpRunner::TImpl {
247247
return false;
248248
}
249249

250+
if (Options_.ScriptCancelAfter && TInstant::Now() - StartTime_ > Options_.ScriptCancelAfter) {
251+
Cout << CoutColors_.Yellow() << TInstant::Now().ToIsoStringLocal() << " Cancelling script execution..." << CoutColors_.Default() << Endl;
252+
TRequestResult cancelStatus = YdbSetup_.CancelScriptExecutionOperationRequest(ExecutionOperation_);
253+
if (!cancelStatus.IsSuccess()) {
254+
Cerr << CerrColors_.Red() << "Failed to cancel script execution operation, reason:" << CerrColors_.Default() << Endl << cancelStatus.ToString() << Endl;
255+
return false;
256+
}
257+
}
258+
250259
Sleep(getOperationPeriod);
251260
}
252261

ydb/tests/tools/kqprun/src/ydb_setup.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,13 @@ class TYdbSetup::TImpl {
287287
return RunKqpProxyRequest<NKikimr::NKqp::TEvForgetScriptExecutionOperation, NKikimr::NKqp::TEvForgetScriptExecutionOperationResponse>(std::move(event));
288288
}
289289

290+
NKikimr::NKqp::TEvCancelScriptExecutionOperationResponse::TPtr CancelScriptExecutionOperationRequest(const TString& operation) const {
291+
NKikimr::NOperationId::TOperationId operationId(operation);
292+
auto event = MakeHolder<NKikimr::NKqp::TEvCancelScriptExecutionOperation>(Settings_.DomainName, operationId);
293+
294+
return RunKqpProxyRequest<NKikimr::NKqp::TEvCancelScriptExecutionOperation, NKikimr::NKqp::TEvCancelScriptExecutionOperationResponse>(std::move(event));
295+
}
296+
290297
void QueryRequestAsync(const TRequestOptions& query) {
291298
if (!AsyncQueryRunnerActorId_) {
292299
AsyncQueryRunnerActorId_ = GetRuntime()->Register(CreateAsyncQueryRunnerActor(Settings_.AsyncQueriesSettings), 0, GetRuntime()->GetAppData().UserPoolId);
@@ -505,6 +512,12 @@ TRequestResult TYdbSetup::ForgetScriptExecutionOperationRequest(const TString& o
505512
return TRequestResult(forgetScriptExecutionOperationResponse->Get()->Status, forgetScriptExecutionOperationResponse->Get()->Issues);
506513
}
507514

515+
TRequestResult TYdbSetup::CancelScriptExecutionOperationRequest(const TString& operation) const {
516+
auto cancelScriptExecutionOperationResponse = Impl_->CancelScriptExecutionOperationRequest(operation);
517+
518+
return TRequestResult(cancelScriptExecutionOperationResponse->Get()->Status, cancelScriptExecutionOperationResponse->Get()->Issues);
519+
}
520+
508521
void TYdbSetup::QueryRequestAsync(const TRequestOptions& query) const {
509522
Impl_->QueryRequestAsync(query);
510523
}

ydb/tests/tools/kqprun/src/ydb_setup.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ class TYdbSetup {
6262

6363
TRequestResult ForgetScriptExecutionOperationRequest(const TString& operation) const;
6464

65+
TRequestResult CancelScriptExecutionOperationRequest(const TString& operation) const;
66+
6567
void QueryRequestAsync(const TRequestOptions& query) const;
6668

6769
void WaitAsyncQueries() const;

0 commit comments

Comments
 (0)