File tree Expand file tree Collapse file tree 5 files changed +30
-0
lines changed Expand file tree Collapse file tree 5 files changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -493,6 +493,10 @@ class TMain : public TMainClassArgs {
493
493
ExecutionOptions.ScriptQueryActions .emplace_back (scriptAction (choice));
494
494
});
495
495
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
+
496
500
options.AddLongOption (' F' , " forget" , " Forget script execution operation after fetching results" )
497
501
.NoArgument ()
498
502
.SetFlag (&ExecutionOptions.ForgetExecution );
Original file line number Diff line number Diff line change @@ -71,6 +71,8 @@ struct TRunnerOptions {
71
71
NYdb::NConsoleClient::EOutputFormat PlanOutputFormat = NYdb::NConsoleClient::EOutputFormat::Default;
72
72
ETraceOptType TraceOptType = ETraceOptType::Disabled;
73
73
74
+ TDuration ScriptCancelAfter;
75
+
74
76
TYdbSetupSettings YdbSettings;
75
77
};
76
78
Original file line number Diff line number Diff line change @@ -247,6 +247,15 @@ class TKqpRunner::TImpl {
247
247
return false ;
248
248
}
249
249
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
+
250
259
Sleep (getOperationPeriod);
251
260
}
252
261
Original file line number Diff line number Diff line change @@ -287,6 +287,13 @@ class TYdbSetup::TImpl {
287
287
return RunKqpProxyRequest<NKikimr::NKqp::TEvForgetScriptExecutionOperation, NKikimr::NKqp::TEvForgetScriptExecutionOperationResponse>(std::move (event));
288
288
}
289
289
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
+
290
297
void QueryRequestAsync (const TRequestOptions& query) {
291
298
if (!AsyncQueryRunnerActorId_) {
292
299
AsyncQueryRunnerActorId_ = GetRuntime ()->Register (CreateAsyncQueryRunnerActor (Settings_.AsyncQueriesSettings ), 0 , GetRuntime ()->GetAppData ().UserPoolId );
@@ -505,6 +512,12 @@ TRequestResult TYdbSetup::ForgetScriptExecutionOperationRequest(const TString& o
505
512
return TRequestResult (forgetScriptExecutionOperationResponse->Get ()->Status , forgetScriptExecutionOperationResponse->Get ()->Issues );
506
513
}
507
514
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
+
508
521
void TYdbSetup::QueryRequestAsync (const TRequestOptions& query) const {
509
522
Impl_->QueryRequestAsync (query);
510
523
}
Original file line number Diff line number Diff line change @@ -62,6 +62,8 @@ class TYdbSetup {
62
62
63
63
TRequestResult ForgetScriptExecutionOperationRequest (const TString& operation) const ;
64
64
65
+ TRequestResult CancelScriptExecutionOperationRequest (const TString& operation) const ;
66
+
65
67
void QueryRequestAsync (const TRequestOptions& query) const ;
66
68
67
69
void WaitAsyncQueries () const ;
You can’t perform that action at this time.
0 commit comments