RFR: 8003417: WeakHashMap$HashIterator removes wrong entry

Jaikiran Pai jpai at openjdk.java.net
Sat Nov 20 10:17:28 UTC 2021


Can I please get a review for this change which proposes to fix the issue reported in https://bugs.openjdk.java.net/browse/JDK-8003417?

The issue notes that this is applicable for `WeakHashMap` which have `null` keys. However, the issue is even applicable for `WeakHashMap` instances which don't have `null` keys, as reproduced and shown by the newly added jtreg test case in this PR.

The root cause of the issue is that once the iterator is used to iterate till the end and the `remove()` is called, then the `WeakHashMap$HashIterator#remove()` implementation used to pass `null` as the key to remove from the map, instead of the key of the last returned entry. The commit in this PR fixes that part.

A new jtreg test has been added which reproduces the issue as well as verifies the fix.
`tier1` testing and this new test have passed after this change. However, I guess this will require a JCK run to be run too, perhaps? If so, I will need help from someone who has access to them to have this run against those please.

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

Commit messages:
 - 8003417: WeakHashMap$HashIterator removes wrong entry

Changes: https://git.openjdk.java.net/jdk/pull/6488/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=6488&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8003417
  Stats: 164 lines in 2 files changed: 162 ins; 0 del; 2 mod
  Patch: https://git.openjdk.java.net/jdk/pull/6488.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/6488/head:pull/6488

PR: https://git.openjdk.java.net/jdk/pull/6488


More information about the core-libs-dev mailing list