Remove almost all VirtualField#computeIfNull() usages
MODIFY
instrumentation/netty/netty-3.8/javaagent/build.gradle.kts
instrumentation/netty/netty-3.8/javaagent/build.gradle.kts
@@ -18,6 +18,9 @@ muzzle {
}
dependencies {
+ compileOnly("com.google.auto.value:auto-value-annotations")
+ annotationProcessor("com.google.auto.value:auto-value")
+
compileOnly("io.netty:netty:3.8.0.Final")
testLibrary("io.netty:netty:3.8.0.Final")

MODIFY
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/ChannelFutureListenerInstrumentation.java
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/ChannelFutureListenerInstrumentation.java
@@ -59,17 +59,19 @@ public class ChannelFutureListenerInstrumentation implements TypeInstrumentation
return null;
}
- VirtualField<Channel, ChannelTraceContext> virtualField =
- VirtualField.find(Channel.class, ChannelTraceContext.class);
+ VirtualField<Channel, NettyConnectionContext> virtualField =
+ VirtualField.find(Channel.class, NettyConnectionContext.class);
- ChannelTraceContext channelTraceContext =
- virtualField.computeIfNull(future.getChannel(), ChannelTraceContext.FACTORY);
- Context parentContext = channelTraceContext.getConnectionContext();
+ NettyConnectionContext connectionContext = virtualField.get(future.getChannel());
+ if (connectionContext == null) {
+ return null;
+ }
+ Context parentContext = connectionContext.get();
if (parentContext == null) {
return null;
}
Scope parentScope = parentContext.makeCurrent();
- if (channelTraceContext.createConnectionSpan()) {
+ if (connectionContext.createConnectionSpan()) {
tracer().connectionFailure(parentContext, future.getChannel(), cause);
}
return parentScope;

DELETE
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/ChannelTraceContext.java
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.javaagent.instrumentation.netty.v3_8;
-
-import io.opentelemetry.context.Context;
-import java.util.Objects;
-import java.util.function.Supplier;
-
-public class ChannelTraceContext {
-
- public static final Supplier<ChannelTraceContext> FACTORY = ChannelTraceContext::new;
-
- private Context connectionContext;
- private Context clientParentContext;
- private Context context;
- private boolean connectionSpanCreated;
-
- public Context getConnectionContext() {
- return connectionContext;
- }
-
- public void setConnectionContext(Context connectionContext) {
- this.connectionContext = connectionContext;
- }
-
- public Context getClientParentContext() {
- return clientParentContext;
- }
-
- public void setClientParentContext(Context clientParentContext) {
- this.clientParentContext = clientParentContext;
- }
-
- public Context getContext() {
- return context;
- }
-
- public void setContext(Context context) {
- this.context = context;
- }
-
- public boolean createConnectionSpan() {
- if (connectionSpanCreated) {
- return false;
- }
- connectionSpanCreated = true;
- return true;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj == this) {
- return true;
- }
- if (!(obj instanceof ChannelTraceContext)) {
- return false;
- }
- ChannelTraceContext other = (ChannelTraceContext) obj;
- return Objects.equals(connectionContext, other.connectionContext)
- && Objects.equals(clientParentContext, other.clientParentContext)
- && Objects.equals(context, other.context);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(connectionContext, clientParentContext, context);
- }
-
- @Override
- public String toString() {
- return "ChannelTraceContext{"
- + "connectionContext="
- + connectionContext
- + ", clientParentContext="
- + clientParentContext
- + ", context="
- + context
- + '}';
- }
-}

MODIFY
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelInstrumentation.java
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelInstrumentation.java
@@ -50,15 +50,16 @@ public class NettyChannelInstrumentation implements TypeInstrumentation {
public static void onEnter(@Advice.This Channel channel) {
Context context = Java8BytecodeBridge.currentContext();
Span span = Java8BytecodeBridge.spanFromContext(context);
- if (span.getSpanContext().isValid()) {
- VirtualField<Channel, ChannelTraceContext> virtualField =
- VirtualField.find(Channel.class, ChannelTraceContext.class);
-
- if (virtualField.computeIfNull(channel, ChannelTraceContext.FACTORY).getConnectionContext()
- == null) {
- virtualField.get(channel).setConnectionContext(context);
+ if (!span.getSpanContext().isValid()) {
+ return;
}
+
+ VirtualField<Channel, NettyConnectionContext> virtualField =
+ VirtualField.find(Channel.class, NettyConnectionContext.class);
+ if (virtualField.get(channel) != null) {
+ return;
}
+ virtualField.set(channel, new NettyConnectionContext(context));
}
}
}

MODIFY
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelPipelineInstrumentation.java
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelPipelineInstrumentation.java
@@ -12,7 +12,6 @@ import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
-import io.opentelemetry.instrumentation.api.field.VirtualField;
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
import io.opentelemetry.javaagent.instrumentation.api.CallDepth;
@@ -25,7 +24,6 @@ import io.opentelemetry.javaagent.instrumentation.netty.v3_8.server.HttpServerTr
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;
-import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelHandler;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.handler.codec.http.HttpClientCodec;
@@ -67,35 +65,28 @@ public class NettyChannelPipelineInstrumentation implements TypeInstrumentation
* currently implemented.
*/
public static class ChannelPipelineAdviceUtil {
- public static void wrapHandler(
- VirtualField<Channel, ChannelTraceContext> virtualField,
- ChannelPipeline pipeline,
- ChannelHandler handler) {
+ public static void wrapHandler(ChannelPipeline pipeline, ChannelHandler handler) {
// Server pipeline handlers
if (handler instanceof HttpServerCodec) {
- pipeline.addLast(
- HttpServerTracingHandler.class.getName(), new HttpServerTracingHandler(virtualField));
+ pipeline.addLast(HttpServerTracingHandler.class.getName(), new HttpServerTracingHandler());
} else if (handler instanceof HttpRequestDecoder) {
pipeline.addLast(
- HttpServerRequestTracingHandler.class.getName(),
- new HttpServerRequestTracingHandler(virtualField));
+ HttpServerRequestTracingHandler.class.getName(), new HttpServerRequestTracingHandler());
} else if (handler instanceof HttpResponseEncoder) {
pipeline.addLast(
HttpServerResponseTracingHandler.class.getName(),
- new HttpServerResponseTracingHandler(virtualField));
+ new HttpServerResponseTracingHandler());
} else
// Client pipeline handlers
if (handler instanceof HttpClientCodec) {
- pipeline.addLast(
- HttpClientTracingHandler.class.getName(), new HttpClientTracingHandler(virtualField));
+ pipeline.addLast(HttpClientTracingHandler.class.getName(), new HttpClientTracingHandler());
} else if (handler instanceof HttpRequestEncoder) {
pipeline.addLast(
- HttpClientRequestTracingHandler.class.getName(),
- new HttpClientRequestTracingHandler(virtualField));
+ HttpClientRequestTracingHandler.class.getName(), new HttpClientRequestTracingHandler());
} else if (handler instanceof HttpResponseDecoder) {
pipeline.addLast(
HttpClientResponseTracingHandler.class.getName(),
- new HttpClientResponseTracingHandler(virtualField));
+ new HttpClientResponseTracingHandler());
}
}
}
@@ -127,10 +118,7 @@ public class NettyChannelPipelineInstrumentation implements TypeInstrumentation
return;
}
- VirtualField<Channel, ChannelTraceContext> virtualField =
- VirtualField.find(Channel.class, ChannelTraceContext.class);
-
- ChannelPipelineAdviceUtil.wrapHandler(virtualField, pipeline, handler);
+ ChannelPipelineAdviceUtil.wrapHandler(pipeline, handler);
}
}
@@ -161,10 +149,7 @@ public class NettyChannelPipelineInstrumentation implements TypeInstrumentation
return;
}
- VirtualField<Channel, ChannelTraceContext> virtualField =
- VirtualField.find(Channel.class, ChannelTraceContext.class);
-
- ChannelPipelineAdviceUtil.wrapHandler(virtualField, pipeline, handler);
+ ChannelPipelineAdviceUtil.wrapHandler(pipeline, handler);
}
}
}

