diff --git a/include/ydb-cpp-sdk/client/types/request_settings.h b/include/ydb-cpp-sdk/client/types/request_settings.h index 2f2d4dca8a..4578842058 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); TRequestSettings() = default; @@ -29,6 +31,7 @@ struct TRequestSettings { , RequestType_(other.RequestType_) , Header_(other.Header_) , ClientTimeout_(other.ClientTimeout_) + , TraceParent_(other.TraceParent) {} }; 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..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,6 +24,11 @@ struct TRpcRequestSettings { rpcSettings.TraceId = settings.TraceId_; rpcSettings.RequestType = settings.RequestType_; rpcSettings.Header = settings.Header_; + + if (!settings.TraceParent_.empty()) { + rpcSettings.Header.emplace_back("traceparent", settings.TraceParent_); + } + rpcSettings.PreferredEndpoint = preferredEndpoint; rpcSettings.EndpointPolicy = endpointPolicy; rpcSettings.UseAuth = true;