From 369cc0136b7a465a3ea2e27fb3337fbfb1bcdb2b Mon Sep 17 00:00:00 2001 From: Luiz Manhani Date: Wed, 27 Aug 2025 17:16:30 -0300 Subject: [PATCH 1/3] disable RequestTraceListener listen --- src/Listener/RequestTraceListener.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Listener/RequestTraceListener.php b/src/Listener/RequestTraceListener.php index 281b187..1eb9352 100644 --- a/src/Listener/RequestTraceListener.php +++ b/src/Listener/RequestTraceListener.php @@ -38,9 +38,9 @@ public function __construct(private SwitchManager $switchManager, private SpanTa public function listen(): array { return [ - RequestReceived::class, - RequestHandled::class, - RequestTerminated::class, + //RequestReceived::class, + //RequestHandled::class, + //RequestTerminated::class, ]; } From 877571332f8aa546128e0641070bdbc67d5858cf Mon Sep 17 00:00:00 2001 From: Luiz Manhani Date: Wed, 27 Aug 2025 17:42:16 -0300 Subject: [PATCH 2/3] fix jaeger decoder; enable RequestTraceListener listen. --- src/Listener/RequestTraceListener.php | 6 +++--- src/Support/JaegerDecoder.php | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Listener/RequestTraceListener.php b/src/Listener/RequestTraceListener.php index 1eb9352..281b187 100644 --- a/src/Listener/RequestTraceListener.php +++ b/src/Listener/RequestTraceListener.php @@ -38,9 +38,9 @@ public function __construct(private SwitchManager $switchManager, private SpanTa public function listen(): array { return [ - //RequestReceived::class, - //RequestHandled::class, - //RequestTerminated::class, + RequestReceived::class, + RequestHandled::class, + RequestTerminated::class, ]; } diff --git a/src/Support/JaegerDecoder.php b/src/Support/JaegerDecoder.php index 08cf9d5..56b1d8c 100644 --- a/src/Support/JaegerDecoder.php +++ b/src/Support/JaegerDecoder.php @@ -21,8 +21,9 @@ public static function traceIdDecoder(string $traceId): string if (strlen($traceId) == 32 || !is_numeric($traceId)) { return $traceId; } + $hiLen = strlen($traceId) - 16; - return substr($traceId, 0, 16) . substr($traceId, -16, 16); + return substr($traceId, 0, $hiLen) . substr($traceId, $hiLen); } public static function spanIdDecoder(string $spanId): string From d808169af5f2ceab64abdfd71cee95409c34b5e6 Mon Sep 17 00:00:00 2001 From: Luiz Manhani Date: Thu, 28 Aug 2025 11:04:11 -0300 Subject: [PATCH 3/3] fix jaeger decoder; adding control of TracerFactory with TracerContext for retrocompatibility on service with manual instrumentations. --- src/Support/JaegerDecoder.php | 4 ++-- src/TracerContext.php | 5 +++++ src/TracerFactory.php | 8 +++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Support/JaegerDecoder.php b/src/Support/JaegerDecoder.php index 56b1d8c..2d19df7 100644 --- a/src/Support/JaegerDecoder.php +++ b/src/Support/JaegerDecoder.php @@ -22,8 +22,8 @@ public static function traceIdDecoder(string $traceId): string return $traceId; } $hiLen = strlen($traceId) - 16; - - return substr($traceId, 0, $hiLen) . substr($traceId, $hiLen); + $newTraceId = substr($traceId, 0, $hiLen) . substr($traceId, $hiLen); + return str_pad($newTraceId, 32, '0', STR_PAD_LEFT); } public static function spanIdDecoder(string $spanId): string diff --git a/src/TracerContext.php b/src/TracerContext.php index d86f713..6857d5c 100644 --- a/src/TracerContext.php +++ b/src/TracerContext.php @@ -35,6 +35,11 @@ public static function setTracer(Tracer $tracer): Tracer return Context::set(self::TRACER, $tracer); } + public static function hasTracer(): bool + { + return Context::has(self::TRACER); + } + public static function getTracer(): Tracer { return Context::getOrSet(self::TRACER, fn () => make(Tracer::class)); diff --git a/src/TracerFactory.php b/src/TracerFactory.php index e9562c7..b450778 100644 --- a/src/TracerFactory.php +++ b/src/TracerFactory.php @@ -27,6 +27,10 @@ class TracerFactory */ public function __invoke(ContainerInterface $container): Tracer { + if(TracerContext::hasTracer()) { + return TracerContext::getTracer(); + } + $config = $container->get(ConfigInterface::class); $name = $config->get('opentracing.default'); @@ -51,6 +55,8 @@ public function __invoke(ContainerInterface $container): Tracer ); } - return $factory->make($name); + $tracer = $factory->make($name); + TracerContext::setTracer($tracer); + return TracerContext::getTracer(); } }