diff --git a/spring-tx/src/main/java/org/springframework/transaction/ReactiveTransaction.java b/spring-tx/src/main/java/org/springframework/transaction/ReactiveTransaction.java
new file mode 100644
index 00000000000..11a33e681b5
--- /dev/null
+++ b/spring-tx/src/main/java/org/springframework/transaction/ReactiveTransaction.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2002-2019 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.transaction;
+
+/**
+ * Representation of an ongoing reactive transaction.
+ * This is currently a marker interface extending {@link TransactionExecution}
+ * but may acquire further methods in a future revision.
+ *
+ *
Transactional code can use this to retrieve status information,
+ * and to programmatically request a rollback (instead of throwing
+ * an exception that causes an implicit rollback).
+ *
+ * @author Mark Paluch
+ * @author Juergen Hoeller
+ * @since 5.2
+ * @see #setRollbackOnly()
+ * @see ReactiveTransactionManager#getReactiveTransaction
+ */
+public interface ReactiveTransaction extends TransactionExecution {
+
+}
diff --git a/spring-tx/src/main/java/org/springframework/transaction/ReactiveTransactionManager.java b/spring-tx/src/main/java/org/springframework/transaction/ReactiveTransactionManager.java
index e30a3628314..553e4e329ff 100644
--- a/spring-tx/src/main/java/org/springframework/transaction/ReactiveTransactionManager.java
+++ b/spring-tx/src/main/java/org/springframework/transaction/ReactiveTransactionManager.java
@@ -32,7 +32,7 @@ import reactor.core.publisher.Mono;
public interface ReactiveTransactionManager {
/**
- * Emit a currently active transaction or create a new one, according to
+ * Emit a currently active reactive transaction or create a new one, according to
* the specified propagation behavior.
*
Note that parameters like isolation level or timeout will only be applied
* to new transactions, and thus be ignored when participating in active ones.
@@ -54,7 +54,7 @@ public interface ReactiveTransactionManager {
* @see TransactionDefinition#getTimeout
* @see TransactionDefinition#isReadOnly
*/
- Mono getTransaction(TransactionDefinition definition) throws TransactionException;
+ Mono getReactiveTransaction(TransactionDefinition definition) throws TransactionException;
/**
* Commit the given transaction, with regard to its status. If the transaction
@@ -72,7 +72,7 @@ public interface ReactiveTransactionManager {
* database right before commit, with the resulting DataAccessException
* causing the transaction to fail. The original exception will be
* propagated to the caller of this commit method in such a case.
- * @param status object returned by the {@code getTransaction} method
+ * @param transaction object returned by the {@code getTransaction} method
* @throws UnexpectedRollbackException in case of an unexpected rollback
* that the transaction coordinator initiated
* @throws HeuristicCompletionException in case of a transaction failure
@@ -81,9 +81,9 @@ public interface ReactiveTransactionManager {
* (typically caused by fundamental resource failures)
* @throws IllegalTransactionStateException if the given transaction
* is already completed (that is, committed or rolled back)
- * @see ReactiveTransactionStatus#setRollbackOnly
+ * @see ReactiveTransaction#setRollbackOnly
*/
- Mono commit(ReactiveTransactionStatus status) throws TransactionException;
+ Mono commit(ReactiveTransaction transaction) throws TransactionException;
/**
* Perform a rollback of the given transaction.
@@ -95,12 +95,12 @@ public interface ReactiveTransactionManager {
* The transaction will already have been completed and cleaned up when commit
* returns, even in case of a commit exception. Consequently, a rollback call
* after commit failure will lead to an IllegalTransactionStateException.
- * @param status object returned by the {@code getTransaction} method
+ * @param transaction object returned by the {@code getTransaction} method
* @throws TransactionSystemException in case of rollback or system errors
* (typically caused by fundamental resource failures)
* @throws IllegalTransactionStateException if the given transaction
* is already completed (that is, committed or rolled back)
*/
- Mono rollback(ReactiveTransactionStatus status) throws TransactionException;
+ Mono rollback(ReactiveTransaction transaction) throws TransactionException;
}
diff --git a/spring-tx/src/main/java/org/springframework/transaction/ReactiveTransactionStatus.java b/spring-tx/src/main/java/org/springframework/transaction/TransactionExecution.java
similarity index 61%
rename from spring-tx/src/main/java/org/springframework/transaction/ReactiveTransactionStatus.java
rename to spring-tx/src/main/java/org/springframework/transaction/TransactionExecution.java
index 01d5f16ab06..d5d0706187e 100644
--- a/spring-tx/src/main/java/org/springframework/transaction/ReactiveTransactionStatus.java
+++ b/spring-tx/src/main/java/org/springframework/transaction/TransactionExecution.java
@@ -17,20 +17,14 @@
package org.springframework.transaction;
/**
- * Representation of the status of a transaction exposing a reactive
- * interface.
+ * Common representation of the current state of a transaction.
+ * Serves as base interface for {@link TransactionStatus} as well as
+ * {@link ReactiveTransaction}.
*
- *
Transactional code can use this to retrieve status information,
- * and to programmatically request a rollback (instead of throwing
- * an exception that causes an implicit rollback).
- *
- * @author Mark Paluch
* @author Juergen Hoeller
* @since 5.2
- * @see #setRollbackOnly()
- * @see ReactiveTransactionManager#getTransaction
*/
-public interface ReactiveTransactionStatus {
+public interface TransactionExecution {
/**
* Return whether the present transaction is new; otherwise participating
@@ -43,12 +37,6 @@ public interface ReactiveTransactionStatus {
* Set the transaction rollback-only. This instructs the transaction manager
* that the only possible outcome of the transaction may be a rollback, as
* alternative to throwing an exception which would in turn trigger a rollback.
- *
This is mainly intended for transactions managed by
- * {@link org.springframework.transaction.reactive.TransactionalOperator} or
- * {@link org.springframework.transaction.interceptor.TransactionInterceptor},
- * where the actual commit/rollback decision is made by the container.
- * @see org.springframework.transaction.reactive.ReactiveTransactionCallback#doInTransaction
- * @see org.springframework.transaction.interceptor.TransactionAttribute#rollbackOn
*/
void setRollbackOnly();
@@ -61,8 +49,6 @@ public interface ReactiveTransactionStatus {
/**
* Return whether this transaction is completed, that is,
* whether it has already been committed or rolled back.
- * @see ReactiveTransactionManager#commit
- * @see ReactiveTransactionManager#rollback
*/
boolean isCompleted();
diff --git a/spring-tx/src/main/java/org/springframework/transaction/TransactionStatus.java b/spring-tx/src/main/java/org/springframework/transaction/TransactionStatus.java
index 557cd772044..5968c57fd7b 100644
--- a/spring-tx/src/main/java/org/springframework/transaction/TransactionStatus.java
+++ b/spring-tx/src/main/java/org/springframework/transaction/TransactionStatus.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2018 the original author or authors.
+ * Copyright 2002-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -36,14 +36,7 @@ import java.io.Flushable;
* @see org.springframework.transaction.support.TransactionCallback#doInTransaction
* @see org.springframework.transaction.interceptor.TransactionInterceptor#currentTransactionStatus()
*/
-public interface TransactionStatus extends SavepointManager, Flushable {
-
- /**
- * Return whether the present transaction is new; otherwise participating
- * in an existing transaction, or potentially not running in an actual
- * transaction in the first place.
- */
- boolean isNewTransaction();
+public interface TransactionStatus extends TransactionExecution, SavepointManager, Flushable {
/**
* Return whether this transaction internally carries a savepoint,
@@ -58,25 +51,6 @@ public interface TransactionStatus extends SavepointManager, Flushable {
*/
boolean hasSavepoint();
- /**
- * Set the transaction rollback-only. This instructs the transaction manager
- * that the only possible outcome of the transaction may be a rollback, as
- * alternative to throwing an exception which would in turn trigger a rollback.
- *
This is mainly intended for transactions managed by
- * {@link org.springframework.transaction.support.TransactionTemplate} or
- * {@link org.springframework.transaction.interceptor.TransactionInterceptor},
- * where the actual commit/rollback decision is made by the container.
- * @see org.springframework.transaction.support.TransactionCallback#doInTransaction
- * @see org.springframework.transaction.interceptor.TransactionAttribute#rollbackOn
- */
- void setRollbackOnly();
-
- /**
- * Return whether the transaction has been marked as rollback-only
- * (either by the application or by the transaction infrastructure).
- */
- boolean isRollbackOnly();
-
/**
* Flush the underlying session to the datastore, if applicable:
* for example, all affected Hibernate/JPA sessions.
@@ -88,12 +62,4 @@ public interface TransactionStatus extends SavepointManager, Flushable {
@Override
void flush();
- /**
- * Return whether this transaction is completed, that is,
- * whether it has already been committed or rolled back.
- * @see PlatformTransactionManager#commit
- * @see PlatformTransactionManager#rollback
- */
- boolean isCompleted();
-
}
diff --git a/spring-tx/src/main/java/org/springframework/transaction/reactive/AbstractReactiveTransactionManager.java b/spring-tx/src/main/java/org/springframework/transaction/reactive/AbstractReactiveTransactionManager.java
index 849c6bced5c..6652f44e675 100644
--- a/spring-tx/src/main/java/org/springframework/transaction/reactive/AbstractReactiveTransactionManager.java
+++ b/spring-tx/src/main/java/org/springframework/transaction/reactive/AbstractReactiveTransactionManager.java
@@ -32,8 +32,8 @@ import reactor.core.publisher.Mono;
import org.springframework.lang.Nullable;
import org.springframework.transaction.IllegalTransactionStateException;
import org.springframework.transaction.InvalidTimeoutException;
+import org.springframework.transaction.ReactiveTransaction;
import org.springframework.transaction.ReactiveTransactionManager;
-import org.springframework.transaction.ReactiveTransactionStatus;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionException;
import org.springframework.transaction.TransactionSuspensionNotSupportedException;
@@ -74,7 +74,7 @@ import org.springframework.transaction.UnexpectedRollbackException;
* @author Mark Paluch
* @author Juergen Hoeller
* @since 5.2
- * @see ReactiveTransactionSynchronizationManager
+ * @see TransactionSynchronizationManager
*/
@SuppressWarnings("serial")
public abstract class AbstractReactiveTransactionManager implements ReactiveTransactionManager, Serializable {
@@ -95,8 +95,8 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
* @see #doBegin
*/
@Override
- public final Mono getTransaction(TransactionDefinition definition) throws TransactionException {
- return ReactiveTransactionSynchronizationManager.currentTransaction()
+ public final Mono getReactiveTransaction(TransactionDefinition definition) throws TransactionException {
+ return TransactionSynchronizationManager.currentTransaction()
.flatMap(synchronizationManager -> {
Object transaction = doGetTransaction(synchronizationManager);
@@ -124,7 +124,7 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
definition.getPropagationBehavior() == TransactionDefinition.PROPAGATION_NESTED) {
return TransactionContextManager.currentContext()
- .map(ReactiveTransactionSynchronizationManager::new)
+ .map(TransactionSynchronizationManager::new)
.flatMap(nestedSynchronizationManager ->
suspend(nestedSynchronizationManager, null)
.map(Optional::of)
@@ -134,7 +134,7 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
logger.debug("Creating new transaction with name [" + definition.getName() + "]: " + definition);
}
return Mono.defer(() -> {
- DefaultReactiveTransactionStatus status = newTransactionStatus(
+ GenericReactiveTransaction status = newReactiveTransaction(
nestedSynchronizationManager, definition, transaction, true,
debugEnabled, suspendedResources.orElse(null));
return doBegin(nestedSynchronizationManager, transaction, definition)
@@ -151,15 +151,15 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
logger.warn("Custom isolation level specified but no actual transaction initiated; " +
"isolation level will effectively be ignored: " + definition);
}
- return Mono.just(prepareTransactionStatus(synchronizationManager, definition, null, true, debugEnabled, null));
+ return Mono.just(prepareReactiveTransaction(synchronizationManager, definition, null, true, debugEnabled, null));
}
});
}
/**
- * Create a TransactionStatus for an existing transaction.
+ * Create a ReactiveTransaction for an existing transaction.
*/
- private Mono handleExistingTransaction(ReactiveTransactionSynchronizationManager synchronizationManager,
+ private Mono handleExistingTransaction(TransactionSynchronizationManager synchronizationManager,
TransactionDefinition definition, Object transaction, boolean debugEnabled) throws TransactionException {
if (definition.getPropagationBehavior() == TransactionDefinition.PROPAGATION_NEVER) {
@@ -172,11 +172,11 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
logger.debug("Suspending current transaction");
}
Mono suspend = suspend(synchronizationManager, transaction);
- return suspend.map(suspendedResources -> prepareTransactionStatus(synchronizationManager,
+ return suspend.map(suspendedResources -> prepareReactiveTransaction(synchronizationManager,
definition, null, false, debugEnabled, suspendedResources)) //
- .switchIfEmpty(Mono.fromSupplier(() -> prepareTransactionStatus(synchronizationManager,
+ .switchIfEmpty(Mono.fromSupplier(() -> prepareReactiveTransaction(synchronizationManager,
definition, null, false, debugEnabled, null)))
- .cast(ReactiveTransactionStatus.class);
+ .cast(ReactiveTransaction.class);
}
if (definition.getPropagationBehavior() == TransactionDefinition.PROPAGATION_REQUIRES_NEW) {
@@ -186,7 +186,7 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
}
Mono suspendedResources = suspend(synchronizationManager, transaction);
return suspendedResources.flatMap(suspendedResourcesHolder -> {
- DefaultReactiveTransactionStatus status = newTransactionStatus(synchronizationManager,
+ GenericReactiveTransaction status = newReactiveTransaction(synchronizationManager,
definition, transaction, true, debugEnabled, suspendedResources);
return doBegin(synchronizationManager, transaction, definition).doOnSuccess(ignore ->
prepareSynchronization(synchronizationManager, status, definition)).thenReturn(status)
@@ -200,7 +200,7 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
logger.debug("Creating nested transaction with name [" + definition.getName() + "]");
}
// Nested transaction through nested begin and commit/rollback calls.
- DefaultReactiveTransactionStatus status = newTransactionStatus(synchronizationManager,
+ GenericReactiveTransaction status = newReactiveTransaction(synchronizationManager,
definition, transaction, true, debugEnabled, null);
return doBegin(synchronizationManager, transaction, definition).doOnSuccess(ignore ->
prepareSynchronization(synchronizationManager, status, definition)).thenReturn(status);
@@ -210,33 +210,33 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
if (debugEnabled) {
logger.debug("Participating in existing transaction");
}
- return Mono.just(prepareTransactionStatus(synchronizationManager, definition, transaction, false, debugEnabled, null));
+ return Mono.just(prepareReactiveTransaction(synchronizationManager, definition, transaction, false, debugEnabled, null));
}
/**
- * Create a new TransactionStatus for the given arguments,
+ * Create a new ReactiveTransaction for the given arguments,
* also initializing transaction synchronization as appropriate.
- * @see #newTransactionStatus
- * @see #prepareTransactionStatus
+ * @see #newReactiveTransaction
+ * @see #prepareReactiveTransaction
*/
- private DefaultReactiveTransactionStatus prepareTransactionStatus(
- ReactiveTransactionSynchronizationManager synchronizationManager, TransactionDefinition definition,
+ private GenericReactiveTransaction prepareReactiveTransaction(
+ TransactionSynchronizationManager synchronizationManager, TransactionDefinition definition,
@Nullable Object transaction, boolean newTransaction, boolean debug, @Nullable Object suspendedResources) {
- DefaultReactiveTransactionStatus status = newTransactionStatus(synchronizationManager,
+ GenericReactiveTransaction status = newReactiveTransaction(synchronizationManager,
definition, transaction, newTransaction, debug, suspendedResources);
prepareSynchronization(synchronizationManager, status, definition);
return status;
}
/**
- * Create a TransactionStatus instance for the given arguments.
+ * Create a ReactiveTransaction instance for the given arguments.
*/
- private DefaultReactiveTransactionStatus newTransactionStatus(
- ReactiveTransactionSynchronizationManager synchronizationManager, TransactionDefinition definition,
+ private GenericReactiveTransaction newReactiveTransaction(
+ TransactionSynchronizationManager synchronizationManager, TransactionDefinition definition,
@Nullable Object transaction, boolean newTransaction, boolean debug, @Nullable Object suspendedResources) {
- return new DefaultReactiveTransactionStatus(transaction, newTransaction,
+ return new GenericReactiveTransaction(transaction, newTransaction,
!synchronizationManager.isSynchronizationActive(),
definition.isReadOnly(), debug, suspendedResources);
}
@@ -244,8 +244,8 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
/**
* Initialize transaction synchronization as appropriate.
*/
- private void prepareSynchronization(ReactiveTransactionSynchronizationManager synchronizationManager,
- DefaultReactiveTransactionStatus status, TransactionDefinition definition) {
+ private void prepareSynchronization(TransactionSynchronizationManager synchronizationManager,
+ GenericReactiveTransaction status, TransactionDefinition definition) {
if (status.isNewSynchronization()) {
synchronizationManager.setActualTransactionActive(status.hasTransaction());
@@ -270,11 +270,11 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
* @see #doSuspend
* @see #resume
*/
- private Mono suspend(ReactiveTransactionSynchronizationManager synchronizationManager,
+ private Mono suspend(TransactionSynchronizationManager synchronizationManager,
@Nullable Object transaction) throws TransactionException {
if (synchronizationManager.isSynchronizationActive()) {
- Mono> suspendedSynchronizations = doSuspendSynchronization(synchronizationManager);
+ Mono> suspendedSynchronizations = doSuspendSynchronization(synchronizationManager);
return suspendedSynchronizations.flatMap(synchronizations -> {
Mono> suspendedResources = (transaction != null ? doSuspend(synchronizationManager, transaction).map(Optional::of).defaultIfEmpty(Optional.empty()) : Mono.just(Optional.empty()));
return suspendedResources.map(it -> {
@@ -313,7 +313,7 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
* @see #doResume
* @see #suspend
*/
- private Mono resume(ReactiveTransactionSynchronizationManager synchronizationManager,
+ private Mono resume(TransactionSynchronizationManager synchronizationManager,
@Nullable Object transaction, @Nullable SuspendedResourcesHolder resourcesHolder)
throws TransactionException {
@@ -322,7 +322,7 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
if (suspendedResources != null) {
return doResume(synchronizationManager, transaction, suspendedResources);
}
- List suspendedSynchronizations = resourcesHolder.suspendedSynchronizations;
+ List suspendedSynchronizations = resourcesHolder.suspendedSynchronizations;
if (suspendedSynchronizations != null) {
synchronizationManager.setActualTransactionActive(resourcesHolder.wasActive);
synchronizationManager.setCurrentTransactionIsolationLevel(resourcesHolder.isolationLevel);
@@ -338,7 +338,7 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
/**
* Resume outer transaction after inner transaction begin failed.
*/
- private Mono resumeAfterBeginException(ReactiveTransactionSynchronizationManager synchronizationManager,
+ private Mono resumeAfterBeginException(TransactionSynchronizationManager synchronizationManager,
Object transaction, @Nullable SuspendedResourcesHolder suspendedResources, Throwable beginEx) {
String exMessage = "Inner transaction begin exception overridden by outer transaction resume exception";
@@ -350,14 +350,14 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
* Suspend all current synchronizations and deactivate transaction
* synchronization for the current transaction context.
* @param synchronizationManager the synchronization manager bound to the current transaction
- * @return the List of suspended ReactiveTransactionSynchronization objects
+ * @return the List of suspended TransactionSynchronization objects
*/
- private Mono> doSuspendSynchronization(
- ReactiveTransactionSynchronizationManager synchronizationManager) {
+ private Mono> doSuspendSynchronization(
+ TransactionSynchronizationManager synchronizationManager) {
- List suspendedSynchronizations = synchronizationManager.getSynchronizations();
+ List suspendedSynchronizations = synchronizationManager.getSynchronizations();
return Flux.fromIterable(suspendedSynchronizations)
- .concatMap(ReactiveTransactionSynchronization::suspend)
+ .concatMap(TransactionSynchronization::suspend)
.then(Mono.defer(() -> {
synchronizationManager.clearSynchronization();
return Mono.just(suspendedSynchronizations);
@@ -368,10 +368,10 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
* Reactivate transaction synchronization for the current transaction context
* and resume all given synchronizations.
* @param synchronizationManager the synchronization manager bound to the current transaction
- * @param suspendedSynchronizations a List of ReactiveTransactionSynchronization objects
+ * @param suspendedSynchronizations a List of TransactionSynchronization objects
*/
- private Mono doResumeSynchronization(ReactiveTransactionSynchronizationManager synchronizationManager,
- List suspendedSynchronizations) {
+ private Mono doResumeSynchronization(TransactionSynchronizationManager synchronizationManager,
+ List suspendedSynchronizations) {
synchronizationManager.initSynchronization();
return Flux.fromIterable(suspendedSynchronizations)
@@ -385,26 +385,26 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
* transactions and programmatic rollback requests.
* Delegates to {@code isRollbackOnly}, {@code doCommit}
* and {@code rollback}.
- * @see ReactiveTransactionStatus#isRollbackOnly()
+ * @see ReactiveTransaction#isRollbackOnly()
* @see #doCommit
* @see #rollback
*/
@Override
- public final Mono commit(ReactiveTransactionStatus status) throws TransactionException {
- if (status.isCompleted()) {
+ public final Mono commit(ReactiveTransaction transaction) throws TransactionException {
+ if (transaction.isCompleted()) {
return Mono.error(new IllegalTransactionStateException(
"Transaction is already completed - do not call commit or rollback more than once per transaction"));
}
- return ReactiveTransactionSynchronizationManager.currentTransaction().flatMap(synchronizationManager -> {
- DefaultReactiveTransactionStatus defStatus = (DefaultReactiveTransactionStatus) status;
- if (defStatus.isRollbackOnly()) {
- if (defStatus.isDebug()) {
+ return TransactionSynchronizationManager.currentTransaction().flatMap(synchronizationManager -> {
+ GenericReactiveTransaction reactiveTx = (GenericReactiveTransaction) transaction;
+ if (reactiveTx.isRollbackOnly()) {
+ if (reactiveTx.isDebug()) {
logger.debug("Transactional code has requested rollback");
}
- return processRollback(synchronizationManager, defStatus);
+ return processRollback(synchronizationManager, reactiveTx);
}
- return processCommit(synchronizationManager, defStatus);
+ return processCommit(synchronizationManager, reactiveTx);
});
}
@@ -415,8 +415,8 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
* @param status object representing the transaction
* @throws TransactionException in case of commit failure
*/
- private Mono processCommit(ReactiveTransactionSynchronizationManager synchronizationManager,
- DefaultReactiveTransactionStatus status) throws TransactionException {
+ private Mono processCommit(TransactionSynchronizationManager synchronizationManager,
+ GenericReactiveTransaction status) throws TransactionException {
AtomicBoolean beforeCompletionInvoked = new AtomicBoolean(false);
@@ -435,10 +435,10 @@ public abstract class AbstractReactiveTransactionManager implements ReactiveTran
})).then(Mono.empty().onErrorResume(ex -> {
Mono