On Sat, 21 Feb 2026 16:15:56 GMT, Viktor Klang <[email protected]> wrote:
>> Eirik Bjørsnøs has updated the pull request incrementally with three
>> additional commits since the last revision:
>>
>> - Add code comment about returning the most recently used Inflater from the
>> cache
>> - Replace polling-style iteration with simple for loop
>> - Using add instead of addLast seems more natural for a List
>
> src/java.base/share/classes/java/util/zip/ZipFile.java line 754:
>
>> 752: // no need to double-check as only one thread gets a
>> 753: // chance to execute run() (Cleaner guarantee)...
>> 754: for (Inflater inf : inflaters) {
>
> There's an important difference between the previous version and the proposed
> change—poll removes elements whereas forEach just traverses the collection.
> Is this change intended and for what reason?
The change to use a simple loop was suggested by Jaikiran, see
[#discussion_r2832992318.](https://github.com/openjdk/jdk/pull/29430#discussion_r2832992318)
The rationale was that ordering does not matter when ending inflaters and that
the reference is set to null immediately after.
Setting a synchronized field to null is a bit of a code smell, so ideally I
think that `inflaterCache` should be made final, the list should be cleared
instead of nulled and we should introduce a separate `boolean` field to track
the closed state of the cache. But that's perhaps for another PR.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/29430#discussion_r2836348971