Skip to content

Commit e98f220

Browse files
committed
HHH-9980 - Implement mark-for-rollback-only handling for JdbcResourceLocalTransactionCoordinatorImpl
1 parent 7556a22 commit e98f220

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jdbc/internal/JdbcResourceLocalTransactionCoordinatorImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ public void rollback() {
230230

231231
@Override
232232
public TransactionStatus getStatus() {
233-
return jdbcResourceTransaction.getStatus();
233+
return rollbackOnly ? TransactionStatus.MARKED_ROLLBACK : jdbcResourceTransaction.getStatus();
234234
}
235235

236236
@Override

hibernate-core/src/test/java/org/hibernate/test/resource/transaction/jdbc/BasicJdbcTransactionTests.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.hibernate.resource.transaction.TransactionCoordinator;
1111
import org.hibernate.resource.transaction.TransactionCoordinatorBuilder;
1212
import org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorBuilderImpl;
13+
import org.hibernate.resource.transaction.spi.TransactionStatus;
1314

1415
import org.hibernate.test.resource.common.SynchronizationCollectorImpl;
1516
import org.junit.Test;
@@ -69,14 +70,21 @@ public boolean shouldAutoJoinTransaction() {
6970
}
7071
);
7172

73+
assertEquals( TransactionStatus.NOT_ACTIVE, transactionCoordinator.getTransactionDriverControl().getStatus() );
74+
7275
transactionCoordinator.getTransactionDriverControl().begin();
76+
assertEquals( TransactionStatus.ACTIVE, transactionCoordinator.getTransactionDriverControl().getStatus() );
77+
7378
transactionCoordinator.getTransactionDriverControl().markRollbackOnly();
79+
assertEquals( TransactionStatus.MARKED_ROLLBACK, transactionCoordinator.getTransactionDriverControl().getStatus() );
80+
7481
try {
7582
transactionCoordinator.getTransactionDriverControl().commit();
7683
}
7784
catch (TransactionException expected) {
7885
}
7986
finally {
87+
assertEquals( TransactionStatus.MARKED_ROLLBACK, transactionCoordinator.getTransactionDriverControl().getStatus() );
8088
transactionCoordinator.getTransactionDriverControl().rollback();
8189
}
8290
}

0 commit comments

Comments
 (0)