Author: davsclaus
Date: Mon Feb 27 12:29:27 2012
New Revision: 1294130
URL: http://svn.apache.org/viewvc?rev=1294130&view=rev
Log:
CAMEL-5046: Cleanup when stopping tracer to not leak resource.
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java?rev=1294130&r1=1294129&r2=1294130&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
Mon Feb 27 12:29:27 2012
@@ -104,7 +104,7 @@ public class DefaultManagementLifecycleS
private CamelContext camelContext;
private volatile boolean initialized;
private final Set<String> knowRouteIds = new HashSet<String>();
- private Map<Object, ManagedTracer> managedTracers = new HashMap<Object,
ManagedTracer>();
+ private final Map<Tracer, ManagedTracer> managedTracers = new
HashMap<Tracer, ManagedTracer>();
public DefaultManagementLifecycleStrategy() {
}
@@ -392,14 +392,14 @@ public class DefaultManagementLifecycleS
return ((ManagementAware<Service>)
service).getManagedObject(service);
} else if (service instanceof Tracer) {
// special for tracer
- Object mo = this.managedTracers.get(service);
- if (mo == null) {
- ManagedTracer mt = new ManagedTracer(context, (Tracer)
service);
+ Tracer tracer = (Tracer) service;
+ ManagedTracer mt = managedTracers.get(tracer);
+ if (mt == null) {
+ mt = new ManagedTracer(context, tracer);
mt.init(getManagementStrategy());
- this.managedTracers.put(service, mt);
- mo = mt;
+ managedTracers.put(tracer, mt);
}
- return mo;
+ return mt;
} else if (service instanceof EventNotifier) {
answer =
getManagementObjectStrategy().getManagedObjectForEventNotifier(context,
(EventNotifier) service);
} else if (service instanceof Producer) {
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java?rev=1294130&r1=1294129&r2=1294130&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
Mon Feb 27 12:29:27 2012
@@ -54,13 +54,12 @@ public class Tracer implements Intercept
private boolean useJpa;
private CamelLogProcessor logger;
private TraceInterceptorFactory traceInterceptorFactory = new
DefaultTraceInterceptorFactory();
- private CopyOnWriteArrayList<TraceEventHandler> traceHandlers;
+ private final List<TraceEventHandler> traceHandlers = new
CopyOnWriteArrayList<TraceEventHandler>();
private String jpaTraceEventMessageClassName = JPA_TRACE_EVENT_MESSAGE;
private boolean jmxTraceNotifications;
private int traceBodySize = 10000;
public Tracer() {
- traceHandlers = new CopyOnWriteArrayList<TraceEventHandler>();
traceHandlers.add(new DefaultTraceEventHandler(this));
}
@@ -316,7 +315,6 @@ public class Tracer implements Intercept
/**
* Add the given tracehandler
- * @param traceHandler
*/
public void addTraceHandler(TraceEventHandler traceHandler) {
this.traceHandlers.add(traceHandler);
@@ -324,7 +322,6 @@ public class Tracer implements Intercept
/**
* Remove the given tracehandler
- * @param traceHandler
*/
public void removeTraceHandler(TraceEventHandler traceHandler) {
this.traceHandlers.add(traceHandler);
@@ -367,7 +364,7 @@ public class Tracer implements Intercept
}
public void stop() throws Exception {
- // noop
+ traceHandlers.clear();
}
@Override