From 299e2c8c46b0915472dabf9f1b4b3662a9a60153 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 17 Jun 2020 16:25:42 +0200 Subject: [PATCH] Avoid misleading log message for commit-triggering exception Closes gh-25253 --- .../interceptor/TransactionAspectSupport.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) 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 8ff61767a8a1..dcafc9c74d3e 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 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2020 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. @@ -295,11 +295,12 @@ protected Object invokeWithinTransaction(Method method, Class targetClass, fi } else { + Object result; final ThrowableHolder throwableHolder = new ThrowableHolder(); // It's a CallbackPreferringPlatformTransactionManager: pass a TransactionCallback in. try { - Object result = ((CallbackPreferringPlatformTransactionManager) tm).execute(txAttr, + result = ((CallbackPreferringPlatformTransactionManager) tm).execute(txAttr, new TransactionCallback() { @Override public Object doInTransaction(TransactionStatus status) { @@ -328,12 +329,6 @@ public Object doInTransaction(TransactionStatus status) { } } }); - - // 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(); @@ -351,11 +346,17 @@ public Object doInTransaction(TransactionStatus status) { } 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();