On Fri, 30 Jan 2026 01:10:41 GMT, Artur Barashev <[email protected]> wrote:
> So even if there is a race condition then we'll just insert the same value > twice. Would it be possible to insert 2 different values for the same key in > this class? It doesn't seem so. Thanks for the detailed comment. You’re right that this won’t corrupt the cache and that the objects are semantically equivalent. The issue I see isn’t correctness of the cache, but interning/canonicalization semantics. I think it could be possible for two values to be inserted for the same logical key: if two threads concurrently miss on `get()`, they can both construct separate `X509CertImpl/X509CRLImpl` instances and then both call `put()`. The cache remains valid, but different callers may observe different object instances for the same certificate/CRL. That breaks the intent of `intern()` as documented (returning a canonical cached instance) and can introduce avoidable object churn. The addIfNotPresent() helper keeps the “check-then-insert and return existing” behavior atomic at this layer, without relying on assumptions about the cache implementation. I would be happy to revisit if we agree interning semantics are not required here. Let me know. ------------- PR Comment: https://git.openjdk.org/jdk/pull/29181#issuecomment-3821970071
