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) {

Reply via email to