]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MEDIUM: otel: added context propagation via carrier interfaces
authorMiroslav Zagorac <mzagorac@haproxy.com>
Sun, 12 Apr 2026 09:17:11 +0000 (11:17 +0200)
committerWilliam Lallemand <wlallemand@haproxy.com>
Mon, 13 Apr 2026 07:23:26 +0000 (09:23 +0200)
commitea9d05de02a214ff59ea5311a3349db21afe96ac
tree513d117fe4d71d8c8127e791cb50b2632f7acfe1
parentbab0ea7b77a37d4a02dc2f14408dc471a181fcff
MEDIUM: otel: added context propagation via carrier interfaces

Added the span context injection and extraction layer that bridges the
OTel C wrapper's propagation API with HAProxy's HTTP headers and text map
carriers.

The new otelc.c module implements four public functions that wrap the
OTel C wrapper's context propagation methods: flt_otel_inject_text_map()
and flt_otel_inject_http_headers() serialize a span's context into
a text map or HTTP headers carrier for outbound propagation, while
flt_otel_extract_text_map() and flt_otel_extract_http_headers()
deserialize an inbound carrier into an otelc_span_context for parent
linking.

Each direction uses a pair of callbacks registered on the carrier
structure.  The injection writers (flt_otel_text_map_writer_set_cb and
flt_otel_http_headers_writer_set_cb) store key-value pairs emitted by the
SDK into the carrier's text map via OTELC_TEXT_MAP_ADD().  The extraction
readers (flt_otel_text_map_reader_foreach_key_cb and
flt_otel_http_headers_reader_foreach_key_cb) iterate the carrier's text
map entries and pass each pair to the SDK's handler callback.

The scope context initialization in flt_otel_scope_context_init() now
calls flt_otel_extract_http_headers() to extract the span context from the
provided text map carrier and stores it in the scope context structure,
making extracted contexts available for parent linking in subsequent span
creation.
addons/otel/Makefile
addons/otel/include/include.h
addons/otel/include/otelc.h [new file with mode: 0644]
addons/otel/src/otelc.c [new file with mode: 0644]
addons/otel/src/scope.c