Skip to content

Commit 63c44bc

Browse files
committed
introduce JtaLogging
1 parent 05684de commit 63c44bc

11 files changed

+249
-93
lines changed

hibernate-core/src/main/java/org/hibernate/internal/CoreMessageLogger.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -557,14 +557,6 @@ void cannotResolveNonNullableTransientDependencies(
557557
)
558558
void nonCompliantMapConversion(String collectionRole);
559559

560-
@LogMessage(level = WARN)
561-
@Message(
562-
id = 451,
563-
value = "Transaction afterCompletion called by a background thread; " +
564-
"delaying afterCompletion processing until the original thread can handle it. [status=%s]"
565-
)
566-
void rollbackFromBackgroundThread(int status);
567-
568560
// 458-466 reserved for use by main branch (ORM 5.0.0)
569561

570562
@LogMessage(level = DEBUG)

hibernate-core/src/main/java/org/hibernate/resource/beans/internal/FallbackBeanInstanceProducer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ private FallbackBeanInstanceProducer() {
3434

3535
@Override
3636
public <B> B produceBeanInstance(Class<B> beanType) {
37-
log.tracef( "Creating ManagedBean(%s) using direct instantiation", beanType.getName() );
37+
log.tracef( "Creating ManagedBean [%s] using direct instantiation", beanType.getName() );
3838
try {
3939
final Constructor<B> constructor = beanType.getDeclaredConstructor();
4040
constructor.setAccessible( true );

hibernate-core/src/main/java/org/hibernate/resource/jdbc/internal/AbstractLogicalConnectionImplementor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ protected void afterCompletion() {
108108
protected void resetConnection(boolean initiallyAutoCommit) {
109109
try {
110110
if ( initiallyAutoCommit ) {
111-
log.trace( "re-enabling auto-commit on JDBC Connection after completion of JDBC-based transaction" );
111+
log.trace( "Re-enabling auto-commit on JDBC Connection after completion of JDBC-based transaction" );
112112
getConnectionForTransactionManagement().setAutoCommit( true );
113113
status = TransactionStatus.NOT_ACTIVE;
114114
}
@@ -121,7 +121,7 @@ protected void resetConnection(boolean initiallyAutoCommit) {
121121
@Override
122122
public void rollback() {
123123
try {
124-
log.trace( "Preparing to rollback transaction via JDBC Connection.rollback()" );
124+
log.trace( "Preparing to roll back transaction via JDBC Connection.rollback()" );
125125
status = TransactionStatus.ROLLING_BACK;
126126
if ( isPhysicallyConnected() ) {
127127
getConnectionForTransactionManagement().rollback();
@@ -130,7 +130,7 @@ public void rollback() {
130130
errorIfClosed();
131131
}
132132
status = TransactionStatus.ROLLED_BACK;
133-
log.trace( "Transaction rolled-back via JDBC Connection.rollback()" );
133+
log.trace( "Transaction rolled back via JDBC Connection.rollback()" );
134134
}
135135
catch( SQLException e ) {
136136
status = TransactionStatus.FAILED_ROLLBACK;

hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jta/internal/JtaIsolationDelegate.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,19 @@
2121
import org.hibernate.exception.internal.SQLStateConversionDelegate;
2222
import org.hibernate.resource.jdbc.spi.JdbcSessionOwner;
2323
import org.hibernate.resource.transaction.spi.IsolationDelegate;
24-
import org.hibernate.internal.CoreLogging;
25-
import org.hibernate.internal.CoreMessageLogger;
2624
import org.hibernate.internal.util.ExceptionHelper;
2725
import org.hibernate.jdbc.WorkExecutor;
2826
import org.hibernate.jdbc.WorkExecutorVisitable;
2927
import org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner;
3028

29+
import static org.hibernate.resource.transaction.backend.jta.internal.JtaLogging.JTA_LOGGER;
30+
3131
/**
3232
* An isolation delegate for JTA environments.
3333
*
3434
* @author Andrea Boriero
3535
*/
3636
public class JtaIsolationDelegate implements IsolationDelegate {
37-
private static final CoreMessageLogger LOG = CoreLogging.messageLogger( JtaIsolationDelegate.class );
3837

3938
private final JdbcConnectionAccess connectionAccess;
4039
private final BiFunction<SQLException, String, JDBCException> sqlExceptionConverter;
@@ -115,7 +114,7 @@ private <T> T doInSuspendedTransaction(HibernateCallable<T> callable) {
115114
// First we suspend any current JTA transaction
116115
final Transaction surroundingTransaction = transactionManager.suspend();
117116
if ( surroundingTransaction != null ) {
118-
LOG.tracef( "Surrounding JTA transaction suspended [%s]", surroundingTransaction );
117+
JTA_LOGGER.transactionSuspended( surroundingTransaction );
119118
}
120119

121120
try {
@@ -128,7 +127,7 @@ private <T> T doInSuspendedTransaction(HibernateCallable<T> callable) {
128127
try {
129128
if ( surroundingTransaction != null ) {
130129
transactionManager.resume( surroundingTransaction );
131-
LOG.tracef( "Surrounding JTA transaction resumed [%s]", surroundingTransaction );
130+
JTA_LOGGER.transactionResumed( surroundingTransaction );
132131
}
133132
}
134133
catch ( Throwable t2 ) {
@@ -165,7 +164,7 @@ private <T> T doInNewTransaction(HibernateCallable<T> callable, TransactionManag
165164
transactionManager.rollback();
166165
}
167166
catch ( Exception exception ) {
168-
LOG.unableToRollbackIsolatedTransaction( e, exception );
167+
JTA_LOGGER.unableToRollbackIsolatedTransaction( e, exception );
169168
}
170169
throw new HibernateException( "Could not apply work", e );
171170
}
@@ -195,7 +194,7 @@ private <T> T doTheWork(WorkExecutorVisitable<T> work) {
195194
jdbcConnectionAccess().releaseConnection( connection );
196195
}
197196
catch ( Throwable throwable ) {
198-
LOG.unableToReleaseIsolatedConnection( throwable );
197+
JTA_LOGGER.unableToReleaseIsolatedConnection( throwable );
199198
}
200199
}
201200
}
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.resource.transaction.backend.jta.internal;
6+
7+
import org.hibernate.Internal;
8+
import org.hibernate.internal.log.SubSystemLogging;
9+
10+
import org.jboss.logging.BasicLogger;
11+
import org.jboss.logging.Logger;
12+
import org.jboss.logging.annotations.Cause;
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.TRACE;
21+
import static org.jboss.logging.Logger.Level.WARN;
22+
23+
/**
24+
* Logging interface for JTA transaction operations.
25+
*
26+
* @author Gavin King
27+
*/
28+
@MessageLogger(projectCode = "HHH")
29+
@ValidIdRange(min = 90007001, max = 90008000)
30+
@SubSystemLogging(
31+
name = JtaLogging.LOGGER_NAME,
32+
description = "Logging related to JTA transaction management"
33+
)
34+
@Internal
35+
public interface JtaLogging extends BasicLogger {
36+
String LOGGER_NAME = SubSystemLogging.BASE + ".jta";
37+
38+
JtaLogging JTA_LOGGER = Logger.getMessageLogger(MethodHandles.lookup(), JtaLogging.class, LOGGER_NAME);
39+
40+
int NAMESPACE = 90007000;
41+
42+
// TransactionManager methods
43+
44+
@LogMessage(level = TRACE)
45+
@Message(
46+
value = "Calling TransactionManager.begin() to start a new JTA transaction",
47+
id = NAMESPACE + 1
48+
)
49+
void callingTransactionManagerBegin();
50+
51+
@LogMessage(level = TRACE)
52+
@Message(
53+
value = "Successfully called TransactionManager.begin()",
54+
id = NAMESPACE + 2
55+
)
56+
void calledTransactionManagerBegin();
57+
58+
@LogMessage(level = TRACE)
59+
@Message(
60+
value = "Skipping TransactionManager.begin() since there is an active transaction",
61+
id = NAMESPACE + 3
62+
)
63+
void skippingTransactionManagerBegin();
64+
65+
@LogMessage(level = TRACE)
66+
@Message(
67+
value = "Calling TransactionManager.commit() to commit the JTA transaction",
68+
id = NAMESPACE + 4
69+
)
70+
void callingTransactionManagerCommit();
71+
72+
@LogMessage(level = TRACE)
73+
@Message(
74+
value = "Successfully called TransactionManager.commit()",
75+
id = NAMESPACE + 5
76+
)
77+
void calledTransactionManagerCommit();
78+
79+
@LogMessage(level = TRACE)
80+
@Message(
81+
value = "Skipping TransactionManager.commit() since the transaction was not initiated here",
82+
id = NAMESPACE + 6
83+
)
84+
void skippingTransactionManagerCommit();
85+
86+
@LogMessage(level = TRACE)
87+
@Message(
88+
value = "Calling TransactionManager.rollback() to roll back the JTA transaction",
89+
id = NAMESPACE + 7
90+
)
91+
void callingTransactionManagerRollback();
92+
93+
@LogMessage(level = TRACE)
94+
@Message(
95+
value = "Successfully called TransactionManager.rollback()",
96+
id = NAMESPACE + 8
97+
)
98+
void calledTransactionManagerRollback();
99+
100+
// UserTransaction methods
101+
102+
@LogMessage(level = TRACE)
103+
@Message(
104+
value = "Calling UserTransaction.begin() to start a new JTA transaction",
105+
id = NAMESPACE + 9
106+
)
107+
void callingUserTransactionBegin();
108+
109+
@LogMessage(level = TRACE)
110+
@Message(
111+
value = "Successfully called UserTransaction.begin()",
112+
id = NAMESPACE + 10
113+
)
114+
void calledUserTransactionBegin();
115+
116+
@LogMessage(level = TRACE)
117+
@Message(
118+
value = "Calling UserTransaction.commit() to commit the JTA transaction",
119+
id = NAMESPACE + 11
120+
)
121+
void callingUserTransactionCommit();
122+
123+
@LogMessage(level = TRACE)
124+
@Message(
125+
value = "Successfully called UserTransaction.commit()",
126+
id = NAMESPACE + 12
127+
)
128+
void calledUserTransactionCommit();
129+
130+
@LogMessage(level = TRACE)
131+
@Message(
132+
value = "Calling UserTransaction.rollback() to roll back the JTA transaction",
133+
id = NAMESPACE + 13
134+
)
135+
void callingUserTransactionRollback();
136+
137+
@LogMessage(level = TRACE)
138+
@Message(
139+
value = "Successfully called UserTransaction.rollback()",
140+
id = NAMESPACE + 14
141+
)
142+
void calledUserTransactionRollback();
143+
144+
@LogMessage(level = TRACE)
145+
@Message(
146+
value = "Surrounding JTA transaction suspended [%s]",
147+
id = NAMESPACE + 15
148+
)
149+
void transactionSuspended(Object transaction);
150+
151+
@LogMessage(level = TRACE)
152+
@Message(
153+
value = "Surrounding JTA transaction resumed [%s]",
154+
id = NAMESPACE + 16
155+
)
156+
void transactionResumed(Object transaction);
157+
158+
@LogMessage(level = Logger.Level.INFO)
159+
@Message(
160+
value = "Unable to roll back isolated transaction on error [%s] : [%s]",
161+
id = NAMESPACE + 17
162+
)
163+
void unableToRollbackIsolatedTransaction(Exception e, Exception ignore);
164+
165+
@LogMessage(level = Logger.Level.INFO)
166+
@Message(
167+
value = "Unable to release isolated connection",
168+
id = NAMESPACE + 18
169+
)
170+
void unableToReleaseIsolatedConnection(@Cause Throwable ignore);
171+
172+
@LogMessage(level = WARN)
173+
@Message(
174+
id = NAMESPACE + 20,
175+
value = "Transaction afterCompletion called by a background thread; " +
176+
"delaying afterCompletion processing until the original thread can handle it. [status=%s]"
177+
)
178+
void rollbackFromBackgroundThread(int status);
179+
}

hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jta/internal/JtaTransactionAdapterTransactionManagerImpl.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,17 @@
77
import jakarta.transaction.SystemException;
88
import jakarta.transaction.TransactionManager;
99

10-
import org.jboss.logging.Logger;
11-
1210
import org.hibernate.TransactionException;
1311
import org.hibernate.resource.transaction.spi.TransactionStatus;
1412

13+
import static org.hibernate.resource.transaction.backend.jta.internal.JtaLogging.JTA_LOGGER;
14+
1515
/**
1616
* JtaTransactionAdapter for coordinating with the JTA TransactionManager
1717
*
1818
* @author Steve Ebersole
1919
*/
2020
public class JtaTransactionAdapterTransactionManagerImpl implements JtaTransactionAdapter {
21-
private static final Logger log = Logger.getLogger( JtaTransactionAdapterTransactionManagerImpl.class );
2221

2322
private final TransactionManager transactionManager;
2423

@@ -32,17 +31,17 @@ public JtaTransactionAdapterTransactionManagerImpl(TransactionManager transactio
3231
public void begin() {
3332
try {
3433
if ( getStatus() == TransactionStatus.NOT_ACTIVE ) {
35-
log.trace( "Calling TransactionManager#begin" );
34+
JTA_LOGGER.callingTransactionManagerBegin();
3635
transactionManager.begin();
3736
initiator = true;
38-
log.trace( "Called TransactionManager#begin" );
37+
JTA_LOGGER.calledTransactionManagerBegin();
3938
}
4039
else {
41-
log.trace( "Skipping TransactionManager#begin due to already active transaction" );
40+
JTA_LOGGER.skippingTransactionManagerBegin();
4241
}
4342
}
4443
catch (Exception e) {
45-
throw new TransactionException( "JTA TransactionManager#begin failed", e );
44+
throw new TransactionException( "JTA TransactionManager.begin() failed", e );
4645
}
4746
}
4847

@@ -51,16 +50,16 @@ public void commit() {
5150
try {
5251
if ( initiator ) {
5352
initiator = false;
54-
log.trace( "Calling TransactionManager#commit" );
53+
JTA_LOGGER.callingTransactionManagerCommit();
5554
transactionManager.commit();
56-
log.trace( "Called TransactionManager#commit" );
55+
JTA_LOGGER.calledTransactionManagerCommit();
5756
}
5857
else {
59-
log.trace( "Skipping TransactionManager#commit due to not being initiator" );
58+
JTA_LOGGER.skippingTransactionManagerCommit();
6059
}
6160
}
6261
catch (Exception e) {
63-
throw new TransactionException( "JTA TransactionManager#commit failed", e );
62+
throw new TransactionException( "JTA TransactionManager.commit() failed", e );
6463
}
6564
}
6665

@@ -69,16 +68,16 @@ public void rollback() {
6968
try {
7069
if ( initiator ) {
7170
initiator = false;
72-
log.trace( "Calling TransactionManager#rollback" );
71+
JTA_LOGGER.callingTransactionManagerRollback();
7372
transactionManager.rollback();
74-
log.trace( "Called TransactionManager#rollback" );
73+
JTA_LOGGER.calledTransactionManagerRollback();
7574
}
7675
else {
7776
markRollbackOnly();
7877
}
7978
}
8079
catch (Exception e) {
81-
throw new TransactionException( "JTA TransactionManager#rollback failed", e );
80+
throw new TransactionException( "JTA TransactionManager.rollback() failed", e );
8281
}
8382
}
8483

0 commit comments

Comments
 (0)