RFR: 8351045: ClassValue::remove cannot ensure computation observes up-to-date state
Roger Riggs
rriggs at openjdk.org
Wed Mar 5 15:04:57 UTC 2025
On Mon, 3 Mar 2025 15:24:05 GMT, Chen Liang <liach at openjdk.org> wrote:
> After a call to `ClassValue.remove`, a `ClassValue` can still install a value that is computed with information that is not up-to-date with the remove call. This is demonstrated in the test case, where an innocuous `ClassValue.get` call on an uncomputed CV may happen to compute during which a remove happened, and proceed to install an outdated value onto a CV.
>
> The fix is simple - to force computation to retry when a remove has happened, so the retry can observe the up-to-date states from the remove. (finishEntry and removeEntry are both synchronized on the object monitor of the ClassValueMap instance)
LGTM
-------------
Marked as reviewed by rriggs (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/23866#pullrequestreview-2661404171
More information about the core-libs-dev
mailing list