[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-3628?page=c...
]
Tara Simpson commented on HHH-3628:
-----------------------------------
My original comment was a little narky, I apologise....but Steve's blog does recommend
using the new generators. "The new generators are available and highly recommended
for use" is fairly Plain English.
Regarding the PooledOptimizer issue, see HHH-3608.
In meantime we've replaced all use of Hibernate's sequencers with our own working
implementation - so for us the criticality of the issue is somewhat mitigated, but for
many unsuspecting users it is not.
Hilo optimizer problem in case of multiple threads accessing the
sequence table
-------------------------------------------------------------------------------
Key: HHH-3628
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-3628
Project: Hibernate Core
Issue Type: Bug
Affects Versions: 3.2.6
Environment: Sybase
Reporter: Montagnon Cyril
If 2 (or more) threads access the table storing the ids, this optimizer won't work
and will try to insert entities with twice the same idea.
The problem is the way the HiLoOptimizer class generates the id :
public synchronized Serializable generate(AccessCallback callback) {
if ( lastSourceValue < 0 ) {
lastSourceValue = callback.getNextValue();
while ( lastSourceValue <= 0 ) {
lastSourceValue = callback.getNextValue();
}
hiValue = ( lastSourceValue * incrementSize ) + 1;
value = hiValue - incrementSize;
}
else if ( value >= hiValue ) {
lastSourceValue = callback.getNextValue();
hiValue = ( lastSourceValue * incrementSize ) + 1;
}
return make( value++ );
}
In the 'else if' part, the 'value' variable isn't reaffected, which
means the current thread will try to insert entities with an id that has already been used
by another thread. The value should be reset with hiValue - incrementSize.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira