You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/01/20 11:20:29 UTC
[camel] 04/06: CAMEL-16056: Added StartupStep to diagnose startup
exeuction times for various steps.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 4f8a08b7dfa28d1338f63426dba21b89edfc1781
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Jan 20 07:15:20 2021 +0100
CAMEL-16056: Added StartupStep to diagnose startup exeuction times for various steps.
---
.../main/java/org/apache/camel/reifier/ChoiceReifier.java | 1 -
.../java/org/apache/camel/reifier/ProcessorReifier.java | 10 ++++++++--
.../main/java/org/apache/camel/reifier/RouteReifier.java | 13 ++++++++++++-
.../java/org/apache/camel/impl/CustomIdFactoryTest.java | 10 ++--------
4 files changed, 22 insertions(+), 12 deletions(-)
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ChoiceReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ChoiceReifier.java
index 54e5780..dc99340 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ChoiceReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ChoiceReifier.java
@@ -63,7 +63,6 @@ public class ChoiceReifier extends ProcessorReifier<ChoiceDefinition> {
whenClause.setExpression((ExpressionDefinition) model);
}
}
- exp = whenClause.getExpression();
}
FilterProcessor filter = (FilterProcessor) createProcessor(whenClause);
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
index 202fc8a..5805116 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
@@ -31,6 +31,7 @@ import org.apache.camel.ErrorHandlerFactory;
import org.apache.camel.ExtendedCamelContext;
import org.apache.camel.Processor;
import org.apache.camel.Route;
+import org.apache.camel.StartupStep;
import org.apache.camel.model.AggregateDefinition;
import org.apache.camel.model.BeanDefinition;
import org.apache.camel.model.CatchDefinition;
@@ -797,16 +798,21 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
}
protected Processor createProcessor(ProcessorDefinition<?> output) throws Exception {
+ // ensure node has id assigned
+ String outputId = output.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
+ StartupStep step = camelContext.adapt(ExtendedCamelContext.class).getStartupStepRecorder().beginStep(ProcessorReifier.class, outputId, "Create processor");
+
Processor processor = null;
// at first use custom factory
if (camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory() != null) {
processor = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createProcessor(route, output);
}
- // fallback to default implementation if factory did not create the
- // processor
+ // fallback to default implementation if factory did not create the processor
if (processor == null) {
processor = reifier(route, output).createProcessor();
}
+
+ camelContext.adapt(ExtendedCamelContext.class).getStartupStepRecorder().endStep(step);
return processor;
}
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
index 7d5e068..deb98a2 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
@@ -33,6 +33,7 @@ import org.apache.camel.Route;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.ShutdownRoute;
import org.apache.camel.ShutdownRunningTask;
+import org.apache.camel.StartupStep;
import org.apache.camel.model.ModelCamelContext;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.model.PropertyDefinition;
@@ -224,7 +225,17 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
List<ProcessorDefinition<?>> list = new ArrayList<>(definition.getOutputs());
for (ProcessorDefinition<?> output : list) {
try {
- ProcessorReifier.reifier(route, output).addRoutes();
+ ProcessorReifier reifier = ProcessorReifier.reifier(route, output);
+
+ // ensure node has id assigned
+ String outputId = output.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
+ String eip = reifier.getClass().getSimpleName().replace("Reifier", "");
+ StartupStep step = camelContext.adapt(ExtendedCamelContext.class).getStartupStepRecorder()
+ .beginStep(Processor.class, outputId, "Creating " + eip + " processor");
+
+ reifier.addRoutes();
+
+ camelContext.adapt(ExtendedCamelContext.class).getStartupStepRecorder().endStep(step);
} catch (Exception e) {
throw new FailedToCreateRouteException(definition.getId(), definition.toString(), output.toString(), e);
}
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java
index d60a4b3..6fbb55a 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java
@@ -23,7 +23,6 @@ import org.apache.camel.ExtendedCamelContext;
import org.apache.camel.NamedNode;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.OptionalIdentifiedDefinition;
import org.apache.camel.spi.InterceptStrategy;
import org.apache.camel.spi.NodeIdFactory;
import org.apache.camel.support.processor.DelegateProcessor;
@@ -90,7 +89,7 @@ public class CustomIdFactoryTest extends ContextTestSupport {
assertMockEndpointsSatisfied();
// this should take the when path (first to)
- assertEquals("#choice7##to2#", ids);
+ assertEquals("#choice2##to4#", ids);
}
/**
@@ -105,7 +104,7 @@ public class CustomIdFactoryTest extends ContextTestSupport {
assertMockEndpointsSatisfied();
// this should take the otherwise path
- assertEquals("#choice7##log4##to6#", ids);
+ assertEquals("#choice2##log6##to7#", ids);
}
private static class MyDebuggerCheckingId implements InterceptStrategy {
@@ -115,11 +114,6 @@ public class CustomIdFactoryTest extends ContextTestSupport {
final CamelContext context, final NamedNode definition, Processor target, Processor nextTarget)
throws Exception {
- // MUST DO THIS
- // force id creation as sub nodes have lazy assigned ids
- ((OptionalIdentifiedDefinition<?>) definition)
- .idOrCreate(context.adapt(ExtendedCamelContext.class).getNodeIdFactory());
-
return new DelegateProcessor(target) {
@Override
protected void processNext(Exchange exchange) throws Exception {