aboutsummaryrefslogtreecommitdiffstats
path: root/yt
diff options
context:
space:
mode:
authorarkady-e1ppa <arkady-e1ppa@yandex-team.com>2023-12-05 14:44:02 +0300
committerarkady-e1ppa <arkady-e1ppa@yandex-team.com>2023-12-05 15:47:34 +0300
commitd7830d26621b08d508ba92fccf9e4971cc8ded61 (patch)
tree231e17a9b97711289a1eb59a7fad4e140e26c515 /yt
parent496b43dd6e141cae303b3a4c727cabc0d04ed1ae (diff)
downloadydb-d7830d26621b08d508ba92fccf9e4971cc8ded61.tar.gz
YT-20547: OperationId is strongly typed
Diffstat (limited to 'yt')
-rw-r--r--yt/yt/client/driver/scheduler_commands.h5
-rw-r--r--yt/yt/client/job_tracker_client/public.h3
-rw-r--r--yt/yt/client/object_client/public.h3
-rw-r--r--yt/yt/client/scheduler/operation_id_or_alias.cpp2
-rw-r--r--yt/yt/core/ytree/yson_serializable-inl.h5
-rw-r--r--yt/yt/core/ytree/yson_struct_detail-inl.h6
6 files changed, 13 insertions, 11 deletions
diff --git a/yt/yt/client/driver/scheduler_commands.h b/yt/yt/client/driver/scheduler_commands.h
index 28f68fd757..b0daea15fb 100644
--- a/yt/yt/client/driver/scheduler_commands.h
+++ b/yt/yt/client/driver/scheduler_commands.h
@@ -35,8 +35,9 @@ public:
.Default();
registrar.Postprocessor([] (TThis* command) {
- if (!command->OperationId.IsEmpty() && command->OperationAlias.operator bool() ||
- command->OperationId.IsEmpty() && !command->OperationAlias.operator bool())
+ auto operationId = command->OperationId;
+ if (operationId && command->OperationAlias.has_value() ||
+ !operationId && !command->OperationAlias.has_value())
{
THROW_ERROR_EXCEPTION("Exactly one of \"operation_id\" and \"operation_alias\" should be set")
<< TErrorAttribute("operation_id", command->OperationId)
diff --git a/yt/yt/client/job_tracker_client/public.h b/yt/yt/client/job_tracker_client/public.h
index 984fa0fcec..5e1886f458 100644
--- a/yt/yt/client/job_tracker_client/public.h
+++ b/yt/yt/client/job_tracker_client/public.h
@@ -12,7 +12,8 @@ YT_DEFINE_STRONG_TYPEDEF(TJobId, TGuid);
extern const TJobId NullJobId;
-using TOperationId = TGuid;
+YT_DEFINE_STRONG_TYPEDEF(TOperationId, TGuid);
+
extern const TOperationId NullOperationId;
////////////////////////////////////////////////////////////////////////////////
diff --git a/yt/yt/client/object_client/public.h b/yt/yt/client/object_client/public.h
index d8f98323f6..1d002cdc36 100644
--- a/yt/yt/client/object_client/public.h
+++ b/yt/yt/client/object_client/public.h
@@ -5,6 +5,7 @@
#include <library/cpp/yt/misc/hash.h>
#include <yt/yt/client/election/public.h>
+#include <yt/yt/client/job_tracker_client/public.h>
#include <library/cpp/yt/misc/strong_typedef.h>
@@ -345,7 +346,7 @@ constexpr EObjectType MaxErasureJournalChunkPartType = EObjectType::ErasureJourn
using TTransactionId = TObjectId;
constexpr TTransactionId NullTransactionId = {};
-using TOperationId = TObjectId;
+using NJobTrackerClient::TOperationId;
////////////////////////////////////////////////////////////////////////////////
diff --git a/yt/yt/client/scheduler/operation_id_or_alias.cpp b/yt/yt/client/scheduler/operation_id_or_alias.cpp
index 4a64364815..5711c11c69 100644
--- a/yt/yt/client/scheduler/operation_id_or_alias.cpp
+++ b/yt/yt/client/scheduler/operation_id_or_alias.cpp
@@ -24,7 +24,7 @@ TOperationIdOrAlias TOperationIdOrAlias::FromString(TString operationIdOrAlias)
if (!operationIdOrAlias.empty() && operationIdOrAlias[0] == '*') {
return TOperationIdOrAlias(operationIdOrAlias);
} else {
- return TOperationIdOrAlias(TOperationId::FromString(operationIdOrAlias));
+ return TOperationIdOrAlias(TOperationId(TGuid::FromString(operationIdOrAlias)));
}
}
diff --git a/yt/yt/core/ytree/yson_serializable-inl.h b/yt/yt/core/ytree/yson_serializable-inl.h
index 7269174a30..b28578fd39 100644
--- a/yt/yt/core/ytree/yson_serializable-inl.h
+++ b/yt/yt/core/ytree/yson_serializable-inl.h
@@ -21,6 +21,7 @@
#include <yt/yt/core/actions/bind.h>
#include <library/cpp/yt/misc/enum.h>
+#include <library/cpp/yt/misc/wrapper_traits.h>
#include <util/datetime/base.h>
@@ -622,9 +623,7 @@ concept SupportsDontSerializeDefaultImpl =
template <class T>
concept SupportsDontSerializeDefault =
- SupportsDontSerializeDefaultImpl<T> ||
- TStdOptionalTraits<T>::IsStdOptional &&
- SupportsDontSerializeDefaultImpl<typename TStdOptionalTraits<T>::TValueType>;
+ SupportsDontSerializeDefaultImpl<typename TWrapperTraits<T>::TRecursiveUnwrapped>;
////////////////////////////////////////////////////////////////////////////////
diff --git a/yt/yt/core/ytree/yson_struct_detail-inl.h b/yt/yt/core/ytree/yson_struct_detail-inl.h
index ce7ded1def..bee8d63aeb 100644
--- a/yt/yt/core/ytree/yson_struct_detail-inl.h
+++ b/yt/yt/core/ytree/yson_struct_detail-inl.h
@@ -9,6 +9,8 @@
#include <yt/yt/core/yson/token_writer.h>
+#include <library/cpp/yt/misc/wrapper_traits.h>
+
namespace NYT::NYTree {
////////////////////////////////////////////////////////////////////////////////
@@ -31,9 +33,7 @@ concept SupportsDontSerializeDefaultImpl =
template <class T>
concept SupportsDontSerializeDefault =
- SupportsDontSerializeDefaultImpl<T> ||
- TStdOptionalTraits<T>::IsStdOptional &&
- SupportsDontSerializeDefaultImpl<typename TStdOptionalTraits<T>::TValueType>;
+ SupportsDontSerializeDefaultImpl<typename TWrapperTraits<T>::TRecursiveUnwrapped>;
////////////////////////////////////////////////////////////////////////////////