Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-dev] Question about performance issue withSeqencingManager


The best solution is to use sequencing connection pool - that's possible in case you use nonjtaDataSource (which used always to be the case with GlassFish?). There's describing the issue, the fix and the workaround.


----- Original Message ----- From: "Mitesh Meswani" <Mitesh.Meswani@xxxxxxx>
To: <eclipselink-dev@xxxxxxxxxxx>
Sent: Thursday, March 26, 2009 9:09 PM
Subject: [eclipselink-dev] Question about performance issue withSeqencingManager


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.


eclipselink-dev mailing list

Back to the top