commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Wilson (JIRA)" <j...@apache.org>
Subject [jira] Created: (LANG-459) Issue in HashCodeBuilder which only shows up under high load multi-threaded usage.
Date Mon, 15 Sep 2008 16:09:46 GMT
Issue in HashCodeBuilder which only shows up under high load multi-threaded usage.
----------------------------------------------------------------------------------

                 Key: LANG-459
                 URL: https://issues.apache.org/jira/browse/LANG-459
             Project: Commons Lang
          Issue Type: Bug
    Affects Versions: 2.4
         Environment: All
            Reporter: Andrew Wilson
             Fix For: 3.0, Nightly Builds


We found we were having problems with HashCodeBuilder under multi-threaded high load.

I narrowed this down to the following attached test case.

When I dug into the code, I found the problem was solved by commenting out the isRegistered
method (though this would break the infinite loop problem).
( I did a lot of other digging that I wont bore you with).

So instead I replaced the HashSet with an ArrayList and just added the object, rather than
the toIdentityHashCodeInteger(object)

This results in about 5 lines of change.  

My suspicion is that System.identityHashCode does not return unique values (it is after all
a hashcode method).  The code assumes it will return a unique value and this causes the problem
at high loads.

The downside is a List vs. a Set, but I believe this is necessary.

I'd like to submit this fix and have it verified (and perhaps improved).  I am convinced it
is a necessary fix which we have seen show up under high loads.

Kindest regards, 
Andrew.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message