Skip to content

Commit 8070b15

Browse files
committed
Correct support for propagation SUPPORTS and multiple data sources. Fixes #9149
1 parent 904b018 commit 8070b15

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

grails-core/src/main/groovy/org/grails/transaction/ChainedTransactionManager.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@
4747
*
4848
* @author Michael Hunger
4949
* @author Oliver Gierke
50+
* @author Lari Hotari
51+
* @author Graeme Rocher
52+
*
5053
* @since 2.3.6
5154
*/
5255
public class ChainedTransactionManager implements PlatformTransactionManager {
@@ -92,7 +95,7 @@ public MultiTransactionStatus getTransaction(TransactionDefinition definition) t
9295

9396
MultiTransactionStatus mts = new MultiTransactionStatus(transactionManagers.get(0));
9497

95-
if (!synchronizationManager.isSynchronizationActive()) {
98+
if (!synchronizationManager.isSynchronizationActive() && canCreateTransaction(definition)) {
9699
synchronizationManager.initSynchronization();
97100
mts.setNewSynchonization();
98101
}
@@ -127,6 +130,12 @@ public MultiTransactionStatus getTransaction(TransactionDefinition definition) t
127130
return mts;
128131
}
129132

133+
protected boolean canCreateTransaction(TransactionDefinition definition) {
134+
return definition.getPropagationBehavior() == TransactionDefinition.PROPAGATION_REQUIRED ||
135+
definition.getPropagationBehavior() == TransactionDefinition.PROPAGATION_REQUIRES_NEW ||
136+
definition.getPropagationBehavior() == TransactionDefinition.PROPAGATION_NESTED;
137+
}
138+
130139
/*
131140
* (non-Javadoc)
132141
* @see org.springframework.transaction.PlatformTransactionManager#commit(org.springframework.transaction.TransactionStatus)

0 commit comments

Comments
 (0)