Skip to content

Commit 39c5fd7

Browse files
committed
cleanups to Optimizers and introduce OptimizerLogger
1 parent 3592809 commit 39c5fd7

18 files changed

+321
-287
lines changed

hibernate-core/src/main/java/org/hibernate/cache/internal/RegionFactoryInitiator.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@
1111
import org.hibernate.boot.registry.selector.spi.StrategySelector;
1212
import org.hibernate.cache.CacheException;
1313
import org.hibernate.cache.spi.RegionFactory;
14-
import org.hibernate.internal.CoreLogging;
15-
import org.hibernate.internal.CoreMessageLogger;
1614
import org.hibernate.service.spi.ServiceRegistryImplementor;
1715

1816
import static java.lang.Boolean.FALSE;
1917
import static java.lang.Boolean.TRUE;
18+
import static org.hibernate.cache.spi.SecondLevelCacheLogger.L2CACHE_LOGGER;
2019
import static org.hibernate.cfg.CacheSettings.CACHE_REGION_FACTORY;
2120
import static org.hibernate.cfg.CacheSettings.USE_QUERY_CACHE;
2221
import static org.hibernate.cfg.CacheSettings.USE_SECOND_LEVEL_CACHE;
@@ -30,8 +29,6 @@
3029
*/
3130
public class RegionFactoryInitiator implements StandardServiceInitiator<RegionFactory> {
3231

33-
private static final CoreMessageLogger LOG = CoreLogging.messageLogger( RegionFactoryInitiator.class );
34-
3532
/**
3633
* Singleton access
3734
*/
@@ -46,10 +43,10 @@ public Class<RegionFactory> getServiceInitiated() {
4643
public RegionFactory initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
4744
final var regionFactory = resolveRegionFactory( configurationValues, registry );
4845
if ( regionFactory instanceof NoCachingRegionFactory ) {
49-
LOG.noRegionFactory();
46+
L2CACHE_LOGGER.noRegionFactory();
5047
}
5148
else {
52-
LOG.regionFactory( regionFactory.getClass().getTypeName() );
49+
L2CACHE_LOGGER.regionFactory( regionFactory.getClass().getTypeName() );
5350
}
5451
return regionFactory;
5552
}
@@ -74,7 +71,7 @@ protected RegionFactory resolveRegionFactory(Map<String,Object> configurationVal
7471
// 1) both are explicitly FALSE
7572
// 2) USE_SECOND_LEVEL_CACHE is FALSE and USE_QUERY_CACHE is null
7673
if ( useSecondLevelCache == FALSE ) {
77-
if ( useQueryCache == null || useQueryCache == FALSE ) {
74+
if ( useQueryCache == null || !useQueryCache ) {
7875
return NoCachingRegionFactory.INSTANCE;
7976
}
8077
}
@@ -102,7 +99,6 @@ protected RegionFactory resolveRegionFactory(Map<String,Object> configurationVal
10299
return regionFactory;
103100
}
104101

105-
106102
final var fallback = getFallback( configurationValues, registry );
107103
if ( fallback != null ) {
108104
return fallback;
@@ -115,10 +111,7 @@ protected RegionFactory resolveRegionFactory(Map<String,Object> configurationVal
115111
return registeredFactory;
116112
}
117113
else {
118-
LOG.debugf(
119-
"Cannot default RegionFactory based on registered strategies as `%s` RegionFactory strategies were registered",
120-
implementors
121-
);
114+
L2CACHE_LOGGER.cannotDefaultRegionFactory( implementors.size() );
122115
}
123116

124117
return NoCachingRegionFactory.INSTANCE;

hibernate-core/src/main/java/org/hibernate/cache/spi/SecondLevelCacheLogger.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import java.lang.invoke.MethodHandles;
1818

19+
import static org.jboss.logging.Logger.Level.DEBUG;
1920
import static org.jboss.logging.Logger.Level.INFO;
2021
import static org.jboss.logging.Logger.Level.TRACE;
2122
import static org.jboss.logging.Logger.Level.WARN;
@@ -221,4 +222,25 @@ public interface SecondLevelCacheLogger extends BasicLogger {
221222
id = NAMESPACE + 24
222223
)
223224
void lastUpdateTimestampForSpace(String space, Long lastUpdate, Long timestamp);
225+
226+
@LogMessage(level = INFO)
227+
@Message(
228+
value = "Second-level cache region factory [%s]",
229+
id = NAMESPACE + 28
230+
)
231+
void regionFactory(String name);
232+
233+
@LogMessage(level = DEBUG)
234+
@Message(
235+
value = "Second-level cache disabled",
236+
id = NAMESPACE + 29
237+
)
238+
void noRegionFactory();
239+
240+
@LogMessage(level = INFO)
241+
@Message(
242+
value = "Cannot default RegionFactory based on registered strategies as %s RegionFactory strategies were registered",
243+
id = NAMESPACE + 30
244+
)
245+
void cannotDefaultRegionFactory(int size);
224246
}

hibernate-core/src/main/java/org/hibernate/id/GUIDGenerator.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import org.hibernate.HibernateException;
1010
import org.hibernate.engine.spi.SharedSessionContractImplementor;
1111

12-
import static org.hibernate.id.UUIDLogger.UUID_MESSAGE_LOGGER;
1312
import static org.hibernate.internal.log.DeprecationLogger.DEPRECATION_LOGGER;
1413

1514
/**

hibernate-core/src/main/java/org/hibernate/id/enhanced/HiLoOptimizer.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
import org.hibernate.sql.ast.tree.expression.BinaryArithmeticExpression;
1313
import org.hibernate.sql.ast.tree.expression.Expression;
1414
import org.hibernate.sql.ast.tree.expression.QueryLiteral;
15-
import org.jboss.logging.Logger;
15+
16+
import static org.hibernate.id.enhanced.OptimizerLogger.OPTIMIZER_MESSAGE_LOGGER;
1617

1718
import java.io.Serializable;
1819
import java.util.Map;
@@ -59,7 +60,6 @@
5960
* @author Steve Ebersole
6061
*/
6162
public class HiLoOptimizer extends AbstractOptimizer {
62-
private static final Logger LOG = Logger.getLogger( HiLoOptimizer.class );
6363

6464
private static class GenerationState {
6565
private IntegralDataTypeHolder lastSourceValue;
@@ -79,10 +79,7 @@ public HiLoOptimizer(Class<?> returnClass, int incrementSize) {
7979
if ( incrementSize < 1 ) {
8080
throw new HibernateException( "increment size cannot be less than 1" );
8181
}
82-
if ( LOG.isTraceEnabled() ) {
83-
LOG.tracev( "Creating hilo optimizer with [incrementSize={0}; returnClass={1}]",
84-
incrementSize, returnClass.getName() );
85-
}
82+
OPTIMIZER_MESSAGE_LOGGER.creatingHiLoOptimizer( incrementSize, returnClass.getName() );
8683
}
8784

8885
@Override

hibernate-core/src/main/java/org/hibernate/id/enhanced/LegacyHiLoAlgorithmOptimizer.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
import org.hibernate.sql.ast.tree.expression.BinaryArithmeticExpression;
1313
import org.hibernate.sql.ast.tree.expression.Expression;
1414
import org.hibernate.sql.ast.tree.expression.QueryLiteral;
15-
import org.jboss.logging.Logger;
15+
16+
import static org.hibernate.id.enhanced.OptimizerLogger.OPTIMIZER_MESSAGE_LOGGER;
1617

1718
import java.io.Serializable;
1819
import java.util.Map;
@@ -27,7 +28,6 @@
2728
* @author Steve Ebersole
2829
*/
2930
public class LegacyHiLoAlgorithmOptimizer extends AbstractOptimizer {
30-
private static final Logger LOG = Logger.getLogger( LegacyHiLoAlgorithmOptimizer.class );
3131

3232
private final long initialMaxLo;
3333

@@ -51,10 +51,7 @@ public LegacyHiLoAlgorithmOptimizer(Class<?> returnClass, int incrementSize) {
5151
if ( incrementSize < 1 ) {
5252
throw new HibernateException( "increment size cannot be less than 1" );
5353
}
54-
if ( LOG.isTraceEnabled() ) {
55-
LOG.tracev( "Creating hilo optimizer (legacy) with [incrementSize={0}; returnClass={1}]",
56-
incrementSize, returnClass.getName() );
57-
}
54+
OPTIMIZER_MESSAGE_LOGGER.creatingLegacyHiLoOptimizer( incrementSize, returnClass.getName() );
5855
initialMaxLo = incrementSize;
5956
}
6057

hibernate-core/src/main/java/org/hibernate/id/enhanced/OptimizerFactory.java

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@
44
*/
55
package org.hibernate.id.enhanced;
66

7-
import java.lang.reflect.Constructor;
87
import java.util.Properties;
98

10-
import org.hibernate.cfg.AvailableSettings;
11-
import org.hibernate.internal.CoreLogging;
12-
import org.hibernate.internal.CoreMessageLogger;
9+
import static org.hibernate.cfg.MappingSettings.PREFERRED_POOLED_OPTIMIZER;
10+
import static org.hibernate.id.enhanced.OptimizerLogger.OPTIMIZER_MESSAGE_LOGGER;
1311

1412

1513
import static org.hibernate.internal.util.StringHelper.isNotEmpty;
@@ -21,29 +19,31 @@
2119
*/
2220
public class OptimizerFactory {
2321

24-
private static final CoreMessageLogger LOG = CoreLogging.messageLogger( OptimizerFactory.class );
25-
2622
private static final Class<?>[] CTOR_SIG = new Class[] { Class.class, int.class };
2723

2824
private static Optimizer buildOptimizer(OptimizerDescriptor descriptor, Class<?> returnClass, int incrementSize) {
25+
final var optimizer = createOptimizer( descriptor, returnClass, incrementSize );
26+
return optimizer != null ? optimizer : buildFallbackOptimizer( returnClass, incrementSize );
27+
}
28+
29+
private static Optimizer createOptimizer(OptimizerDescriptor descriptor, Class<?> returnClass, int incrementSize) {
2930
final Class<? extends Optimizer> optimizerClass;
3031
try {
3132
optimizerClass = descriptor.getOptimizerClass();
3233
}
3334
catch ( Throwable ignore ) {
34-
LOG.unableToLocateCustomOptimizerClass( descriptor.getExternalName() );
35+
OPTIMIZER_MESSAGE_LOGGER.unableToLocateCustomOptimizerClass( descriptor.getExternalName() );
3536
return buildFallbackOptimizer( returnClass, incrementSize );
3637
}
3738

3839
try {
39-
final Constructor<? extends Optimizer> ctor = optimizerClass.getConstructor( CTOR_SIG );
40+
final var ctor = optimizerClass.getConstructor( CTOR_SIG );
4041
return ctor.newInstance( returnClass, incrementSize );
4142
}
4243
catch ( Throwable ignore ) {
43-
LOG.unableToInstantiateOptimizer( descriptor.getExternalName() );
44+
OPTIMIZER_MESSAGE_LOGGER.unableToInstantiateOptimizer( descriptor.getExternalName() );
4445
}
45-
46-
return buildFallbackOptimizer( returnClass, incrementSize );
46+
return null;
4747
}
4848

4949
private static Optimizer buildFallbackOptimizer(Class<?> returnClass, int incrementSize) {
@@ -61,7 +61,7 @@ private static Optimizer buildFallbackOptimizer(Class<?> returnClass, int increm
6161
* @return The built optimizer
6262
*/
6363
public static Optimizer buildOptimizer(OptimizerDescriptor type, Class<?> returnClass, int incrementSize, long explicitInitialValue) {
64-
final Optimizer optimizer = buildOptimizer( type, returnClass, incrementSize );
64+
final var optimizer = buildOptimizer( type, returnClass, incrementSize );
6565
if ( optimizer instanceof InitialValueAwareOptimizer initialValueAwareOptimizer ) {
6666
initialValueAwareOptimizer.injectInitialValue( explicitInitialValue );
6767
}
@@ -76,16 +76,13 @@ public static String determineImplicitOptimizerName(int incrementSize, Propertie
7676
return StandardOptimizerDescriptor.NONE.getExternalName();
7777
}
7878
else {
79-
// see if the user defined a preferred pooled optimizer...
79+
// see if the user defined a preferred pooled optimizer
8080
final String preferredPooledOptimizerStrategy =
81-
configSettings.getProperty( AvailableSettings.PREFERRED_POOLED_OPTIMIZER );
82-
if ( isNotEmpty( preferredPooledOptimizerStrategy ) ) {
83-
return preferredPooledOptimizerStrategy;
84-
}
85-
else {
86-
// otherwise fallback to the fallback strategy
87-
return StandardOptimizerDescriptor.POOLED.getExternalName();
88-
}
81+
configSettings.getProperty( PREFERRED_POOLED_OPTIMIZER );
82+
return isNotEmpty( preferredPooledOptimizerStrategy )
83+
? preferredPooledOptimizerStrategy
84+
// otherwise fall back to the fallback strategy
85+
: StandardOptimizerDescriptor.POOLED.getExternalName();
8986
}
9087
}
9188

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.id.enhanced;
6+
7+
import org.hibernate.Internal;
8+
import org.hibernate.id.IntegralDataTypeHolder;
9+
import org.hibernate.internal.log.SubSystemLogging;
10+
11+
import org.jboss.logging.BasicLogger;
12+
import org.jboss.logging.Logger;
13+
import org.jboss.logging.annotations.LogMessage;
14+
import org.jboss.logging.annotations.Message;
15+
import org.jboss.logging.annotations.MessageLogger;
16+
import org.jboss.logging.annotations.ValidIdRange;
17+
18+
import java.lang.invoke.MethodHandles;
19+
20+
import static org.jboss.logging.Logger.Level.DEBUG;
21+
import static org.jboss.logging.Logger.Level.INFO;
22+
import static org.jboss.logging.Logger.Level.TRACE;
23+
import static org.jboss.logging.Logger.Level.WARN;
24+
25+
/**
26+
* Logging related to Optimizer operations in identifier generation
27+
*/
28+
@SubSystemLogging(
29+
name = OptimizerLogger.NAME,
30+
description = "Logging related to identifier generator optimizers"
31+
)
32+
@MessageLogger(projectCode = "HHH")
33+
@ValidIdRange(min = 90401, max = 90500)
34+
@Internal
35+
public interface OptimizerLogger extends BasicLogger {
36+
String NAME = SubSystemLogging.BASE + ".id.optimizer";
37+
38+
OptimizerLogger OPTIMIZER_MESSAGE_LOGGER = Logger.getMessageLogger(
39+
MethodHandles.lookup(),
40+
OptimizerLogger.class,
41+
NAME
42+
);
43+
44+
@LogMessage(level = TRACE)
45+
@Message(value = "Creating hilo optimizer with [incrementSize=%s, returnClass=%s]", id = 90401)
46+
void creatingHiLoOptimizer(int incrementSize, String returnClassName);
47+
48+
@LogMessage(level = TRACE)
49+
@Message(value = "Creating hilo optimizer (legacy) with [incrementSize=%s, returnClass=%s]", id = 90402)
50+
void creatingLegacyHiLoOptimizer(int incrementSize, String returnClassName);
51+
52+
@LogMessage(level = TRACE)
53+
@Message(value = "Creating pooled optimizer with [incrementSize=%s, returnClass=%s]", id = 90403)
54+
void creatingPooledOptimizer(int incrementSize, String returnClassName);
55+
56+
@LogMessage(level = DEBUG)
57+
@Message(value = "Creating pooled optimizer (lo) with [incrementSize=%s, returnClass=%s]", id = 90404)
58+
void creatingPooledLoOptimizer(int incrementSize, String returnClassName);
59+
60+
@LogMessage(level = INFO)
61+
@Message(value = "Pooled optimizer source reported [%s] as the initial value; use of 1 or greater highly recommended", id = 90405)
62+
void pooledOptimizerReportedInitialValue(IntegralDataTypeHolder value);
63+
64+
@LogMessage(level = WARN)
65+
@Message(value = "Unable to interpret specified optimizer [%s], falling back to noop optimizer", id = 90406)
66+
void unableToLocateCustomOptimizerClass(String type);
67+
68+
@LogMessage(level = WARN)
69+
@Message(value = "Unable to instantiate specified optimizer [%s], falling back to noop optimizer", id = 90407)
70+
void unableToInstantiateOptimizer(String type);
71+
}

0 commit comments

Comments
 (0)