From 08393f428f4c8119be69c04bc719916e636e70af Mon Sep 17 00:00:00 2001 From: Armin Date: Mon, 23 Jul 2018 21:09:10 +0200 Subject: [PATCH] Networking: Fix test leaking buffer * Test `handler` must release buffer the same way the replaced `org.elasticsearch.http.netty4.Netty4HttpRequestHandler#channelRead0` releases it * Closes #32289 --- .../Netty4HttpServerPipeliningTests.java | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) 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 3101f660d056e..50be7f7ce4509 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 @@ -181,27 +181,32 @@ class PossiblySlowRunnable implements Runnable { @Override public void run() { - final String uri = fullHttpRequest.uri(); - - final ByteBuf buffer = Unpooled.copiedBuffer(uri, StandardCharsets.UTF_8); - - Netty4HttpRequest httpRequest = new Netty4HttpRequest(fullHttpRequest, pipelinedRequest.getSequence()); - Netty4HttpResponse response = httpRequest.createResponse(RestStatus.OK, new BytesArray(uri.getBytes(StandardCharsets.UTF_8))); - response.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); + try { + final String uri = fullHttpRequest.uri(); + + final ByteBuf buffer = Unpooled.copiedBuffer(uri, StandardCharsets.UTF_8); + + Netty4HttpRequest httpRequest = new Netty4HttpRequest(fullHttpRequest, pipelinedRequest.getSequence()); + Netty4HttpResponse response = + httpRequest.createResponse(RestStatus.OK, new BytesArray(uri.getBytes(StandardCharsets.UTF_8))); + response.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); + } + } else { + assert uri.matches("/\\d+"); } - } else { - assert uri.matches("/\\d+"); - } - final ChannelPromise promise = ctx.newPromise(); - ctx.writeAndFlush(response, promise); + final ChannelPromise promise = ctx.newPromise(); + ctx.writeAndFlush(response, promise); + } finally { + fullHttpRequest.release(); + } } }