diff --git a/reactor-netty-http/src/main/java/reactor/netty/http/client/AbstractHttpClientMetricsHandler.java b/reactor-netty-http/src/main/java/reactor/netty/http/client/AbstractHttpClientMetricsHandler.java index 7741251beb..b30db4832a 100644 --- a/reactor-netty-http/src/main/java/reactor/netty/http/client/AbstractHttpClientMetricsHandler.java +++ b/reactor-netty-http/src/main/java/reactor/netty/http/client/AbstractHttpClientMetricsHandler.java @@ -90,7 +90,15 @@ public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) if (msg instanceof LastHttpContent) { SocketAddress address = ctx.channel().remoteAddress(); - promise.addListener(future -> recordWrite(address)); + promise.addListener(future -> { + try { + recordWrite(address); + } + catch (RuntimeException e) { + log.warn("Exception caught while recording metrics.", e); + // Allow request-response exchange to continue, unaffected by metrics problem + } + }); } } catch (RuntimeException e) {