From b6b05f791e26d3c5a4ad2df54ff772e56483d579 Mon Sep 17 00:00:00 2001 From: Daniil Cherednik Date: Thu, 21 Dec 2023 11:40:41 +0000 Subject: [PATCH] Use user provided otel header to start grpc proxy tracing. --- ydb/core/grpc_services/base/base.h | 3 +-- ydb/core/grpc_services/grpc_request_proxy.cpp | 11 +++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/ydb/core/grpc_services/base/base.h b/ydb/core/grpc_services/base/base.h index 218e82595a5d..bd5ae1bc00b6 100644 --- a/ydb/core/grpc_services/base/base.h +++ b/ydb/core/grpc_services/base/base.h @@ -534,8 +534,7 @@ class TRefreshTokenImpl } const TMaybe GetPeerMetaValues(const TString&) const override { - Y_ABORT("Unimplemented"); - return TMaybe{}; + return {}; } TVector FindClientCert() const override { diff --git a/ydb/core/grpc_services/grpc_request_proxy.cpp b/ydb/core/grpc_services/grpc_request_proxy.cpp index 4652fe589ad6..3ef705d9954f 100644 --- a/ydb/core/grpc_services/grpc_request_proxy.cpp +++ b/ydb/core/grpc_services/grpc_request_proxy.cpp @@ -151,7 +151,7 @@ class TGRpcRequestProxyImpl } - //StartTracing(*requestBaseCtx); + StartTracing(*requestBaseCtx); if (IsAuthStateOK(*requestBaseCtx)) { Handle(event, ctx); @@ -410,9 +410,12 @@ bool TGRpcRequestProxyImpl::IsAuthStateOK(const IRequestProxyCtx& ctx) { } void TGRpcRequestProxyImpl::StartTracing(IRequestProxyCtx& ctx) { - auto traceId = NWilson::TTraceId::NewTraceId(15, Max()); - NWilson::TSpan grpcRequestProxySpan(TWilsonGrpc::RequestProxy, std::move(traceId), "GrpcRequestProxy"); - ctx.StartTracing(std::move(grpcRequestProxySpan)); + if (const auto otelHeader = ctx.GetPeerMetaValues(NYdb::OTEL_TRACE_HEADER)) { + if (auto traceId = NWilson::TTraceId::FromTraceparentHeader(otelHeader.GetRef())) { + NWilson::TSpan grpcRequestProxySpan(TWilsonGrpc::RequestProxy, std::move(traceId), "GrpcRequestProxy"); + ctx.StartTracing(std::move(grpcRequestProxySpan)); + } + } } void TGRpcRequestProxyImpl::HandleSchemeBoard(TSchemeBoardEvents::TEvNotifyUpdate::TPtr& ev, const TActorContext& ctx) {