mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-08 12:14:47 +00:00
HHH-8878 Avoid hot allocation in PooledLoOptimizer
Conflicts: hibernate-core/src/main/java/org/hibernate/id/enhanced/OptimizerFactory.java
This commit is contained in:
parent
a34d740eba
commit
2798e9d8e3
@ -51,6 +51,8 @@ private static class GenerationState {
|
|||||||
private IntegralDataTypeHolder lastSourceValue;
|
private IntegralDataTypeHolder lastSourceValue;
|
||||||
// the current generator value
|
// the current generator value
|
||||||
private IntegralDataTypeHolder value;
|
private IntegralDataTypeHolder value;
|
||||||
|
// the value at which we'll hit the db again
|
||||||
|
private IntegralDataTypeHolder upperLimitValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -72,8 +74,9 @@ public synchronized Serializable generate(AccessCallback callback) {
|
|||||||
final GenerationState generationState = locateGenerationState( callback.getTenantIdentifier() );
|
final GenerationState generationState = locateGenerationState( callback.getTenantIdentifier() );
|
||||||
|
|
||||||
if ( generationState.lastSourceValue == null
|
if ( generationState.lastSourceValue == null
|
||||||
|| ! generationState.value.lt( generationState.lastSourceValue.copy().add( incrementSize ) ) ) {
|
|| ! generationState.value.lt( generationState.upperLimitValue ) ) {
|
||||||
generationState.lastSourceValue = callback.getNextValue();
|
generationState.lastSourceValue = callback.getNextValue();
|
||||||
|
generationState.upperLimitValue = generationState.lastSourceValue.copy().add( incrementSize );
|
||||||
generationState.value = generationState.lastSourceValue.copy();
|
generationState.value = generationState.lastSourceValue.copy();
|
||||||
// handle cases where initial-value is less that one (hsqldb for instance).
|
// handle cases where initial-value is less that one (hsqldb for instance).
|
||||||
while ( generationState.value.lt( 1 ) ) {
|
while ( generationState.value.lt( 1 ) ) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user