Skip to content

Commit 717df26

Browse files
Networking: Fix test leaking buffer (#32296)
* Test `handler` must release buffer the same way the replaced `org.elasticsearch.http.netty4.Netty4HttpRequestHandler#channelRead0` releases it * Closes #32289
1 parent 54ba3ea commit 717df26

File tree

1 file changed

+24
-19
lines changed

1 file changed

+24
-19
lines changed

modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpServerPipeliningTests.java

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -181,27 +181,32 @@ class PossiblySlowRunnable implements Runnable {
181181

182182
@Override
183183
public void run() {
184-
final String uri = fullHttpRequest.uri();
185-
186-
final ByteBuf buffer = Unpooled.copiedBuffer(uri, StandardCharsets.UTF_8);
187-
188-
Netty4HttpRequest httpRequest = new Netty4HttpRequest(fullHttpRequest, pipelinedRequest.getSequence());
189-
Netty4HttpResponse response = httpRequest.createResponse(RestStatus.OK, new BytesArray(uri.getBytes(StandardCharsets.UTF_8)));
190-
response.headers().add(HttpHeaderNames.CONTENT_LENGTH, buffer.readableBytes());
191-
192-
final boolean slow = uri.matches("/slow/\\d+");
193-
if (slow) {
194-
try {
195-
Thread.sleep(scaledRandomIntBetween(500, 1000));
196-
} catch (InterruptedException e) {
197-
throw new RuntimeException(e);
184+
try {
185+
final String uri = fullHttpRequest.uri();
186+
187+
final ByteBuf buffer = Unpooled.copiedBuffer(uri, StandardCharsets.UTF_8);
188+
189+
Netty4HttpRequest httpRequest = new Netty4HttpRequest(fullHttpRequest, pipelinedRequest.getSequence());
190+
Netty4HttpResponse response =
191+
httpRequest.createResponse(RestStatus.OK, new BytesArray(uri.getBytes(StandardCharsets.UTF_8)));
192+
response.headers().add(HttpHeaderNames.CONTENT_LENGTH, buffer.readableBytes());
193+
194+
final boolean slow = uri.matches("/slow/\\d+");
195+
if (slow) {
196+
try {
197+
Thread.sleep(scaledRandomIntBetween(500, 1000));
198+
} catch (InterruptedException e) {
199+
throw new RuntimeException(e);
200+
}
201+
} else {
202+
assert uri.matches("/\\d+");
198203
}
199-
} else {
200-
assert uri.matches("/\\d+");
201-
}
202204

203-
final ChannelPromise promise = ctx.newPromise();
204-
ctx.writeAndFlush(response, promise);
205+
final ChannelPromise promise = ctx.newPromise();
206+
ctx.writeAndFlush(response, promise);
207+
} finally {
208+
fullHttpRequest.release();
209+
}
205210
}
206211

207212
}

0 commit comments

Comments
 (0)