RFR: 6445283: ProgressMonitorInputStream not large file aware (>2GB)
Alexander Zvegintsev
azvegint at openjdk.org
Thu Jul 21 19:46:03 UTC 2022
On Thu, 21 Jul 2022 10:47:38 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:
> Fix is to check if adding bytes-to-read to number-bytes-already-read will exceed MAX_INT, then set Progress to max so that ProgressMonitor can close the tracker
https://github.com/openjdk/jdk/blob/master/src/java.desktop/share/classes/javax/swing/ProgressMonitor.java#L265
After applying the fix, I see that the tracker window closes when it reaches the limit, while the progress may be still ongoing for a prolonged period time. It doesn't look right to me.
I think we can either change this close condition, either fake progress to `MAX_INT-1` until we actually reach the end.
Anyway it seems like a workaround, real solution would be to migrate to long(probably by adding new constructors and methods to keep compatibility).
> No regression test is added as it involves using filesize of >2GB.
It doesn't have to be a FileInputStream, since ProgressMonitorInputStream accepts InputStream. So we can make a dummy one with no real data backing it.
src/java.desktop/share/classes/javax/swing/ProgressMonitorInputStream.java line 160:
> 158: monitor.setProgress(monitor.getMaximum());
> 159: }
> 160: }
Looks like Lines 154-167 duplicates code from lines 129-142.
Can we consider to extract it so another method?
-------------
PR: https://git.openjdk.org/jdk/pull/9588
More information about the client-libs-dev
mailing list