On Mon, 4 Oct 2021 21:13:02 GMT, PROgrm_JARvis 
<github.com+7693005+jarviscr...@openjdk.org> wrote:

> This is trivial fix of 
> [JDK-8274686](https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8274686)
>  which replaces manually-computed `int`-based `long` hash-code.
> 
> Because `Long#hashCode(long)` uses other hashing function than the one 
> currently used here:
> 
> https://github.com/openjdk/jdk/blob/75d6688df9845ecb8f370b4cd2d5a36f13d3cdc0/src/java.base/share/classes/java/lang/Long.java#L1440-L1442
> 
> the value of `hashCode()` will produce different result, however this does 
> not seem to be a breaking change as `UUID#hashCode()` is not specified.
> 
> ---
> 
> Note: the comment to the bug states:
> 
>> Moved to JDK for further discussions of the proposed enhancement.
> 
> But as there seemed to be no corresponding discussion in core-libs-dev and 
> the change looks trivial, I considered that it is appropriate to open a PR 
> which (if needed) may be used for discussion (especially, considering the 
> fact that its comments get mirrored to the ML).

You do know that this might break things? If there are multiple versions of JDK 
present in some distributed system where participants do not agree on the hash 
code of an UUID value, it can behave erratically. For example using UUID as a 
key in a distributed cache like Infinispan is known to be troublesome if the 
hashCode of some key is not the same across the cluster. Usually there will not 
be a problem since all nodes in a cluster would use the same JDK version, but 
what about a rolling upgrade then? It would not be possible. I think at least 
this change needs to be documented in release notes.

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

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

Reply via email to