[
http://jira.jboss.com/jira/browse/JGRP-591?page=comments#action_12376866 ]
Bela Ban commented on JGRP-591:
-------------------------------
I experimented with making IPAddress.hashCode() and compareTo() completely unique (using
InetAddress.getHostAddress().compareTo() if addresses' hash codes *and* ports are
identical).
Unfortunately, I got a 30% drop in performance, which I'm not currently willing to pay
for the extremely small chance of a collision with *both* address hash code and port.
Meanwhile, I added compareToUnique() to IpAddress (that's the slow version, so
don't use excessively).
I'll close this case and look at it again,when we (possibly) do logical addresses
IpAddress.hashCode() not unique per ip/port
-------------------------------------------
Key: JGRP-591
URL:
http://jira.jboss.com/jira/browse/JGRP-591
Project: JGroups
Issue Type: Bug
Affects Versions: 2.4.1 SP4
Environment: windows xp sp2, jdk 1.6 update 2
Reporter: robert chou
Assigned To: Bela Ban
Fix For: 2.4.1 SP5, 2.5.1, 2.6
Current implementation produces hashcode where ip/port combos "1.2.3.4:2" and
"1.2.3.5:1" result in the same hash code.
Existing code:
public final int hashCode() {
return ip_addr != null ? ip_addr.hashCode() + port : port;
}
Manual test code:
InetAddress ip1 = InetAddress.getByAddress( new byte[] {1,2,3,4} );
int port1 = 2;
int hash1 = ip1.hashCode() + port1;
System.out.println( "hash1 = " + hash1 );
InetAddress ip2 = InetAddress.getByAddress( new byte[] {1,2,3,5} );
int port2 = 1;
int hash2 = ip2.hashCode() + port2;
System.out.println( "hash2 = " + hash2 );
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira