You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/03/09 19:38:21 UTC

[camel] branch master updated: CAMEL-16324: camel-core - Spring Transactions does not work due recent optimization

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 3de21e8  CAMEL-16324: camel-core - Spring Transactions does not work due recent optimization
3de21e8 is described below

commit 3de21e8df16471ec018b727294dc66675dd55573
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Mar 9 20:37:43 2021 +0100

    CAMEL-16324: camel-core - Spring Transactions does not work due recent optimization
---
 .../camel/impl/engine/CamelInternalProcessor.java   | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
index 79919ea..3efa6f6 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
@@ -228,6 +228,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
         }
 
         @Override
+        @SuppressWarnings("unchecked")
         public void done(boolean doneSync) {
             try {
                 for (int i = advices.size() - 1, j = states.length - 1; i >= 0; i--) {
@@ -333,19 +334,21 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
                 LOG.trace("Transacted Exchange must be routed synchronously for exchangeId: {} -> {}", exchange.getExchangeId(),
                         exchange);
             }
-            // ----------------------------------------------------------
-            // CAMEL END USER - DEBUG ME HERE +++ START +++
-            // ----------------------------------------------------------
             try {
+                // ----------------------------------------------------------
+                // CAMEL END USER - DEBUG ME HERE +++ START +++
+                // ----------------------------------------------------------
                 processor.process(exchange);
+                // ----------------------------------------------------------
+                // CAMEL END USER - DEBUG ME HERE +++ END +++
+                // ----------------------------------------------------------
             } catch (Throwable e) {
                 exchange.setException(e);
-            }
-            // ----------------------------------------------------------
-            // CAMEL END USER - DEBUG ME HERE +++ END +++
-            // ----------------------------------------------------------
-            if (taskFactory != null) {
-                taskFactory.release(afterTask);
+            } finally {
+                afterTask.done(true);
+                if (taskFactory != null) {
+                    taskFactory.release(afterTask);
+                }
             }
             return true;
         } else {