aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikita Sokolov <faucct@tracto.ai>2025-02-06 16:25:27 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2025-02-06 16:46:11 +0300
commitebc0d7e9f1351fcae5429be96e3a643e265c58b7 (patch)
tree5d4ced9f953cb239f4ed2e44975e07ed40160ad8
parenta1eb3ce71dfef622da3d201cf071c79b76734d0d (diff)
downloadydb-ebc0d7e9f1351fcae5429be96e3a643e265c58b7.tar.gz
operation suspend reason
No description --- Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1046 Co-authored-by: ignat <ignat@yandex-team.com> commit_hash:9f0ae549cebc6e2e3bfdb510c88afa1aa2bdec55
-rw-r--r--yt/cpp/mapreduce/http_client/rpc_parameters_serialization.cpp3
-rw-r--r--yt/cpp/mapreduce/interface/client_method_options.h5
-rw-r--r--yt/yt/client/api/operation_client.h2
-rw-r--r--yt/yt/client/api/rpc_proxy/client_impl.cpp3
-rw-r--r--yt/yt/client/api/rpc_proxy/helpers.cpp4
-rw-r--r--yt/yt/client/driver/scheduler_commands.cpp6
-rw-r--r--yt/yt_proto/yt/client/api/rpc_proxy/proto/api_service.proto2
7 files changed, 25 insertions, 0 deletions
diff --git a/yt/cpp/mapreduce/http_client/rpc_parameters_serialization.cpp b/yt/cpp/mapreduce/http_client/rpc_parameters_serialization.cpp
index 413a09ab97..51bdcc3ceb 100644
--- a/yt/cpp/mapreduce/http_client/rpc_parameters_serialization.cpp
+++ b/yt/cpp/mapreduce/http_client/rpc_parameters_serialization.cpp
@@ -442,6 +442,9 @@ TNode SerializeParamsForSuspendOperation(
if (options.AbortRunningJobs_) {
result["abort_running_jobs"] = *options.AbortRunningJobs_;
}
+ if (options.Reason_) {
+ result["reason"] = **options.Reason_;
+ }
return result;
}
diff --git a/yt/cpp/mapreduce/interface/client_method_options.h b/yt/cpp/mapreduce/interface/client_method_options.h
index d457bf5f43..6beed2ffdc 100644
--- a/yt/cpp/mapreduce/interface/client_method_options.h
+++ b/yt/cpp/mapreduce/interface/client_method_options.h
@@ -382,6 +382,11 @@ struct TSuspendOperationOptions
///
/// By default running jobs are not aborted.
FLUENT_FIELD_OPTION(bool, AbortRunningJobs);
+
+ ///
+ /// @brief Something to show in the alert.
+ ///
+ FLUENT_FIELD_OPTION(std::optional<TString>, Reason);
};
///
diff --git a/yt/yt/client/api/operation_client.h b/yt/yt/client/api/operation_client.h
index 22ddbeb856..df0f3411e1 100644
--- a/yt/yt/client/api/operation_client.h
+++ b/yt/yt/client/api/operation_client.h
@@ -26,6 +26,7 @@ struct TSuspendOperationOptions
: public TTimeoutOptions
{
bool AbortRunningJobs = false;
+ std::optional<TString> Reason;
};
struct TResumeOperationOptions
@@ -318,6 +319,7 @@ struct TOperation
NYson::TYsonString RuntimeParameters;
std::optional<bool> Suspended;
+ std::optional<TString> SuspendReason;
NYson::TYsonString Events;
NYson::TYsonString Result;
diff --git a/yt/yt/client/api/rpc_proxy/client_impl.cpp b/yt/yt/client/api/rpc_proxy/client_impl.cpp
index bc032c68d7..2136d59968 100644
--- a/yt/yt/client/api/rpc_proxy/client_impl.cpp
+++ b/yt/yt/client/api/rpc_proxy/client_impl.cpp
@@ -1166,6 +1166,9 @@ TFuture<void> TClient::SuspendOperation(
NScheduler::ToProto(req, operationIdOrAlias);
req->set_abort_running_jobs(options.AbortRunningJobs);
+ if (options.Reason) {
+ req->set_reason(*options.Reason);
+ }
return req->Invoke().As<void>();
}
diff --git a/yt/yt/client/api/rpc_proxy/helpers.cpp b/yt/yt/client/api/rpc_proxy/helpers.cpp
index 7bbdc3a380..c8acdeb3f8 100644
--- a/yt/yt/client/api/rpc_proxy/helpers.cpp
+++ b/yt/yt/client/api/rpc_proxy/helpers.cpp
@@ -732,6 +732,10 @@ void ToProto(NProto::TOperation* protoOperation, const NApi::TOperation& operati
protoOperation->set_suspended(*operation.Suspended);
}
+ if (operation.SuspendReason) {
+ protoOperation->set_suspend_reason(*operation.SuspendReason);
+ }
+
if (operation.Events) {
protoOperation->set_events(operation.Events.ToString());
}
diff --git a/yt/yt/client/driver/scheduler_commands.cpp b/yt/yt/client/driver/scheduler_commands.cpp
index 4fb6a48d75..0f0b4081f0 100644
--- a/yt/yt/client/driver/scheduler_commands.cpp
+++ b/yt/yt/client/driver/scheduler_commands.cpp
@@ -856,6 +856,12 @@ void TSuspendOperationCommand::Register(TRegistrar registrar)
return command->Options.AbortRunningJobs;
})
.Optional(/*init*/ false);
+ registrar.ParameterWithUniversalAccessor<std::optional<TString>>(
+ "reason",
+ [] (TThis* command) -> auto& {
+ return command->Options.Reason;
+ })
+ .Optional();
}
void TSuspendOperationCommand::DoExecute(ICommandContextPtr context)
diff --git a/yt/yt_proto/yt/client/api/rpc_proxy/proto/api_service.proto b/yt/yt_proto/yt/client/api/rpc_proxy/proto/api_service.proto
index f0c94b33ef..49960c392c 100644
--- a/yt/yt_proto/yt/client/api/rpc_proxy/proto/api_service.proto
+++ b/yt/yt_proto/yt/client/api/rpc_proxy/proto/api_service.proto
@@ -2268,6 +2268,7 @@ message TReqSuspendOperation
string operation_alias = 3;
}
optional bool abort_running_jobs = 2 [default = false];
+ optional string reason = 4;
}
message TRspSuspendOperation
@@ -3058,6 +3059,7 @@ message TOperation
optional bytes runtime_parameters = 16; // YSON
optional bool suspended = 17;
+ optional string suspend_reason = 29;
optional bytes events = 18; // YSON
optional bytes result = 19; // YSON