From f91a85ae04ec47dcfec232fbbe83bea2977381a3 Mon Sep 17 00:00:00 2001 From: Zarina Tlupova <96023685+zarinatlupova@users.noreply.github.com> Date: Tue, 15 Apr 2025 16:48:13 +0300 Subject: [PATCH 01/10] Update request_settings.h --- include/ydb-cpp-sdk/client/types/request_settings.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/ydb-cpp-sdk/client/types/request_settings.h b/include/ydb-cpp-sdk/client/types/request_settings.h index 2f2d4dca8a..5ebaeacf10 100644 --- a/include/ydb-cpp-sdk/client/types/request_settings.h +++ b/include/ydb-cpp-sdk/client/types/request_settings.h @@ -8,6 +8,7 @@ #include #include +#include namespace NYdb::inline V3 { @@ -20,6 +21,7 @@ struct TRequestSettings { FLUENT_SETTING(std::string, RequestType); FLUENT_SETTING(THeader, Header); FLUENT_SETTING(TDuration, ClientTimeout); + FLUENT_SETTING(std::string, TraceParent); // Поле для передачи traceparent TRequestSettings() = default; @@ -29,6 +31,7 @@ struct TRequestSettings { , RequestType_(other.RequestType_) , Header_(other.Header_) , ClientTimeout_(other.ClientTimeout_) + , TraceParent_(other.TraceParent) {} }; From 8dc5a744c01069f592e5f37c09bf472841786eab Mon Sep 17 00:00:00 2001 From: Zarina Tlupova <96023685+zarinatlupova@users.noreply.github.com> Date: Tue, 15 Apr 2025 16:53:34 +0300 Subject: [PATCH 02/10] Create trace_utils.h --- .../ydb-cpp-sdk/client/tracing/trace_utils.h | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 include/ydb-cpp-sdk/client/tracing/trace_utils.h diff --git a/include/ydb-cpp-sdk/client/tracing/trace_utils.h b/include/ydb-cpp-sdk/client/tracing/trace_utils.h new file mode 100644 index 0000000000..74abba0c60 --- /dev/null +++ b/include/ydb-cpp-sdk/client/tracing/trace_utils.h @@ -0,0 +1,30 @@ +#pragma once + +#include +#include +#include + +namespace NYdb { + +class TTraceUtils { +public: + // Генерация traceparent в формате W3C Trace Context + static std::string GenerateTraceParent() { + // Формат: 00--- + return "00-" + GenerateRandomHex(32) + "-" + GenerateRandomHex(16) + "-01"; + } + +private: + // Генерация случайной hex-строки заданной длины + static std::string GenerateRandomHex(size_t length) { + const size_t byteLength = length / 2; + std::string bytes(byteLength, "\0"); + + for (size_t i = 0; i < byteLength; ++i) { + bytes[i] = static_cast(RandomNumber()); + } + + return HexEncode(bytes.data(), bytes.size()); + } +}; +} // namespace NYdb From 289492ca70940da2e90a1af36edbd67d7e0e801e Mon Sep 17 00:00:00 2001 From: Zarina Tlupova <96023685+zarinatlupova@users.noreply.github.com> Date: Tue, 15 Apr 2025 17:01:37 +0300 Subject: [PATCH 03/10] Update grpc_client_low.h --- src/library/grpc/client/grpc_client_low.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/library/grpc/client/grpc_client_low.h b/src/library/grpc/client/grpc_client_low.h index 3772dcba98..1af7a3c63e 100644 --- a/src/library/grpc/client/grpc_client_low.h +++ b/src/library/grpc/client/grpc_client_low.h @@ -200,6 +200,7 @@ struct TCallMeta { std::shared_ptr CallCredentials; std::vector> Aux; std::variant Timeout; // timeout as duration from now or time point in future + std::string TraceParent; // Поле для трассировки }; class TGRpcRequestProcessorCommon { @@ -208,6 +209,12 @@ class TGRpcRequestProcessorCommon { for (const auto& rec : meta.Aux) { Context.AddMetadata(NYdb::TStringType{rec.first}, NYdb::TStringType{rec.second}); } + + // Добавление traceparent в заголовки gRPC + if (!meta.TraceParent.empty()) { + Context.AddMetadata("traceparent", NYdb::TStringType{*meta.TraceParent}); + } + if (meta.CallCredentials) { Context.set_credentials(meta.CallCredentials); } From 63104c11cc80fb7b5afaea2c1b52182895c53a43 Mon Sep 17 00:00:00 2001 From: Zarina Tlupova <96023685+zarinatlupova@users.noreply.github.com> Date: Fri, 18 Apr 2025 20:18:06 +0300 Subject: [PATCH 04/10] Update request_settings.h --- include/ydb-cpp-sdk/client/types/request_settings.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/ydb-cpp-sdk/client/types/request_settings.h b/include/ydb-cpp-sdk/client/types/request_settings.h index 5ebaeacf10..d03cc4f407 100644 --- a/include/ydb-cpp-sdk/client/types/request_settings.h +++ b/include/ydb-cpp-sdk/client/types/request_settings.h @@ -21,7 +21,7 @@ struct TRequestSettings { FLUENT_SETTING(std::string, RequestType); FLUENT_SETTING(THeader, Header); FLUENT_SETTING(TDuration, ClientTimeout); - FLUENT_SETTING(std::string, TraceParent); // Поле для передачи traceparent + FLUENT_SETTING(std::string, TraceParent); // New field for traceparent header TRequestSettings() = default; From 1e60bc29f3a274bd8f9c98af42e9c3c3b3fed19a Mon Sep 17 00:00:00 2001 From: Zarina Tlupova <96023685+zarinatlupova@users.noreply.github.com> Date: Fri, 18 Apr 2025 20:19:35 +0300 Subject: [PATCH 05/10] Delete include/ydb-cpp-sdk/client/tracing/trace_utils.h --- .../ydb-cpp-sdk/client/tracing/trace_utils.h | 30 ------------------- 1 file changed, 30 deletions(-) delete mode 100644 include/ydb-cpp-sdk/client/tracing/trace_utils.h diff --git a/include/ydb-cpp-sdk/client/tracing/trace_utils.h b/include/ydb-cpp-sdk/client/tracing/trace_utils.h deleted file mode 100644 index 74abba0c60..0000000000 --- a/include/ydb-cpp-sdk/client/tracing/trace_utils.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -#include -#include -#include - -namespace NYdb { - -class TTraceUtils { -public: - // Генерация traceparent в формате W3C Trace Context - static std::string GenerateTraceParent() { - // Формат: 00--- - return "00-" + GenerateRandomHex(32) + "-" + GenerateRandomHex(16) + "-01"; - } - -private: - // Генерация случайной hex-строки заданной длины - static std::string GenerateRandomHex(size_t length) { - const size_t byteLength = length / 2; - std::string bytes(byteLength, "\0"); - - for (size_t i = 0; i < byteLength; ++i) { - bytes[i] = static_cast(RandomNumber()); - } - - return HexEncode(bytes.data(), bytes.size()); - } -}; -} // namespace NYdb From ec0719ad43dba8eb2f45d4d395581b9093027315 Mon Sep 17 00:00:00 2001 From: Zarina Tlupova <96023685+zarinatlupova@users.noreply.github.com> Date: Fri, 18 Apr 2025 20:26:20 +0300 Subject: [PATCH 06/10] Update grpc_client_low.h --- src/library/grpc/client/grpc_client_low.h | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/library/grpc/client/grpc_client_low.h b/src/library/grpc/client/grpc_client_low.h index 1af7a3c63e..e15723ce5e 100644 --- a/src/library/grpc/client/grpc_client_low.h +++ b/src/library/grpc/client/grpc_client_low.h @@ -200,7 +200,6 @@ struct TCallMeta { std::shared_ptr CallCredentials; std::vector> Aux; std::variant Timeout; // timeout as duration from now or time point in future - std::string TraceParent; // Поле для трассировки }; class TGRpcRequestProcessorCommon { @@ -208,13 +207,7 @@ class TGRpcRequestProcessorCommon { void ApplyMeta(const TCallMeta& meta) { for (const auto& rec : meta.Aux) { Context.AddMetadata(NYdb::TStringType{rec.first}, NYdb::TStringType{rec.second}); - } - - // Добавление traceparent в заголовки gRPC - if (!meta.TraceParent.empty()) { - Context.AddMetadata("traceparent", NYdb::TStringType{*meta.TraceParent}); - } - + } if (meta.CallCredentials) { Context.set_credentials(meta.CallCredentials); } From 31797acf2fc7c4acccad1d3a03db326b292402ef Mon Sep 17 00:00:00 2001 From: Zarina Tlupova <96023685+zarinatlupova@users.noreply.github.com> Date: Fri, 18 Apr 2025 20:42:27 +0300 Subject: [PATCH 07/10] Update settings.h --- .../impl/ydb_internal/rpc_request_settings/settings.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/client/impl/ydb_internal/rpc_request_settings/settings.h b/src/client/impl/ydb_internal/rpc_request_settings/settings.h index 515d20f642..941e9d1663 100644 --- a/src/client/impl/ydb_internal/rpc_request_settings/settings.h +++ b/src/client/impl/ydb_internal/rpc_request_settings/settings.h @@ -24,6 +24,12 @@ struct TRpcRequestSettings { rpcSettings.TraceId = settings.TraceId_; rpcSettings.RequestType = settings.RequestType_; rpcSettings.Header = settings.Header_; + + // Add TraceParent to headers (if it is set) + if (!settings.TraceParent_.empty()) { + rpcSettings.Header.emplace_back("traceparent", settings.TraceParent_); + } + rpcSettings.PreferredEndpoint = preferredEndpoint; rpcSettings.EndpointPolicy = endpointPolicy; rpcSettings.UseAuth = true; From 29b2bec115254385df0b4f1f0c7034c5bf80c6bb Mon Sep 17 00:00:00 2001 From: Zarina Tlupova <96023685+zarinatlupova@users.noreply.github.com> Date: Tue, 22 Apr 2025 10:33:34 +0300 Subject: [PATCH 08/10] Update request_settings.h --- include/ydb-cpp-sdk/client/types/request_settings.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/ydb-cpp-sdk/client/types/request_settings.h b/include/ydb-cpp-sdk/client/types/request_settings.h index d03cc4f407..4578842058 100644 --- a/include/ydb-cpp-sdk/client/types/request_settings.h +++ b/include/ydb-cpp-sdk/client/types/request_settings.h @@ -21,7 +21,7 @@ struct TRequestSettings { FLUENT_SETTING(std::string, RequestType); FLUENT_SETTING(THeader, Header); FLUENT_SETTING(TDuration, ClientTimeout); - FLUENT_SETTING(std::string, TraceParent); // New field for traceparent header + FLUENT_SETTING(std::string, TraceParent); TRequestSettings() = default; From 8fb3ddedab7fdf5e99304f8613ae69549dbf8996 Mon Sep 17 00:00:00 2001 From: Zarina Tlupova <96023685+zarinatlupova@users.noreply.github.com> Date: Tue, 22 Apr 2025 10:37:00 +0300 Subject: [PATCH 09/10] Update settings.h --- src/client/impl/ydb_internal/rpc_request_settings/settings.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/client/impl/ydb_internal/rpc_request_settings/settings.h b/src/client/impl/ydb_internal/rpc_request_settings/settings.h index 941e9d1663..58077e654c 100644 --- a/src/client/impl/ydb_internal/rpc_request_settings/settings.h +++ b/src/client/impl/ydb_internal/rpc_request_settings/settings.h @@ -24,8 +24,7 @@ struct TRpcRequestSettings { rpcSettings.TraceId = settings.TraceId_; rpcSettings.RequestType = settings.RequestType_; rpcSettings.Header = settings.Header_; - - // Add TraceParent to headers (if it is set) + if (!settings.TraceParent_.empty()) { rpcSettings.Header.emplace_back("traceparent", settings.TraceParent_); } From 20ea7158e06a8f83bb0a2da21b0a419f4a8ba055 Mon Sep 17 00:00:00 2001 From: Zarina Tlupova <96023685+zarinatlupova@users.noreply.github.com> Date: Tue, 22 Apr 2025 10:40:18 +0300 Subject: [PATCH 10/10] Update grpc_client_low.h --- src/library/grpc/client/grpc_client_low.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library/grpc/client/grpc_client_low.h b/src/library/grpc/client/grpc_client_low.h index e15723ce5e..3772dcba98 100644 --- a/src/library/grpc/client/grpc_client_low.h +++ b/src/library/grpc/client/grpc_client_low.h @@ -207,7 +207,7 @@ class TGRpcRequestProcessorCommon { void ApplyMeta(const TCallMeta& meta) { for (const auto& rec : meta.Aux) { Context.AddMetadata(NYdb::TStringType{rec.first}, NYdb::TStringType{rec.second}); - } + } if (meta.CallCredentials) { Context.set_credentials(meta.CallCredentials); }