diff --git a/reactor-netty-http/src/main/java/reactor/netty/http/server/AbstractHttpServerMetricsHandler.java b/reactor-netty-http/src/main/java/reactor/netty/http/server/AbstractHttpServerMetricsHandler.java index d9daefc73e..7f07157d40 100644 --- a/reactor-netty-http/src/main/java/reactor/netty/http/server/AbstractHttpServerMetricsHandler.java +++ b/reactor-netty-http/src/main/java/reactor/netty/http/server/AbstractHttpServerMetricsHandler.java @@ -119,24 +119,30 @@ public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) if (msg instanceof LastHttpContent) { promise.addListener(future -> { - try { - ChannelOperations channelOps = ChannelOperations.get(ctx.channel()); - if (channelOps instanceof HttpServerOperations) { - HttpServerOperations ops = (HttpServerOperations) channelOps; + ChannelOperations channelOps = ChannelOperations.get(ctx.channel()); + if (channelOps instanceof HttpServerOperations) { + HttpServerOperations ops = (HttpServerOperations) channelOps; + try { recordWrite(ops, uriTagValue == null ? ops.path : uriTagValue.apply(ops.path), ops.method().name(), ops.status().codeAsText().toString()); - if (!ops.isHttp2() && ops.hostAddress() != null) { - // This metric is not applicable for HTTP/2 - // ops.hostAddress() == null when request decoding failed, in this case - // we do not report active connection, so we do not report inactive connection + } + catch (RuntimeException e) { + log.warn("Exception caught while recording metrics.", e); + // Allow request-response exchange to continue, unaffected by metrics problem + } + if (!ops.isHttp2() && ops.hostAddress() != null) { + // This metric is not applicable for HTTP/2 + // ops.hostAddress() == null when request decoding failed, in this case + // we do not report active connection, so we do not report inactive connection + try { recordInactiveConnection(ops); } + catch (RuntimeException e) { + log.warn("Exception caught while recording metrics.", e); + // Allow request-response exchange to continue, unaffected by metrics problem + } } } - catch (RuntimeException e) { - log.warn("Exception caught while recording metrics.", e); - // Allow request-response exchange to continue, unaffected by metrics problem - } dataSent = 0; });