File tree Expand file tree Collapse file tree 1 file changed +10
-1
lines changed
grails-core/src/main/groovy/org/grails/transaction Expand file tree Collapse file tree 1 file changed +10
-1
lines changed Original file line number Diff line number Diff line change 4747 *
4848 * @author Michael Hunger
4949 * @author Oliver Gierke
50+ * @author Lari Hotari
51+ * @author Graeme Rocher
52+ *
5053 * @since 2.3.6
5154 */
5255public 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)
You can’t perform that action at this time.
0 commit comments