aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorermolovd <ermolovd@yandex-team.com>2023-10-16 16:11:56 +0300
committerermolovd <ermolovd@yandex-team.com>2023-10-16 16:38:55 +0300
commit2d212baccf6419e96202b6032de33a2ab775c137 (patch)
treebfb768032710e37ee2d0e2917c2af543dd60ad36
parentd4f3485ebf6530953946184c62b06e3d92b8a5c8 (diff)
downloadydb-2d212baccf6419e96202b6032de33a2ab775c137.tar.gz
Possibility to get operation by its alias
-rw-r--r--yt/cpp/mapreduce/client/client.cpp8
-rw-r--r--yt/cpp/mapreduce/client/client.h4
-rw-r--r--yt/cpp/mapreduce/interface/client.h8
-rw-r--r--yt/cpp/mapreduce/interface/operation.h2
-rw-r--r--yt/cpp/mapreduce/raw_client/raw_batch_request.cpp34
-rw-r--r--yt/cpp/mapreduce/raw_client/raw_requests.cpp12
-rw-r--r--yt/cpp/mapreduce/raw_client/raw_requests.h6
-rw-r--r--yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.cpp29
-rw-r--r--yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.h4
9 files changed, 83 insertions, 24 deletions
diff --git a/yt/cpp/mapreduce/client/client.cpp b/yt/cpp/mapreduce/client/client.cpp
index 42c96fcde2a..8279c1a38b6 100644
--- a/yt/cpp/mapreduce/client/client.cpp
+++ b/yt/cpp/mapreduce/client/client.cpp
@@ -1116,6 +1116,14 @@ TOperationAttributes TClient::GetOperation(
return NRawClient::GetOperation(ClientRetryPolicy_->CreatePolicyForGenericRequest(), Context_, operationId, options);
}
+TOperationAttributes TClient::GetOperation(
+ const TString& alias,
+ const TGetOperationOptions& options)
+{
+ CheckShutdown();
+ return NRawClient::GetOperation(ClientRetryPolicy_->CreatePolicyForGenericRequest(), Context_, alias, options);
+}
+
TListOperationsResult TClient::ListOperations(
const TListOperationsOptions& options)
{
diff --git a/yt/cpp/mapreduce/client/client.h b/yt/cpp/mapreduce/client/client.h
index 453b79f2a7c..9bed0d7287f 100644
--- a/yt/cpp/mapreduce/client/client.h
+++ b/yt/cpp/mapreduce/client/client.h
@@ -415,6 +415,10 @@ public:
const TOperationId& operationId,
const TGetOperationOptions& options) override;
+ TOperationAttributes GetOperation(
+ const TString& alias,
+ const TGetOperationOptions& options) override;
+
TListOperationsResult ListOperations(
const TListOperationsOptions& options) override;
diff --git a/yt/cpp/mapreduce/interface/client.h b/yt/cpp/mapreduce/interface/client.h
index 369f9e8710d..2b118214d33 100644
--- a/yt/cpp/mapreduce/interface/client.h
+++ b/yt/cpp/mapreduce/interface/client.h
@@ -415,6 +415,14 @@ public:
const TGetOperationOptions& options = TGetOperationOptions()) = 0;
///
+ /// @brief Get operation attributes.
+ ///
+ /// @see [YT doc](https://ytsaurus.tech/docs/en/api/commands.html#get_operation)
+ virtual TOperationAttributes GetOperation(
+ const TString& alias,
+ const TGetOperationOptions& options = TGetOperationOptions()) = 0;
+
+ ///
/// @brief List operations satisfying given filters.
///
/// @see [YT doc](https://ytsaurus.tech/docs/en/api/commands.html#list_operations)
diff --git a/yt/cpp/mapreduce/interface/operation.h b/yt/cpp/mapreduce/interface/operation.h
index 6841bf9ee7f..97d036180bb 100644
--- a/yt/cpp/mapreduce/interface/operation.h
+++ b/yt/cpp/mapreduce/interface/operation.h
@@ -2349,6 +2349,8 @@ struct TGetOperationOptions
///
/// @brief What attributes to request (if omitted, the default set of attributes will be requested).
FLUENT_FIELD_OPTION(TOperationAttributeFilter, AttributeFilter);
+
+ FLUENT_FIELD_OPTION(bool, IncludeRuntime);
};
///
diff --git a/yt/cpp/mapreduce/raw_client/raw_batch_request.cpp b/yt/cpp/mapreduce/raw_client/raw_batch_request.cpp
index 1568c3d85e0..2d97da2ad3c 100644
--- a/yt/cpp/mapreduce/raw_client/raw_batch_request.cpp
+++ b/yt/cpp/mapreduce/raw_client/raw_batch_request.cpp
@@ -69,21 +69,21 @@ public:
public:
TResponseParserBase()
- : Result(NewPromise<TReturnType>())
+ : Result_(NewPromise<TReturnType>())
{ }
void SetException(std::exception_ptr e) override
{
- Result.SetException(std::move(e));
+ Result_.SetException(std::move(e));
}
TFuture<TReturnType> GetFuture()
{
- return Result.GetFuture();
+ return Result_.GetFuture();
}
protected:
- TPromise<TReturnType> Result;
+ TPromise<TReturnType> Result_;
};
////////////////////////////////////////////////////////////////////
@@ -96,7 +96,7 @@ public:
void SetResponse(TMaybe<TNode> node) override
{
EnsureSomething(node);
- Result.SetValue(std::move(*node));
+ Result_.SetValue(std::move(*node));
}
};
@@ -109,7 +109,7 @@ public:
void SetResponse(TMaybe<TNode> node) override
{
EnsureNothing(node);
- Result.SetValue();
+ Result_.SetValue();
}
};
@@ -122,7 +122,7 @@ public:
void SetResponse(TMaybe<TNode> node) override
{
EnsureType(node, TNode::List);
- Result.SetValue(std::move(node->AsList()));
+ Result_.SetValue(std::move(node->AsList()));
}
};
@@ -135,7 +135,7 @@ public:
void SetResponse(TMaybe<TNode> node) override
{
EnsureType(node, TNode::Bool);
- Result.SetValue(std::move(node->AsBool()));
+ Result_.SetValue(std::move(node->AsBool()));
}
};
@@ -148,7 +148,7 @@ public:
void SetResponse(TMaybe<TNode> node) override
{
EnsureType(node, TNode::String);
- Result.SetValue(GetGuid(node->AsString()));
+ Result_.SetValue(GetGuid(node->AsString()));
}
};
@@ -173,7 +173,7 @@ public:
TRichYPath result;
Deserialize(result, *node);
result.Path_ = AddPathPrefix(result.Path_, PathPrefix_);
- Result.SetValue(result);
+ Result_.SetValue(result);
}
private:
@@ -190,7 +190,7 @@ public:
void SetResponse(TMaybe<TNode> node) override
{
EnsureType(node, TNode::Map);
- Result.SetValue(ParseOperationAttributes(*node));
+ Result_.SetValue(ParseOperationAttributes(*node));
}
};
@@ -205,7 +205,7 @@ public:
EnsureType(node, TNode::Map);
TVector<TTableColumnarStatistics> statistics;
Deserialize(statistics, *node);
- Result.SetValue(std::move(statistics));
+ Result_.SetValue(std::move(statistics));
}
};
@@ -220,7 +220,7 @@ public:
EnsureType(node, TNode::Map);
TMultiTablePartitions partitions;
Deserialize(partitions, *node);
- Result.SetValue(std::move(partitions));
+ Result_.SetValue(std::move(partitions));
}
};
@@ -234,9 +234,9 @@ public:
{
EnsureType(node, TNode::String);
if (node->AsString().empty()) {
- Result.SetValue(Nothing());
+ Result_.SetValue(Nothing());
} else {
- Result.SetValue(node->AsString());
+ Result_.SetValue(node->AsString());
}
}
};
@@ -250,7 +250,7 @@ public:
void SetResponse(TMaybe<TNode> node) override
{
EnsureType(node, TNode::String);
- Result.SetValue(node->AsString());
+ Result_.SetValue(node->AsString());
}
};
@@ -263,7 +263,7 @@ public:
void SetResponse(TMaybe<TNode> node) override
{
EnsureType(node, TNode::Map);
- Result.SetValue(ParseCheckPermissionResponse(*node));
+ Result_.SetValue(ParseCheckPermissionResponse(*node));
}
};
diff --git a/yt/cpp/mapreduce/raw_client/raw_requests.cpp b/yt/cpp/mapreduce/raw_client/raw_requests.cpp
index bb1a09121d0..bba605ae4c4 100644
--- a/yt/cpp/mapreduce/raw_client/raw_requests.cpp
+++ b/yt/cpp/mapreduce/raw_client/raw_requests.cpp
@@ -422,6 +422,18 @@ TOperationAttributes GetOperation(
return ParseOperationAttributes(NodeFromYsonString(result.Response));
}
+TOperationAttributes GetOperation(
+ const IRequestRetryPolicyPtr& retryPolicy,
+ const TClientContext& context,
+ const TString& alias,
+ const TGetOperationOptions& options)
+{
+ THttpHeader header("GET", "get_operation");
+ header.MergeParameters(SerializeParamsForGetOperation(alias, options));
+ auto result = RetryRequestWithPolicy(retryPolicy, context, header);
+ return ParseOperationAttributes(NodeFromYsonString(result.Response));
+}
+
void AbortOperation(
const IRequestRetryPolicyPtr& retryPolicy,
const TClientContext& context,
diff --git a/yt/cpp/mapreduce/raw_client/raw_requests.h b/yt/cpp/mapreduce/raw_client/raw_requests.h
index 05fcbade764..e872431088e 100644
--- a/yt/cpp/mapreduce/raw_client/raw_requests.h
+++ b/yt/cpp/mapreduce/raw_client/raw_requests.h
@@ -163,6 +163,12 @@ TOperationAttributes GetOperation(
const TOperationId& operationId,
const TGetOperationOptions& options = TGetOperationOptions());
+TOperationAttributes GetOperation(
+ const IRequestRetryPolicyPtr& retryPolicy,
+ const TClientContext& context,
+ const TString& operationId,
+ const TGetOperationOptions& options = TGetOperationOptions());
+
void AbortOperation(
const IRequestRetryPolicyPtr& retryPolicy,
const TClientContext& context,
diff --git a/yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.cpp b/yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.cpp
index 7a3c3548c79..aa28382326a 100644
--- a/yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.cpp
+++ b/yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.cpp
@@ -32,6 +32,11 @@ static void SetOperationIdParam(TNode* node, const TOperationId& operationId)
(*node)["operation_id"] = GetGuidAsString(operationId);
}
+static void SetAliasParam(TNode* node, const TString& alias)
+{
+ (*node)["operation_alias"] = alias;
+}
+
static void SetPathParam(TNode* node, const TString& pathPrefix, const TYPath& path)
{
TYPath updatedPath = AddPathPrefix(path, pathPrefix);
@@ -392,15 +397,31 @@ TNode SerializeParamsForListOperations(
return result;
}
-TNode SerializeParamsForGetOperation(
- const TOperationId& operationId,
- const TGetOperationOptions& options)
+TNode SerializeParamsForGetOperation(const std::variant<TString, TOperationId>& aliasOrOperationId, const TGetOperationOptions& options)
{
+ auto includeRuntime = options.IncludeRuntime_;
TNode result;
- SetOperationIdParam(&result, operationId);
+ std::visit([&] (const auto& value) {
+ using TValue = std::decay_t<decltype(value)>;
+ if constexpr (std::is_same_v<TValue, TString>) {
+ SetAliasParam(&result, value);
+ if (includeRuntime.Empty()) {
+ // Getting operation by operation alias requires enabling this option.
+ // So enable it unless user explicitly set it.
+ includeRuntime = true;
+ }
+ } else if constexpr (std::is_same_v<TValue, TOperationId>) {
+ SetOperationIdParam(&result, value);
+ } else {
+ static_assert(std::is_same_v<TValue, void>, "unreachable");
+ }
+ }, aliasOrOperationId);
if (options.AttributeFilter_) {
result["attributes"] = SerializeAttributeFilter(*options.AttributeFilter_);
}
+ if (includeRuntime.Defined()) {
+ result["include_runtime"] = *includeRuntime;
+ }
return result;
}
diff --git a/yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.h b/yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.h
index a60e3ea3696..dfe70bbcc55 100644
--- a/yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.h
+++ b/yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.h
@@ -94,9 +94,7 @@ TNode SerializeParamsForConcatenate(
TNode SerializeParamsForPingTx(
const TTransactionId& transactionId);
-TNode SerializeParamsForGetOperation(
- const TOperationId& operationId,
- const TGetOperationOptions& options);
+TNode SerializeParamsForGetOperation(const std::variant<TString, TOperationId>& aliasOrOperationId, const TGetOperationOptions& options);
TNode SerializeParamsForAbortOperation(
const TOperationId& operationId);