Skip to content

5.19.0

Compare
Choose a tag to compare
@svc-autorelease svc-autorelease released this 18 Aug 13:24
· 387 commits to develop since this release
16be1b5
Type Description Link
Improvement Prefer InputStream.transferTo(OutputStream)

Add error-prone check to automate migration to prefer InputStream.transferTo(OutputStream) instead of utility methods such as Guava's com.google.common.io.ByteStreams.copy(InputStream, OutputStream).

Allow for optimization when underlying input stream (such as ByteArrayInputStream, ChannelInputStream) overrides transferTo(OutputStream) to avoid extra array allocations and copy larger chunks at a time (e.g. allowing 16KiB chunks via ApacheHttpClientBlockingChannel.ModulatingOutputStream from #1790).

When running on JDK 21+, this also enables 16KiB byte chunk copies via InputStream.transferTo(OutputStream) per
JDK-8299336, where as on JDK < 21 and when using Guava ByteStreams.copy 8KiB byte chunk copies are used.

References:
* palantir/hadoop-crypto#586
* https://bugs.openjdk.org/browse/JDK-8299336
* https://bugs.openjdk.org/browse/JDK-8067661
* https://bugs.openjdk.org/browse/JDK-8265891
* https://bugs.openjdk.org/browse/JDK-8273038
* https://bugs.openjdk.org/browse/JDK-8279283
* https://bugs.openjdk.org/browse/JDK-8296431

Closes #2615
#2615, #2616