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 2020/03/25 10:03:44 UTC
[camel] branch master updated: CAMEL-14739: Fix core optimization
would lose route detail on UoW when nesting down many routes.
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 4ac562b CAMEL-14739: Fix core optimization would lose route detail on UoW when nesting down many routes.
4ac562b is described below
commit 4ac562b784d0cdc4aff1a8d7046660db9e9461da
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Mar 25 10:55:47 2020 +0100
CAMEL-14739: Fix core optimization would lose route detail on UoW when nesting down many routes.
---
.../org/apache/camel/impl/engine/DefaultUnitOfWork.java | 15 ++++++---------
...OnExceptionErrorHandlerNoRouteOnExchangeIssueTest.java | 2 --
2 files changed, 6 insertions(+), 11 deletions(-)
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java
index e404de5..d7969de 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java
@@ -16,7 +16,9 @@
*/
package org.apache.camel.impl.engine;
+import java.util.ArrayDeque;
import java.util.ArrayList;
+import java.util.Deque;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -54,14 +56,13 @@ public class DefaultUnitOfWork implements UnitOfWork, Service {
// introduce a simpler UnitOfWork concept. This would also allow us to refactor the
// SubUnitOfWork into a general parent/child unit of work concept. However this
// requires API changes and thus is best kept for future Camel work
+ private final Deque<Route> routes = new ArrayDeque<>(8);
final InflightRepository inflightRepository;
final boolean allowUseOriginalMessage;
final boolean useBreadcrumb;
private final Exchange exchange;
private final ExtendedCamelContext context;
private Logger log;
- private Route prevRoute;
- private Route route;
private List<Synchronization> synchronizations;
private Message originalInMessage;
private Set<Object> transactedBy;
@@ -286,21 +287,17 @@ public class DefaultUnitOfWork implements UnitOfWork, Service {
@Override
public Route getRoute() {
- return route;
+ return routes.peek();
}
@Override
public void pushRoute(Route route) {
- this.prevRoute = this.route;
- this.route = route;
+ routes.push(route);
}
@Override
public Route popRoute() {
- Route answer = this.route;
- this.route = this.prevRoute;
- this.prevRoute = null;
- return answer;
+ return routes.pop();
}
@Override
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionErrorHandlerNoRouteOnExchangeIssueTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionErrorHandlerNoRouteOnExchangeIssueTest.java
index d91492e..108e181 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionErrorHandlerNoRouteOnExchangeIssueTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/OnExceptionErrorHandlerNoRouteOnExchangeIssueTest.java
@@ -20,7 +20,6 @@ import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
import org.apache.camel.LoggingLevel;
import org.apache.camel.builder.RouteBuilder;
-import org.junit.Ignore;
import org.junit.Test;
public class OnExceptionErrorHandlerNoRouteOnExchangeIssueTest extends ContextTestSupport {
@@ -38,7 +37,6 @@ public class OnExceptionErrorHandlerNoRouteOnExchangeIssueTest extends ContextT
}
@Test
- @Ignore("TODO: Fix me https://issues.apache.org/jira/browse/CAMEL-14739")
public void testBug() throws Exception {
String out = template.requestBody("direct:bug", null, String.class);
assertEquals("general exception was properly handled", out);