RFR: 8332490: JMH org.openjdk.bench.java.util.zip.InflaterInputStreams.inflaterInputStreamRead OOM

Alan Bateman alanb at openjdk.org
Wed May 22 07:23:02 UTC 2024


On Wed, 22 May 2024 05:16:42 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:

> Can I please get a review of this test-only change for addressing https://bugs.openjdk.org/browse/JDK-8332490?
> 
> The jmh test opens a `InflaterInputStream`, reads the stream contents, but then doesn't close the stream. This can lead to resource leak which can then cause OOM as noted in that JBS issue.
> 
> The commit in this PR closes the `InflaterInputStream` when the reads complete.
> 
> 
> make test TEST=micro:org.openjdk.bench.java.util.zip.InflaterInputStreams
> 
> and
> 
> 
> ./build/macosx-aarch64/images/jdk/bin/java -jar ./build/macosx-aarch64/images/test/micro/benchmarks.jar org.openjdk.bench.java.util.zip.InflaterInputStreams.inflaterInputStreamRead -t max -f 1 -wi 2 -foe true
> 
> pass after this change.

test/micro/org/openjdk/bench/java/util/zip/InflaterInputStreams.java line 113:

> 111:         try (InflaterInputStream iis = new InflaterInputStream(deflated)) {
> 112:             while (iis.read(inflated, 0, inflated.length) != -1);
> 113:         }

Presumably this only works because closing the underlying stream (a BAOS in this case) is a no-op.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/19340#discussion_r1609427551


More information about the core-libs-dev mailing list