Author: davsclaus
Date: Tue Sep 29 08:34:48 2009
New Revision: 819860
URL: http://svn.apache.org/viewvc?rev=819860&view=rev
Log:
CAMEL-1912: Fixed removeEndpoints failing due to concurernt modification
exception
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=819860&r1=819859&r2=819860&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
Tue Sep 29 08:34:48 2009
@@ -350,17 +350,24 @@
strategy.onEndpointRemove(oldEndpoint);
}
} else {
+ Collection<Map.Entry> worklist = new ArrayList<Map.Entry>();
for (Map.Entry entry : endpoints.entrySet()) {
oldEndpoint = (Endpoint) entry.getValue();
if (!oldEndpoint.isSingleton() &&
uri.equals(oldEndpoint.getEndpointUri())) {
- answer.add(oldEndpoint);
- stopServices(oldEndpoint);
- endpoints.remove(entry.getKey());
- for (LifecycleStrategy strategy : lifecycleStrategies)
{
- strategy.onEndpointRemove(oldEndpoint);
- }
+ // add to worklist to avoid concurrent modification
exception
+ worklist.add(entry);
+ }
+ }
+ for (Map.Entry entry : worklist) {
+ oldEndpoint = (Endpoint) entry.getValue();
+ answer.add(oldEndpoint);
+ stopServices(oldEndpoint);
+ endpoints.remove(entry.getKey());
+ for (LifecycleStrategy strategy : lifecycleStrategies) {
+ strategy.onEndpointRemove(oldEndpoint);
}
}
+
}
}
return answer;