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 2014/11/07 14:43:25 UTC
camel git commit: CAMEL-8004: Fixed concurreny dead-lock potential
when using getRoutes from CamelContext. Thanks to Babak for researching this.
Repository: camel
Updated Branches:
refs/heads/master d4671fda1 -> f4886f8c8
CAMEL-8004: Fixed concurreny dead-lock potential when using getRoutes from CamelContext. Thanks to Babak for researching this.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/f4886f8c
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/f4886f8c
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/f4886f8c
Branch: refs/heads/master
Commit: f4886f8c8eb02a11f99fbaacb9e7285e634add13
Parents: d4671fd
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Nov 7 14:17:38 2014 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Nov 7 14:43:15 2014 +0100
----------------------------------------------------------------------
.../apache/camel/impl/DefaultCamelContext.java | 18 ++++++++++++------
.../camel/component/quartz2/QuartzEndpoint.java | 2 +-
.../quartz2/QuartzNameCollisionTest.java | 2 +-
3 files changed, 14 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/f4886f8c/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index a91d176..1ca5e19 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -657,12 +657,14 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
return routeStartupOrder;
}
- public synchronized List<Route> getRoutes() {
+ public List<Route> getRoutes() {
// lets return a copy of the collection as objects are removed later when services are stopped
if (routes.isEmpty()) {
return Collections.emptyList();
} else {
- return new ArrayList<Route>(routes);
+ synchronized (routes) {
+ return new ArrayList<Route>(routes);
+ }
}
}
@@ -680,12 +682,16 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
throw new UnsupportedOperationException("Overriding existing routes is not supported yet, use addRouteCollection instead");
}
- synchronized void removeRouteCollection(Collection<Route> routes) {
- this.routes.removeAll(routes);
+ void removeRouteCollection(Collection<Route> routes) {
+ synchronized (routes) {
+ this.routes.removeAll(routes);
+ }
}
- synchronized void addRouteCollection(Collection<Route> routes) throws Exception {
- this.routes.addAll(routes);
+ void addRouteCollection(Collection<Route> routes) throws Exception {
+ synchronized (routes) {
+ this.routes.addAll(routes);
+ }
}
public void addRoutes(RoutesBuilder builder) throws Exception {
http://git-wip-us.apache.org/repos/asf/camel/blob/f4886f8c/components/camel-quartz2/src/main/java/org/apache/camel/component/quartz2/QuartzEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-quartz2/src/main/java/org/apache/camel/component/quartz2/QuartzEndpoint.java b/components/camel-quartz2/src/main/java/org/apache/camel/component/quartz2/QuartzEndpoint.java
index ff70323..4acb773 100644
--- a/components/camel-quartz2/src/main/java/org/apache/camel/component/quartz2/QuartzEndpoint.java
+++ b/components/camel-quartz2/src/main/java/org/apache/camel/component/quartz2/QuartzEndpoint.java
@@ -269,7 +269,7 @@ public class QuartzEndpoint extends DefaultEndpoint {
QuartzEndpoint quartzEndpoint = (QuartzEndpoint) route.getEndpoint();
TriggerKey checkTriggerKey = quartzEndpoint.getTriggerKey();
if (triggerKey.equals(checkTriggerKey)) {
- throw new IllegalArgumentException("Trigger key " + triggerKey + " is already in used by " + quartzEndpoint);
+ throw new IllegalArgumentException("Trigger key " + triggerKey + " is already in use by " + quartzEndpoint);
}
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/f4886f8c/components/camel-quartz2/src/test/java/org/apache/camel/component/quartz2/QuartzNameCollisionTest.java
----------------------------------------------------------------------
diff --git a/components/camel-quartz2/src/test/java/org/apache/camel/component/quartz2/QuartzNameCollisionTest.java b/components/camel-quartz2/src/test/java/org/apache/camel/component/quartz2/QuartzNameCollisionTest.java
index 66a620f..7444b2b 100644
--- a/components/camel-quartz2/src/test/java/org/apache/camel/component/quartz2/QuartzNameCollisionTest.java
+++ b/components/camel-quartz2/src/test/java/org/apache/camel/component/quartz2/QuartzNameCollisionTest.java
@@ -55,7 +55,7 @@ public class QuartzNameCollisionTest {
Assert.fail("Should have thrown an exception");
} catch (FailedToCreateRouteException e) {
String reason = e.getMessage();
- Assert.assertEquals(reason.indexOf("Trigger key myGroup.myTimerName is already in used") >= 0, true);
+ Assert.assertEquals(reason.indexOf("Trigger key myGroup.myTimerName is already in use") >= 0, true);
}
}