Skip to content

Commit 82490eb

Browse files
Free up allocated buffers in Netty4HttpServerTransportTests (#99005) (#99037)
Closes #98869
1 parent 9d448a0 commit 82490eb

File tree

1 file changed

+50
-42
lines changed

1 file changed

+50
-42
lines changed

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

Lines changed: 50 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -632,60 +632,68 @@ public void testFullRequestValidationSuccess() {
632632
assertThat(netty4HttpHeaderValidator.getState(), equalTo(WAITING_TO_START));
633633

634634
ByteBuf buf = channel.alloc().buffer();
635-
ByteBufUtil.copy(AsciiString.of("test full http request"), buf);
636-
final DefaultFullHttpRequest request = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/uri", buf);
637-
channel.writeInbound(request);
635+
try {
636+
ByteBufUtil.copy(AsciiString.of("test full http request"), buf);
637+
final DefaultFullHttpRequest request = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/uri", buf);
638+
channel.writeInbound(request);
638639

639-
// request got through to validation
640-
assertThat(header.get(), sameInstance(request));
641-
// channel is paused
642-
assertThat(channel.readInbound(), nullValue());
643-
assertFalse(channel.config().isAutoRead());
640+
// request got through to validation
641+
assertThat(header.get(), sameInstance(request));
642+
// channel is paused
643+
assertThat(channel.readInbound(), nullValue());
644+
assertFalse(channel.config().isAutoRead());
644645

645-
// validation succeeds
646-
listener.get().onResponse(null);
647-
channel.runPendingTasks();
646+
// validation succeeds
647+
listener.get().onResponse(null);
648+
channel.runPendingTasks();
648649

649-
// channel is resumed and waiting for next request
650-
assertTrue(channel.config().isAutoRead());
651-
assertThat(netty4HttpHeaderValidator.getState(), equalTo(WAITING_TO_START));
650+
// channel is resumed and waiting for next request
651+
assertTrue(channel.config().isAutoRead());
652+
assertThat(netty4HttpHeaderValidator.getState(), equalTo(WAITING_TO_START));
652653

653-
DefaultFullHttpRequest throughRequest = channel.readInbound();
654-
// request goes through unaltered
655-
assertThat(throughRequest, sameInstance(request));
656-
assertFalse(throughRequest.decoderResult().isFailure());
657-
// the content is unaltered
658-
assertThat(new String(ByteBufUtil.getBytes(throughRequest.content()), StandardCharsets.UTF_8), is("test full http request"));
659-
assertThat(buf.refCnt(), is(1));
660-
assertThat(throughRequest.decoderResult().cause(), nullValue());
654+
DefaultFullHttpRequest throughRequest = channel.readInbound();
655+
// request goes through unaltered
656+
assertThat(throughRequest, sameInstance(request));
657+
assertFalse(throughRequest.decoderResult().isFailure());
658+
// the content is unaltered
659+
assertThat(new String(ByteBufUtil.getBytes(throughRequest.content()), StandardCharsets.UTF_8), is("test full http request"));
660+
assertThat(buf.refCnt(), is(1));
661+
assertThat(throughRequest.decoderResult().cause(), nullValue());
662+
} finally {
663+
buf.release();
664+
}
661665
}
662666

663667
public void testFullRequestWithDecoderException() {
664668
assertTrue(channel.config().isAutoRead());
665669
assertThat(netty4HttpHeaderValidator.getState(), equalTo(WAITING_TO_START));
666670

667671
ByteBuf buf = channel.alloc().buffer();
668-
ByteBufUtil.copy(AsciiString.of("test full http request"), buf);
669-
// a request with a decoder error prior to validation
670-
final DefaultFullHttpRequest request = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/uri", buf);
671-
Exception cause = new ElasticsearchException("Boom");
672-
request.setDecoderResult(DecoderResult.failure(cause));
673-
channel.writeInbound(request);
672+
try {
673+
ByteBufUtil.copy(AsciiString.of("test full http request"), buf);
674+
// a request with a decoder error prior to validation
675+
final DefaultFullHttpRequest request = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/uri", buf);
676+
Exception cause = new ElasticsearchException("Boom");
677+
request.setDecoderResult(DecoderResult.failure(cause));
678+
channel.writeInbound(request);
674679

675-
// request goes through without invoking the validator
676-
assertThat(header.get(), nullValue());
677-
assertThat(listener.get(), nullValue());
678-
// channel is NOT paused
679-
assertTrue(channel.config().isAutoRead());
680-
assertThat(netty4HttpHeaderValidator.getState(), equalTo(WAITING_TO_START));
680+
// request goes through without invoking the validator
681+
assertThat(header.get(), nullValue());
682+
assertThat(listener.get(), nullValue());
683+
// channel is NOT paused
684+
assertTrue(channel.config().isAutoRead());
685+
assertThat(netty4HttpHeaderValidator.getState(), equalTo(WAITING_TO_START));
681686

682-
DefaultFullHttpRequest throughRequest = channel.readInbound();
683-
// request goes through unaltered
684-
assertThat(throughRequest, sameInstance(request));
685-
assertTrue(throughRequest.decoderResult().isFailure());
686-
assertThat(throughRequest.decoderResult().cause(), equalTo(cause));
687-
// the content is unaltered
688-
assertThat(new String(ByteBufUtil.getBytes(throughRequest.content()), StandardCharsets.UTF_8), is("test full http request"));
689-
assertThat(buf.refCnt(), is(1));
687+
DefaultFullHttpRequest throughRequest = channel.readInbound();
688+
// request goes through unaltered
689+
assertThat(throughRequest, sameInstance(request));
690+
assertTrue(throughRequest.decoderResult().isFailure());
691+
assertThat(throughRequest.decoderResult().cause(), equalTo(cause));
692+
// the content is unaltered
693+
assertThat(new String(ByteBufUtil.getBytes(throughRequest.content()), StandardCharsets.UTF_8), is("test full http request"));
694+
assertThat(buf.refCnt(), is(1));
695+
} finally {
696+
buf.release();
697+
}
690698
}
691699
}

0 commit comments

Comments
 (0)