Hi, I've recently hit an issue with using DefaultCamelContext addRoutes / removeRouteDefinitions within a dynamic environment (routes are adding and removed at runtime). It seems that the removeRouteDefinitions is synchronized however the addRoutes is not. On occasion has produced the the ConcurrentModificationException [1]. I've solved it in my client code by surrounding the calls to adding and removing with synchronized blocks [2], however it might be safer to simply synchronize addRoutes [3]. Thoughts?
- Bob
[1]
2017-11-02 22:57:12,205 | ERROR | Thread-7 |
Activator | 20 -
com.myclient.api.myclient-api-core - 1.0.411 | Error Adding Camel Route
Builder
java.util.ConcurrentModificationException
at
java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)[:1.8.0_131]
at java.util.ArrayList$Itr.next(ArrayList.java:851)[:1.8.0_131]
at
org.apache.camel.builder.RouteBuilder.populateRests(RouteBuilder.java:454)[82:org.apache.camel.camel-core:2.18.4]
at
org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:330)[82:org.apache.camel.camel-core:2.18.4]
at
org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:916)[82:org.apache.camel.camel-core:2.18.4]
at
org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:913)[82:org.apache.camel.camel-core:2.18.4]
at
org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3027)[82:org.apache.camel.camel-core:2.18.4]
at
org.apache.camel.impl.DefaultCamelContext.addRoutes(DefaultCamelContext.java:913)[82:org.apache.camel.camel-core:2.18.4]
at
com.myclient.api.internal.Activator.addingService(Activator.java:136)[20:com.myclient.api.myclient-api-core:1.0.411]
at
com.myclient.api.internal.Activator.addingService(Activator.java:45)[20:com.myclient.api.myclient-api-core:1.0.411]
...
[2]
synchronized(camelContext)
{
this.camelContext.addRoutes(builder);
}
[3]
public synchronized void addRoutes(final RoutesBuilder builder) throws
Exception
signature.asc
Description: OpenPGP digital signature
