Updated Branches: refs/heads/master 440862372 -> 390467c81
CAMEL-6377: Optimized routing engine to reduce stack frames in use during routing. Work in progress. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/89d33f4b Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/89d33f4b Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/89d33f4b Branch: refs/heads/master Commit: 89d33f4b043e3b8696e7aad4563ae462b2cfbb68 Parents: 4408623 Author: Claus Ibsen <davscl...@apache.org> Authored: Tue May 21 08:05:26 2013 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Tue May 21 08:05:26 2013 +0200 ---------------------------------------------------------------------- .../org/apache/camel/impl/DefaultRouteContext.java | 11 ++------ .../DefaultManagementLifecycleStrategy.java | 20 +++++++++------ .../camel/processor/CamelInternalProcessor.java | 4 +++ 3 files changed, 19 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/89d33f4b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java index f0abf2c..ea32aeb 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java @@ -30,7 +30,6 @@ import org.apache.camel.Processor; import org.apache.camel.Route; import org.apache.camel.ShutdownRoute; import org.apache.camel.ShutdownRunningTask; -import org.apache.camel.management.InstrumentationProcessor; import org.apache.camel.model.FromDefinition; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.RouteDefinition; @@ -179,15 +178,11 @@ public class DefaultRouteContext implements RouteContext { // wrap in route inflight processor to track number of inflight exchanges for the route internal.addTask(new CamelInternalProcessor.RouteInflightRepositoryTask(camelContext.getInflightRepository(), routeId)); - // TODO: This should be a task as well - // and wrap it by a instrumentation processor that is to be used for performance stats - // for this particular route - InstrumentationProcessor instrument = new InstrumentationProcessor(); - instrument.setType("route"); - instrument.setProcessor(internal); + // wrap in JMX instrumentation processor that is used for performance stats + internal.addTask(new CamelInternalProcessor.InstrumentationTask("route")); // and create the route that wraps the UoW - Route edcr = new EventDrivenConsumerRoute(this, getEndpoint(), instrument); + Route edcr = new EventDrivenConsumerRoute(this, getEndpoint(), internal); edcr.getProperties().put(Route.ID_PROPERTY, routeId); edcr.getProperties().put(Route.PARENT_PROPERTY, Integer.toHexString(route.hashCode())); if (route.getGroup() != null) { http://git-wip-us.apache.org/repos/asf/camel/blob/89d33f4b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java index ee4e57c..39fe1d9 100644 --- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java +++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java @@ -70,6 +70,7 @@ import org.apache.camel.model.PolicyDefinition; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.ProcessorDefinitionHelper; import org.apache.camel.model.RouteDefinition; +import org.apache.camel.processor.CamelInternalProcessor; import org.apache.camel.processor.interceptor.BacklogTracer; import org.apache.camel.processor.interceptor.Tracer; import org.apache.camel.spi.EventNotifier; @@ -515,16 +516,19 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement if (route instanceof EventDrivenConsumerRoute) { EventDrivenConsumerRoute edcr = (EventDrivenConsumerRoute) route; Processor processor = edcr.getProcessor(); - if (processor instanceof InstrumentationProcessor && mr instanceof ManagedRoute) { - InstrumentationProcessor ip = (InstrumentationProcessor) processor; + if (processor instanceof CamelInternalProcessor && mr instanceof ManagedRoute) { + CamelInternalProcessor internal = (CamelInternalProcessor) processor; ManagedRoute routeMBean = (ManagedRoute) mr; - // we need to wrap the counter with the camel context so we get stats updated on the context as well - if (camelContextMBean != null) { - CompositePerformanceCounter wrapper = new CompositePerformanceCounter(routeMBean, camelContextMBean); - ip.setCounter(wrapper); - } else { - ip.setCounter(routeMBean); + CamelInternalProcessor.InstrumentationTask task = internal.getTask(CamelInternalProcessor.InstrumentationTask.class); + if (task != null) { + // we need to wrap the counter with the camel context so we get stats updated on the context as well + if (camelContextMBean != null) { + CompositePerformanceCounter wrapper = new CompositePerformanceCounter(routeMBean, camelContextMBean); + task.setCounter(wrapper); + } else { + task.setCounter(routeMBean); + } } } } http://git-wip-us.apache.org/repos/asf/camel/blob/89d33f4b/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java index b04d6b9..9c11b46 100644 --- a/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java +++ b/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java @@ -202,6 +202,10 @@ public final class CamelInternalProcessor extends DelegateAsyncProcessor { private PerformanceCounter counter; private String type; + public InstrumentationTask(String type) { + this.type = type; + } + public void setCounter(Object counter) { ManagedPerformanceCounter mpc = null; if (counter instanceof ManagedPerformanceCounter) {