diff --git a/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpServerPipeliningTests.java b/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpServerPipeliningTests.java index 4f96f185a8abf..77f8ec29db514 100644 --- a/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpServerPipeliningTests.java +++ b/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpServerPipeliningTests.java @@ -240,37 +240,43 @@ class PossiblySlowRunnable implements Runnable { @Override public void run() { - final String uri; - if (pipelinedRequest != null && pipelinedRequest.last() instanceof FullHttpRequest) { - uri = ((FullHttpRequest) pipelinedRequest.last()).uri(); - } else { - uri = fullHttpRequest.uri(); - } + try { + final String uri; + if (pipelinedRequest != null && pipelinedRequest.last() instanceof FullHttpRequest) { + uri = ((FullHttpRequest) pipelinedRequest.last()).uri(); + } else { + uri = fullHttpRequest.uri(); + } - final ByteBuf buffer = Unpooled.copiedBuffer(uri, StandardCharsets.UTF_8); + final ByteBuf buffer = Unpooled.copiedBuffer(uri, StandardCharsets.UTF_8); - final DefaultFullHttpResponse httpResponse = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, buffer); - httpResponse.headers().add(HttpHeaderNames.CONTENT_LENGTH, buffer.readableBytes()); + final FullHttpResponse httpResponse = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, buffer); + httpResponse.headers().add(HttpHeaderNames.CONTENT_LENGTH, buffer.readableBytes()); - final boolean slow = uri.matches("/slow/\\d+"); - if (slow) { - try { - Thread.sleep(scaledRandomIntBetween(500, 1000)); - } catch (InterruptedException e) { - throw new RuntimeException(e); + final boolean slow = uri.matches("/slow/\\d+"); + if (slow) { + try { + Thread.sleep(scaledRandomIntBetween(500, 1000)); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } else { + assert uri.matches("/\\d+"); } - } else { - assert uri.matches("/\\d+"); - } - final ChannelPromise promise = ctx.newPromise(); - final Object msg; - if (pipelinedRequest != null) { - msg = pipelinedRequest.createHttpResponse(httpResponse, promise); - } else { - msg = httpResponse; + final ChannelPromise promise = ctx.newPromise(); + final Object msg; + if (pipelinedRequest != null) { + msg = pipelinedRequest.createHttpResponse(httpResponse, promise); + } else { + msg = httpResponse; + } + ctx.writeAndFlush(msg, promise); + } finally { + if (pipelinedRequest != null) { + pipelinedRequest.release(); + } } - ctx.writeAndFlush(msg, promise); } }