Make Netty Instrumentation HttpServerRequestTracingHandler propagate "Channel Inactive" event to downstream according to parent contract (#10303)
This commit is contained in:
parent
eba7073475
commit
e04b448b6c
|
@ -73,12 +73,13 @@ public class HttpServerRequestTracingHandler extends ChannelInboundHandlerAdapte
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void channelInactive(ChannelHandlerContext ctx) {
|
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
|
||||||
// connection was closed, close all remaining requests
|
// connection was closed, close all remaining requests
|
||||||
Attribute<Deque<ServerContext>> contextAttr = ctx.channel().attr(AttributeKeys.SERVER_CONTEXT);
|
Attribute<Deque<ServerContext>> contextAttr = ctx.channel().attr(AttributeKeys.SERVER_CONTEXT);
|
||||||
Deque<ServerContext> serverContexts = contextAttr.get();
|
Deque<ServerContext> serverContexts = contextAttr.get();
|
||||||
|
|
||||||
if (serverContexts == null) {
|
if (serverContexts == null) {
|
||||||
|
super.channelInactive(ctx);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,6 +87,7 @@ public class HttpServerRequestTracingHandler extends ChannelInboundHandlerAdapte
|
||||||
while ((serverContext = serverContexts.pollFirst()) != null) {
|
while ((serverContext = serverContexts.pollFirst()) != null) {
|
||||||
instrumenter.end(serverContext.context(), serverContext.request(), null, null);
|
instrumenter.end(serverContext.context(), serverContext.request(), null, null);
|
||||||
}
|
}
|
||||||
|
super.channelInactive(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static <T> Deque<T> getOrCreate(Channel channel, AttributeKey<Deque<T>> key) {
|
private static <T> Deque<T> getOrCreate(Channel channel, AttributeKey<Deque<T>> key) {
|
||||||
|
|
Loading…
Reference in New Issue