Skip to content

Add traceparent to TRequestSettings #326 #400

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 10 commits into from

Conversation

zarinatlupova
Copy link
Contributor

@zarinatlupova zarinatlupova commented Apr 15, 2025

Добавлена поддержка передачи traceparent (стандарт W3C TraceContext) через gRPC-заголовки. Это позволяет:

  • Связывать трейсы клиента и сервера YDB в единую цепочку.
  • Интегрироваться с системами мониторинга (Jaeger, OpenTelemetry).

Как это работает

  • Пользователь задает TraceParent в TRequestSettings.
  • TRequestSettings преобразуется в TRpcRequestSettings
  • Заголовок теперь передается через Aux.
  • TGRpcRequestProcessorCommon автоматически добавляет его в gRPC-заголовки как traceparent. Поддерживаются все типы запросов (синхронные, асинхронные, streaming).
  • Если TraceParent пуст — заголовок не передается.

В дальнейшем при интеграция с OpenTelemetry:

  • TraceParent можно будет автоматически брать извне (например, из OpenTelemetry Context).

Формат

Заголовок соответствует W3C TraceContext:

00-trace_id-parent_span_id-flags
  • trace_id: 32 hex chars (16 bytes)
  • parent_span_id: 16 hex chars (8 bytes)
  • flags: 01 (sampled)


// Add TraceParent to headers (if it is set)
if (!settings.TraceParent_.empty()) {
rpcSettings.Header.emplace_back("traceparent", settings.TraceParent_);
Copy link
Collaborator

@Gazizonoki Gazizonoki Apr 21, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

На будущее, лучше traceparent сразу до инициализации Aux прокидывать (в grpc_connections.h).
Смысл такой - нам хочется в grpc_connections.h тоже собирать спаны, удобно, если там будет TraceParent отдельным параметром.
Пока можно так замержить, но в будущем стоит поправить.

@Gazizonoki
Copy link
Collaborator

PR merged in ydb repo: ydb-platform/ydb#17561 and synced to ydb-cpp-sdk repo: aec1485

@Gazizonoki Gazizonoki closed this May 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants