diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientRequestTracingHandler.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientRequestTracingHandler.java index 514869c073..83fea5b528 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientRequestTracingHandler.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientRequestTracingHandler.java @@ -26,10 +26,10 @@ public class HttpClientRequestTracingHandler extends SimpleChannelDownstreamHand VirtualField.find(Channel.class, NettyClientRequestAndContexts.class); @Override - public void writeRequested(ChannelHandlerContext ctx, MessageEvent event) { + public void writeRequested(ChannelHandlerContext ctx, MessageEvent event) throws Exception { Object message = event.getMessage(); if (!(message instanceof HttpRequest)) { - ctx.sendDownstream(event); + super.writeRequested(ctx, event); return; } @@ -45,7 +45,7 @@ public class HttpClientRequestTracingHandler extends SimpleChannelDownstreamHand HttpRequestAndChannel request = HttpRequestAndChannel.create((HttpRequest) message, ctx.getChannel()); if (!instrumenter().shouldStart(parentContext, request)) { - ctx.sendDownstream(event); + super.writeRequested(ctx, event); return; } @@ -54,7 +54,7 @@ public class HttpClientRequestTracingHandler extends SimpleChannelDownstreamHand ctx.getChannel(), NettyClientRequestAndContexts.create(parentContext, context, request)); try (Scope ignored = context.makeCurrent()) { - ctx.sendDownstream(event); + super.writeRequested(ctx, event); // span is ended normally in HttpClientResponseTracingHandler } catch (Throwable throwable) { instrumenter().end(context, request, null, throwable); diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientResponseTracingHandler.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientResponseTracingHandler.java index 924bb67383..4ee3354503 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientResponseTracingHandler.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientResponseTracingHandler.java @@ -22,11 +22,11 @@ public class HttpClientResponseTracingHandler extends SimpleChannelUpstreamHandl VirtualField.find(Channel.class, NettyClientRequestAndContexts.class); @Override - public void messageReceived(ChannelHandlerContext ctx, MessageEvent msg) { + public void messageReceived(ChannelHandlerContext ctx, MessageEvent msg) throws Exception { NettyClientRequestAndContexts requestAndContexts = requestContextsField.get(ctx.getChannel()); if (requestAndContexts == null) { - ctx.sendUpstream(msg); + super.messageReceived(ctx, msg); return; } @@ -42,7 +42,7 @@ public class HttpClientResponseTracingHandler extends SimpleChannelUpstreamHandl // We want the callback in the scope of the parent, not the client span try (Scope ignored = requestAndContexts.parentContext().makeCurrent()) { - ctx.sendUpstream(msg); + super.messageReceived(ctx, msg); } } } diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerRequestTracingHandler.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerRequestTracingHandler.java index e1921712bf..326bca72f1 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerRequestTracingHandler.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerRequestTracingHandler.java @@ -23,15 +23,15 @@ public class HttpServerRequestTracingHandler extends SimpleChannelUpstreamHandle VirtualField.find(Channel.class, NettyServerRequestAndContext.class); @Override - public void messageReceived(ChannelHandlerContext ctx, MessageEvent event) { + public void messageReceived(ChannelHandlerContext ctx, MessageEvent event) throws Exception { Object message = event.getMessage(); if (!(message instanceof HttpRequest)) { NettyServerRequestAndContext requestAndContext = requestAndContextField.get(ctx.getChannel()); if (requestAndContext == null) { - ctx.sendUpstream(event); + super.messageReceived(ctx, event); } else { try (Scope ignored = requestAndContext.context().makeCurrent()) { - ctx.sendUpstream(event); + super.messageReceived(ctx, event); } } return; @@ -41,7 +41,8 @@ public class HttpServerRequestTracingHandler extends SimpleChannelUpstreamHandle HttpRequestAndChannel request = HttpRequestAndChannel.create((HttpRequest) message, ctx.getChannel()); if (!instrumenter().shouldStart(parentContext, request)) { - ctx.sendUpstream(event); + super.messageReceived(ctx, event); + return; } Context context = instrumenter().start(parentContext, request); @@ -49,7 +50,7 @@ public class HttpServerRequestTracingHandler extends SimpleChannelUpstreamHandle ctx.getChannel(), NettyServerRequestAndContext.create(request, context)); try (Scope ignored = context.makeCurrent()) { - ctx.sendUpstream(event); + super.messageReceived(ctx, event); // the span is ended normally in HttpServerResponseTracingHandler } catch (Throwable throwable) { instrumenter().end(context, request, null, throwable); diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerResponseTracingHandler.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerResponseTracingHandler.java index 7adb80d271..cd371a53e9 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerResponseTracingHandler.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerResponseTracingHandler.java @@ -24,11 +24,11 @@ public class HttpServerResponseTracingHandler extends SimpleChannelDownstreamHan VirtualField.find(Channel.class, NettyServerRequestAndContext.class); @Override - public void writeRequested(ChannelHandlerContext ctx, MessageEvent msg) { + public void writeRequested(ChannelHandlerContext ctx, MessageEvent msg) throws Exception { NettyServerRequestAndContext requestAndContext = requestAndContextField.get(ctx.getChannel()); if (requestAndContext == null || !(msg.getMessage() instanceof HttpResponse)) { - ctx.sendDownstream(msg); + super.writeRequested(ctx, msg); return; } @@ -38,7 +38,7 @@ public class HttpServerResponseTracingHandler extends SimpleChannelDownstreamHan Throwable error = null; try (Scope ignored = context.makeCurrent()) { - ctx.sendDownstream(msg); + super.writeRequested(ctx, msg); } catch (Throwable t) { error = t; throw t; diff --git a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettySslInstrumentationHandler.java b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettySslInstrumentationHandler.java index 54c6fa19a1..24731fc427 100644 --- a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettySslInstrumentationHandler.java +++ b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettySslInstrumentationHandler.java @@ -64,20 +64,20 @@ public final class NettySslInstrumentationHandler extends ChannelDuplexHandler { } @Override - public void channelRegistered(ChannelHandlerContext ctx) { + public void channelRegistered(ChannelHandlerContext ctx) throws Exception { // this should never happen at this point (since the handler is only registered when SSL classes // are on classpath); checking just to be extra safe if (SSL_HANDSHAKE_COMPLETION_EVENT == null) { ctx.pipeline().remove(this); instrumentationHandlerField.set(realHandler, null); - ctx.fireChannelRegistered(); + super.channelRegistered(ctx); return; } // remember the parent context from the time of channel registration; // this happens inside Bootstrap#connect() parentContext = Context.current(); - ctx.fireChannelRegistered(); + super.channelRegistered(ctx); } @Override @@ -85,7 +85,8 @@ public final class NettySslInstrumentationHandler extends ChannelDuplexHandler { ChannelHandlerContext ctx, SocketAddress remoteAddress, SocketAddress localAddress, - ChannelPromise promise) { + ChannelPromise promise) + throws Exception { // netty SslHandler starts the handshake after it receives the channelActive() signal; this // happens just after the connection is established @@ -101,11 +102,11 @@ public final class NettySslInstrumentationHandler extends ChannelDuplexHandler { context = instrumenter.start(parentContext, request); } }); - ctx.connect(remoteAddress, localAddress, promise); + super.connect(ctx, remoteAddress, localAddress, promise); } @Override - public void userEventTriggered(ChannelHandlerContext ctx, Object evt) { + public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { if (SSL_HANDSHAKE_COMPLETION_EVENT.isInstance(evt)) { if (ctx.pipeline().context(this) != null) { ctx.pipeline().remove(this); @@ -117,7 +118,7 @@ public final class NettySslInstrumentationHandler extends ChannelDuplexHandler { } } - ctx.fireUserEventTriggered(evt); + super.userEventTriggered(ctx, evt); } private static Throwable getCause(Object evt) { diff --git a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/HttpClientRequestTracingHandler.java b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/HttpClientRequestTracingHandler.java index 6ba14db480..d6d8eb2980 100644 --- a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/HttpClientRequestTracingHandler.java +++ b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/HttpClientRequestTracingHandler.java @@ -20,9 +20,9 @@ import io.opentelemetry.javaagent.instrumentation.netty.v4_0.AttributeKeys; public class HttpClientRequestTracingHandler extends ChannelOutboundHandlerAdapter { @Override - public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise prm) { + public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise prm) throws Exception { if (!(msg instanceof HttpRequest)) { - ctx.write(msg, prm); + super.write(ctx, msg, prm); return; } @@ -33,7 +33,7 @@ public class HttpClientRequestTracingHandler extends ChannelOutboundHandlerAdapt HttpRequestAndChannel request = HttpRequestAndChannel.create((HttpRequest) msg, ctx.channel()); if (!instrumenter().shouldStart(parentContext, request)) { - ctx.write(msg, prm); + super.write(ctx, msg, prm); return; } @@ -47,7 +47,7 @@ public class HttpClientRequestTracingHandler extends ChannelOutboundHandlerAdapt requestAttr.set(request); try (Scope ignored = context.makeCurrent()) { - ctx.write(msg, prm); + super.write(ctx, msg, prm); // span is ended normally in HttpClientResponseTracingHandler } catch (Throwable throwable) { instrumenter().end(contextAttr.getAndRemove(), requestAttr.getAndRemove(), null, throwable); diff --git a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/HttpClientResponseTracingHandler.java b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/HttpClientResponseTracingHandler.java index b0cdd86dbb..f56be53747 100644 --- a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/HttpClientResponseTracingHandler.java +++ b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/HttpClientResponseTracingHandler.java @@ -21,11 +21,11 @@ import io.opentelemetry.javaagent.instrumentation.netty.v4_0.AttributeKeys; public class HttpClientResponseTracingHandler extends ChannelInboundHandlerAdapter { @Override - public void channelRead(ChannelHandlerContext ctx, Object msg) { + public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { Attribute contextAttr = ctx.channel().attr(AttributeKeys.CLIENT_CONTEXT); Context context = contextAttr.get(); if (context == null) { - ctx.fireChannelRead(msg); + super.channelRead(ctx, msg); return; } @@ -53,10 +53,10 @@ public class HttpClientResponseTracingHandler extends ChannelInboundHandlerAdapt // We want the callback in the scope of the parent, not the client span if (parentContext != null) { try (Scope ignored = parentContext.makeCurrent()) { - ctx.fireChannelRead(msg); + super.channelRead(ctx, msg); } } else { - ctx.fireChannelRead(msg); + super.channelRead(ctx, msg); } if (msg instanceof FullHttpResponse) { diff --git a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/server/HttpServerRequestTracingHandler.java b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/server/HttpServerRequestTracingHandler.java index c5a5c109a1..6a398fd99e 100644 --- a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/server/HttpServerRequestTracingHandler.java +++ b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/server/HttpServerRequestTracingHandler.java @@ -20,7 +20,7 @@ import io.opentelemetry.javaagent.instrumentation.netty.v4_0.AttributeKeys; public class HttpServerRequestTracingHandler extends ChannelInboundHandlerAdapter { @Override - public void channelRead(ChannelHandlerContext ctx, Object msg) { + public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { Channel channel = ctx.channel(); Attribute contextAttr = channel.attr(AttributeKeys.SERVER_CONTEXT); Attribute requestAttr = channel.attr(AttributeKeys.SERVER_REQUEST); @@ -28,10 +28,10 @@ public class HttpServerRequestTracingHandler extends ChannelInboundHandlerAdapte if (!(msg instanceof HttpRequest)) { Context serverContext = contextAttr.get(); if (serverContext == null) { - ctx.fireChannelRead(msg); + super.channelRead(ctx, msg); } else { try (Scope ignored = serverContext.makeCurrent()) { - ctx.fireChannelRead(msg); + super.channelRead(ctx, msg); } } return; @@ -44,7 +44,7 @@ public class HttpServerRequestTracingHandler extends ChannelInboundHandlerAdapte HttpRequestAndChannel request = HttpRequestAndChannel.create((HttpRequest) msg, channel); if (!instrumenter().shouldStart(parentContext, request)) { - ctx.fireChannelRead(msg); + super.channelRead(ctx, msg); return; } @@ -53,7 +53,7 @@ public class HttpServerRequestTracingHandler extends ChannelInboundHandlerAdapte requestAttr.set(request); try (Scope ignored = context.makeCurrent()) { - ctx.fireChannelRead(msg); + super.channelRead(ctx, msg); // the span is ended normally in HttpServerResponseTracingHandler } catch (Throwable throwable) { // make sure to remove the server context on end() call diff --git a/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/client/HttpClientRequestTracingHandler.java b/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/client/HttpClientRequestTracingHandler.java index 9c1317465b..b8e42284a3 100644 --- a/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/client/HttpClientRequestTracingHandler.java +++ b/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/client/HttpClientRequestTracingHandler.java @@ -35,9 +35,9 @@ public class HttpClientRequestTracingHandler extends ChannelOutboundHandlerAdapt } @Override - public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise prm) { + public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise prm) throws Exception { if (!(msg instanceof HttpRequest)) { - ctx.write(msg, prm); + super.write(ctx, msg, prm); return; } @@ -48,7 +48,7 @@ public class HttpClientRequestTracingHandler extends ChannelOutboundHandlerAdapt HttpRequestAndChannel request = HttpRequestAndChannel.create((HttpRequest) msg, ctx.channel()); if (!instrumenter.shouldStart(parentContext, request) || isAwsRequest(request)) { - ctx.write(msg, prm); + super.write(ctx, msg, prm); return; } @@ -62,7 +62,7 @@ public class HttpClientRequestTracingHandler extends ChannelOutboundHandlerAdapt requestAttr.set(request); try (Scope ignored = context.makeCurrent()) { - ctx.write(msg, prm); + super.write(ctx, msg, prm); // span is ended normally in HttpClientResponseTracingHandler } catch (Throwable throwable) { instrumenter.end(contextAttr.getAndSet(null), requestAttr.getAndSet(null), null, throwable); diff --git a/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/client/HttpClientResponseTracingHandler.java b/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/client/HttpClientResponseTracingHandler.java index 30a03d8718..a9819a8da8 100644 --- a/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/client/HttpClientResponseTracingHandler.java +++ b/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/client/HttpClientResponseTracingHandler.java @@ -37,11 +37,11 @@ public class HttpClientResponseTracingHandler extends ChannelInboundHandlerAdapt } @Override - public void channelRead(ChannelHandlerContext ctx, Object msg) { + public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { Attribute contextAttr = ctx.channel().attr(AttributeKeys.CLIENT_CONTEXT); Context context = contextAttr.get(); if (context == null) { - ctx.fireChannelRead(msg); + super.channelRead(ctx, msg); return; } @@ -69,10 +69,10 @@ public class HttpClientResponseTracingHandler extends ChannelInboundHandlerAdapt // We want the callback in the scope of the parent, not the client span if (parentContext != null) { try (Scope ignored = parentContext.makeCurrent()) { - ctx.fireChannelRead(msg); + super.channelRead(ctx, msg); } } else { - ctx.fireChannelRead(msg); + super.channelRead(ctx, msg); } if (msg instanceof FullHttpResponse) { diff --git a/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/server/HttpServerRequestTracingHandler.java b/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/server/HttpServerRequestTracingHandler.java index 0a666b1623..140c59b2e3 100644 --- a/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/server/HttpServerRequestTracingHandler.java +++ b/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/server/HttpServerRequestTracingHandler.java @@ -35,7 +35,7 @@ public class HttpServerRequestTracingHandler extends ChannelInboundHandlerAdapte } @Override - public void channelRead(ChannelHandlerContext ctx, Object msg) { + public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { Channel channel = ctx.channel(); Attribute contextAttr = channel.attr(AttributeKeys.SERVER_CONTEXT); Attribute requestAttr = channel.attr(HTTP_REQUEST); @@ -43,10 +43,10 @@ public class HttpServerRequestTracingHandler extends ChannelInboundHandlerAdapte if (!(msg instanceof HttpRequest)) { Context serverContext = contextAttr.get(); if (serverContext == null) { - ctx.fireChannelRead(msg); + super.channelRead(ctx, msg); } else { try (Scope ignored = serverContext.makeCurrent()) { - ctx.fireChannelRead(msg); + super.channelRead(ctx, msg); } } return; @@ -59,7 +59,7 @@ public class HttpServerRequestTracingHandler extends ChannelInboundHandlerAdapte HttpRequestAndChannel request = HttpRequestAndChannel.create((HttpRequest) msg, channel); if (!instrumenter.shouldStart(parentContext, request)) { - ctx.fireChannelRead(msg); + super.channelRead(ctx, msg); return; } @@ -68,7 +68,7 @@ public class HttpServerRequestTracingHandler extends ChannelInboundHandlerAdapte requestAttr.set(request); try (Scope ignored = context.makeCurrent()) { - ctx.fireChannelRead(msg); + super.channelRead(ctx, msg); // the span is ended normally in HttpServerResponseTracingHandler } catch (Throwable throwable) { // make sure to remove the server context on end() call diff --git a/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/server/HttpServerResponseTracingHandler.java b/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/server/HttpServerResponseTracingHandler.java index 95b562bd9f..831b59872c 100644 --- a/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/server/HttpServerResponseTracingHandler.java +++ b/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/internal/server/HttpServerResponseTracingHandler.java @@ -42,11 +42,11 @@ public class HttpServerResponseTracingHandler extends ChannelOutboundHandlerAdap } @Override - public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise prm) { + public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise prm) throws Exception { Attribute contextAttr = ctx.channel().attr(AttributeKeys.SERVER_CONTEXT); Context context = contextAttr.get(); if (context == null) { - ctx.write(msg, prm); + super.write(ctx, msg, prm); return; } @@ -87,7 +87,7 @@ public class HttpServerResponseTracingHandler extends ChannelOutboundHandlerAdap } try (Scope ignored = context.makeCurrent()) { - ctx.write(msg, writePromise); + super.write(ctx, msg, writePromise); } catch (Throwable throwable) { end(ctx.channel(), null, throwable); throw throwable;