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
_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev