From 82118868bfcebb24856e14ad88692d461643b1a1 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Wed, 16 Aug 2023 15:53:10 +0300 Subject: [PATCH] Ensure reactor netty spans are ended in the order they were started (#9203) --- .../reactornetty/v1_0/InstrumentationContexts.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/InstrumentationContexts.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/InstrumentationContexts.java index d87e59d125..b42c7f5140 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/InstrumentationContexts.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/InstrumentationContexts.java @@ -52,7 +52,10 @@ final class InstrumentationContexts { return context; } - void endClientSpan(@Nullable HttpClientResponse response, @Nullable Throwable error) { + // we are synchronizing here to ensure that spans are ended in the oder they are read from the + // queue + synchronized void endClientSpan( + @Nullable HttpClientResponse response, @Nullable Throwable error) { RequestAndContext requestAndContext = clientContexts.poll(); if (requestAndContext != null) { instrumenter().end(requestAndContext.context, requestAndContext.request, response, error);