ADD
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyConnectionContext.java
+/*
+ * Copyright The OpenTelemetry Authors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package io.opentelemetry.javaagent.instrumentation.netty.v3_8;
+
+import io.opentelemetry.context.Context;
+import org.checkerframework.checker.nullness.qual.Nullable;
+
+public class NettyConnectionContext {
+ private Context connectionContext;
+ private boolean connectionSpanCreated;
+
+ public NettyConnectionContext(Context connectionContext) {
+ this.connectionContext = connectionContext;
+ }
+
+ @Nullable
+ public Context get() {
+ return connectionContext;
+ }
+
+ @Nullable
+ public Context remove() {
+ Context context = this.connectionContext;
+ connectionContext = null;
+ return context;
+ }
+
+ public boolean createConnectionSpan() {
+ if (connectionSpanCreated) {
+ return false;
+ }
+ connectionSpanCreated = true;
+ return true;
+ }
+}

ADD
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyRequestContexts.java
+/*
+ * Copyright The OpenTelemetry Authors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package io.opentelemetry.javaagent.instrumentation.netty.v3_8;
+
+import com.google.auto.value.AutoValue;
+import io.opentelemetry.context.Context;
+import org.checkerframework.checker.nullness.qual.Nullable;
+
+@AutoValue
+public abstract class NettyRequestContexts {
+
+ public static NettyRequestContexts create(@Nullable Context parentContext, Context context) {
+ return new AutoValue_NettyRequestContexts(parentContext, context);
+ }
+
+ @Nullable
+ public abstract Context parentContext();
+
+ public abstract Context context();
+}

MODIFY
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientRequestTracingHandler.java
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientRequestTracingHandler.java
@@ -10,7 +10,8 @@ import static io.opentelemetry.javaagent.instrumentation.netty.v3_8.client.Netty
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;
import io.opentelemetry.instrumentation.api.field.VirtualField;
-import io.opentelemetry.javaagent.instrumentation.netty.v3_8.ChannelTraceContext;
+import io.opentelemetry.javaagent.instrumentation.netty.v3_8.NettyConnectionContext;
+import io.opentelemetry.javaagent.instrumentation.netty.v3_8.NettyRequestContexts;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.MessageEvent;
@@ -19,11 +20,10 @@ import org.jboss.netty.handler.codec.http.HttpRequest;
public class HttpClientRequestTracingHandler extends SimpleChannelDownstreamHandler {
- private final VirtualField<Channel, ChannelTraceContext> virtualField;
-
- public HttpClientRequestTracingHandler(VirtualField<Channel, ChannelTraceContext> virtualField) {
- this.virtualField = virtualField;
- }
+ private static final VirtualField<Channel, NettyConnectionContext> connectionContextField =
+ VirtualField.find(Channel.class, NettyConnectionContext.class);
+ private static final VirtualField<Channel, NettyRequestContexts> requestContextsField =
+ VirtualField.find(Channel.class, NettyRequestContexts.class);
@Override
public void writeRequested(ChannelHandlerContext ctx, MessageEvent event) {
@@ -33,13 +33,12 @@ public class HttpClientRequestTracingHandler extends SimpleChannelDownstreamHand
return;
}
- ChannelTraceContext channelTraceContext =
- virtualField.computeIfNull(ctx.getChannel(), ChannelTraceContext.FACTORY);
-
- Context parentContext = channelTraceContext.getConnectionContext();
- if (parentContext != null) {
- channelTraceContext.setConnectionContext(null);
- } else {
+ Context parentContext = null;
+ NettyConnectionContext connectionContext = connectionContextField.get(ctx.getChannel());
+ if (connectionContext != null) {
+ parentContext = connectionContext.remove();
+ }
+ if (parentContext == null) {
parentContext = Context.current();
}
@@ -49,8 +48,7 @@ public class HttpClientRequestTracingHandler extends SimpleChannelDownstreamHand
}
Context context = tracer().startSpan(parentContext, ctx, (HttpRequest) message);
- channelTraceContext.setContext(context);
- channelTraceContext.setClientParentContext(parentContext);
+ requestContextsField.set(ctx.getChannel(), NettyRequestContexts.create(parentContext, context));
try (Scope ignored = context.makeCurrent()) {
ctx.sendDownstream(event);

MODIFY
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientResponseTracingHandler.java
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientResponseTracingHandler.java
@@ -7,10 +7,9 @@ package io.opentelemetry.javaagent.instrumentation.netty.v3_8.client;
import static io.opentelemetry.javaagent.instrumentation.netty.v3_8.client.NettyHttpClientTracer.tracer;
-import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;
import io.opentelemetry.instrumentation.api.field.VirtualField;
-import io.opentelemetry.javaagent.instrumentation.netty.v3_8.ChannelTraceContext;
+import io.opentelemetry.javaagent.instrumentation.netty.v3_8.NettyRequestContexts;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.MessageEvent;
@@ -19,34 +18,24 @@ import org.jboss.netty.handler.codec.http.HttpResponse;
public class HttpClientResponseTracingHandler extends SimpleChannelUpstreamHandler {
- private final VirtualField<Channel, ChannelTraceContext> virtualField;
-
- public HttpClientResponseTracingHandler(VirtualField<Channel, ChannelTraceContext> virtualField) {
- this.virtualField = virtualField;
- }
+ private static final VirtualField<Channel, NettyRequestContexts> requestContextsField =
+ VirtualField.find(Channel.class, NettyRequestContexts.class);
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent msg) {
- ChannelTraceContext channelTraceContext =
- virtualField.computeIfNull(ctx.getChannel(), ChannelTraceContext.FACTORY);
+ NettyRequestContexts requestContexts = requestContextsField.get(ctx.getChannel());
- Context context = channelTraceContext.getContext();
- if (context == null) {
+ if (requestContexts == null || requestContexts.parentContext() == null) {
ctx.sendUpstream(msg);
return;
}
if (msg.getMessage() instanceof HttpResponse) {
- tracer().end(context, (HttpResponse) msg.getMessage());
+ tracer().end(requestContexts.context(), (HttpResponse) msg.getMessage());
}
// We want the callback in the scope of the parent, not the client span
- Context parentContext = channelTraceContext.getClientParentContext();
- if (parentContext != null) {
- try (Scope ignored = parentContext.makeCurrent()) {
- ctx.sendUpstream(msg);
- }
- } else {
+ try (Scope ignored = requestContexts.parentContext().makeCurrent()) {
ctx.sendUpstream(msg);
}
}

MODIFY
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientTracingHandler.java
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientTracingHandler.java
package io.opentelemetry.javaagent.instrumentation.netty.v3_8.client;
-import io.opentelemetry.instrumentation.api.field.VirtualField;
-import io.opentelemetry.javaagent.instrumentation.netty.v3_8.ChannelTraceContext;
import io.opentelemetry.javaagent.instrumentation.netty.v3_8.util.CombinedSimpleChannelHandler;
-import org.jboss.netty.channel.Channel;
public class HttpClientTracingHandler
extends CombinedSimpleChannelHandler<
HttpClientResponseTracingHandler, HttpClientRequestTracingHandler> {
- public HttpClientTracingHandler(VirtualField<Channel, ChannelTraceContext> virtualField) {
- super(
- new HttpClientResponseTracingHandler(virtualField),
- new HttpClientRequestTracingHandler(virtualField));
+ public HttpClientTracingHandler() {
+ super(new HttpClientResponseTracingHandler(), new HttpClientRequestTracingHandler());
}
}

MODIFY
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerRequestTracingHandler.java
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerRequestTracingHandler.java
@@ -10,7 +10,7 @@ import static io.opentelemetry.javaagent.instrumentation.netty.v3_8.server.Netty
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;
import io.opentelemetry.instrumentation.api.field.VirtualField;
-import io.opentelemetry.javaagent.instrumentation.netty.v3_8.ChannelTraceContext;
+import io.opentelemetry.javaagent.instrumentation.netty.v3_8.NettyRequestContexts;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.MessageEvent;
@@ -19,24 +19,18 @@ import org.jboss.netty.handler.codec.http.HttpRequest;
public class HttpServerRequestTracingHandler extends SimpleChannelUpstreamHandler {
- private final VirtualField<Channel, ChannelTraceContext> virtualField;
-
- public HttpServerRequestTracingHandler(VirtualField<Channel, ChannelTraceContext> virtualField) {
- this.virtualField = virtualField;
- }
+ private static final VirtualField<Channel, NettyRequestContexts> requestContextsField =
+ VirtualField.find(Channel.class, NettyRequestContexts.class);
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent event) {
- ChannelTraceContext channelTraceContext =
- virtualField.computeIfNull(ctx.getChannel(), ChannelTraceContext.FACTORY);
-
Object message = event.getMessage();
if (!(message instanceof HttpRequest)) {
- Context serverContext = tracer().getServerContext(channelTraceContext);
- if (serverContext == null) {
+ NettyRequestContexts requestContexts = requestContextsField.get(ctx.getChannel());
+ if (requestContexts == null) {
ctx.sendUpstream(event);
} else {
- try (Scope ignored = serverContext.makeCurrent()) {
+ try (Scope ignored = requestContexts.context().makeCurrent()) {
ctx.sendUpstream(event);
}
}
@@ -46,9 +40,9 @@ public class HttpServerRequestTracingHandler extends SimpleChannelUpstreamHandle
HttpRequest request = (HttpRequest) message;
Context context =
- tracer()
- .startSpan(
- request, ctx.getChannel(), channelTraceContext, "HTTP " + request.getMethod());
+ tracer().startSpan(request, ctx.getChannel(), null, "HTTP " + request.getMethod());
+ requestContextsField.set(ctx.getChannel(), NettyRequestContexts.create(null, context));
+
try (Scope ignored = context.makeCurrent()) {
ctx.sendUpstream(event);
// the span is ended normally in HttpServerResponseTracingHandler

MODIFY
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerResponseTracingHandler.java
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerResponseTracingHandler.java
@@ -10,7 +10,7 @@ import static io.opentelemetry.javaagent.instrumentation.netty.v3_8.server.Netty
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;
import io.opentelemetry.instrumentation.api.field.VirtualField;
-import io.opentelemetry.javaagent.instrumentation.netty.v3_8.ChannelTraceContext;
+import io.opentelemetry.javaagent.instrumentation.netty.v3_8.NettyRequestContexts;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.MessageEvent;
@@ -19,29 +19,25 @@ import org.jboss.netty.handler.codec.http.HttpResponse;
public class HttpServerResponseTracingHandler extends SimpleChannelDownstreamHandler {
- private final VirtualField<Channel, ChannelTraceContext> virtualField;
-
- public HttpServerResponseTracingHandler(VirtualField<Channel, ChannelTraceContext> virtualField) {
- this.virtualField = virtualField;
- }
+ private static final VirtualField<Channel, NettyRequestContexts> requestContextsField =
+ VirtualField.find(Channel.class, NettyRequestContexts.class);
@Override
public void writeRequested(ChannelHandlerContext ctx, MessageEvent msg) {
- ChannelTraceContext channelTraceContext =
- virtualField.computeIfNull(ctx.getChannel(), ChannelTraceContext.FACTORY);
+ NettyRequestContexts requestContexts = requestContextsField.get(ctx.getChannel());
- Context context = tracer().getServerContext(channelTraceContext);
- if (context == null || !(msg.getMessage() instanceof HttpResponse)) {
+ if (requestContexts == null || !(msg.getMessage() instanceof HttpResponse)) {
ctx.sendDownstream(msg);
return;
}
+ Context context = requestContexts.context();
try (Scope ignored = context.makeCurrent()) {
ctx.sendDownstream(msg);
+ tracer().end(context, (HttpResponse) msg.getMessage());
} catch (Throwable throwable) {
tracer().endExceptionally(context, throwable);
throw throwable;
}
- tracer().end(context, (HttpResponse) msg.getMessage());
}
}

MODIFY
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerTracingHandler.java
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerTracingHandler.java
package io.opentelemetry.javaagent.instrumentation.netty.v3_8.server;
-import io.opentelemetry.instrumentation.api.field.VirtualField;
-import io.opentelemetry.javaagent.instrumentation.netty.v3_8.ChannelTraceContext;
import io.opentelemetry.javaagent.instrumentation.netty.v3_8.util.CombinedSimpleChannelHandler;
-import org.jboss.netty.channel.Channel;
public class HttpServerTracingHandler
extends CombinedSimpleChannelHandler<
HttpServerRequestTracingHandler, HttpServerResponseTracingHandler> {
- public HttpServerTracingHandler(VirtualField<Channel, ChannelTraceContext> virtualField) {
- super(
- new HttpServerRequestTracingHandler(virtualField),
- new HttpServerResponseTracingHandler(virtualField));
+ public HttpServerTracingHandler() {
+ super(new HttpServerRequestTracingHandler(), new HttpServerResponseTracingHandler());
}
}

MODIFY
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyHttpServerTracer.java
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyHttpServerTracer.java
@@ -10,7 +10,6 @@ import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.HOST;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapGetter;
import io.opentelemetry.instrumentation.api.tracer.HttpServerTracer;
-import io.opentelemetry.javaagent.instrumentation.netty.v3_8.ChannelTraceContext;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import org.checkerframework.checker.nullness.qual.Nullable;
@@ -19,7 +18,7 @@ import org.jboss.netty.handler.codec.http.HttpRequest;
import org.jboss.netty.handler.codec.http.HttpResponse;
public class NettyHttpServerTracer
- extends HttpServerTracer<HttpRequest, HttpResponse, Channel, ChannelTraceContext> {
+ extends HttpServerTracer<HttpRequest, HttpResponse, Channel, Void> {
private static final NettyHttpServerTracer TRACER = new NettyHttpServerTracer();
public static NettyHttpServerTracer tracer() {
@@ -42,13 +41,11 @@ public class NettyHttpServerTracer
}
@Override
- protected void attachServerContext(Context context, ChannelTraceContext channelTraceContext) {
- channelTraceContext.setContext(context);
- }
+ protected void attachServerContext(Context context, Void unused) {}
@Override
- public Context getServerContext(ChannelTraceContext channelTraceContext) {
- return channelTraceContext.getContext();
+ public Context getServerContext(Void unused) {
+ return null;
}
@Override

Remove almost all VirtualField#computeIfNull() usages (#4313)