diff --git a/build.gradle b/build.gradle index 73cf1f6021..783a261f63 100644 --- a/build.gradle +++ b/build.gradle @@ -27,7 +27,7 @@ configure(allprojects) { project -> mavenBom "io.netty:netty-bom:4.1.50.Final" mavenBom "io.projectreactor:reactor-bom:2020.0.0-SNAPSHOT" mavenBom "io.rsocket:rsocket-bom:1.0.1" - mavenBom "org.eclipse.jetty:jetty-bom:9.4.29.v20200521" + mavenBom "org.eclipse.jetty:jetty-bom:9.4.30.v20200611" mavenBom "org.jetbrains.kotlin:kotlin-bom:1.4-M2" mavenBom "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.3.7-1.4-M2" mavenBom "org.junit:junit-bom:5.6.2" diff --git a/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java b/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java index 6752239a6e..241e9b08cd 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java +++ b/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java @@ -388,11 +388,12 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init } else { + Object result; final ThrowableHolder throwableHolder = new ThrowableHolder(); // It's a CallbackPreferringPlatformTransactionManager: pass a TransactionCallback in. try { - Object result = ((CallbackPreferringPlatformTransactionManager) ptm).execute(txAttr, status -> { + result = ((CallbackPreferringPlatformTransactionManager) ptm).execute(txAttr, status -> { TransactionInfo txInfo = prepareTransactionInfo(ptm, txAttr, joinpointIdentification, status); try { Object retVal = invocation.proceedWithInvocation(); @@ -422,12 +423,6 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init cleanupTransactionInfo(txInfo); } }); - - // Check result state: It might indicate a Throwable to rethrow. - if (throwableHolder.throwable != null) { - throw throwableHolder.throwable; - } - return result; } catch (ThrowableHolderException ex) { throw ex.getCause(); @@ -445,11 +440,17 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init } throw ex2; } + + // Check result state: It might indicate a Throwable to rethrow. + if (throwableHolder.throwable != null) { + throw throwableHolder.throwable; + } + return result; } } /** - * Clear the cache. + * Clear the transaction manager cache. */ protected void clearTransactionManagerCache() { this.transactionManagerCache.clear();