[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[eclipselink-dev] Question about performance issue with SeqencingManager

Hi,

We seem to have a performance issue with Table Sequences while running inside container ( => external transaction controller). If multiple threads try to do getNextValue() on a table sequence and our preallocation bucket is empty and external transaction controller is used, all of them can reach the code at line 468 of SequencingManager.Preallocation_Transaction_NoAccessor_State.getNextValue() which calls sequence.getGeneratedVector(...) . This would result in all of them issuing an update statement to the sequence table and being blocked out by database till preceding threads' transaction commits. The code of Preallocation_Transaction_NoAccessor_State.getNextValue() is explicitly written to not obtain locks around sequence.getGeneratedVector(...) if running with external transaction controller. There is fair amount of comment written but some how I am still not able to figure out why we are not obtaining locks for this case. Can some one familiar with history of the code comment on this.

Thanks,
Mitesh