This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 71b45e1  CAMEL-17417: camel-core - Route stack trace to include source 
file:line
71b45e1 is described below

commit 71b45e18ad175d77bffaa72f9de7165ed7b3926b
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Thu Jan 6 12:26:52 2022 +0100

    CAMEL-17417: camel-core - Route stack trace to include source file:line
---
 .../docs/modules/eips/pages/message-history.adoc   | 105 ++++++++++-----------
 1 file changed, 52 insertions(+), 53 deletions(-)

diff --git 
a/core/camel-core-engine/src/main/docs/modules/eips/pages/message-history.adoc 
b/core/camel-core-engine/src/main/docs/modules/eips/pages/message-history.adoc
index 802c50e..9addbc6 100644
--- 
a/core/camel-core-engine/src/main/docs/modules/eips/pages/message-history.adoc
+++ 
b/core/camel-core-engine/src/main/docs/modules/eips/pages/message-history.adoc
@@ -137,82 +137,81 @@ And example is provided below:
 
 [source,text]
 ----
-2020-01-15 11:58:34,834 [read #3 - Delay] ERROR DefaultErrorHandler            
- Failed delivery for (MessageId: ID-davsclaus-pro-local-1579085914402-0-2 on 
ExchangeId: ID-davsclaus-pro-local-1579085914402-0-3). Exhausted after delivery 
attempt: 1 caught: java.lang.IllegalArgumentException: Forced to dump message 
history
+2022-01-06 12:13:06.721 ERROR 67729 --- [ - timer://java] 
o.a.c.p.e.DefaultErrorHandler            : Failed delivery for (MessageId: 
B4365D4CED3E5E1-0000000000000004 on ExchangeId: 
B4365D4CED3E5E1-0000000000000004). Exhausted after delivery attempt: 1 caught: 
java.lang.IllegalArgumentException: The number is too low
 
-Message History
+Message History (source location is disabled)
 
---------------------------------------------------------------------------------------------------------------------------------------
-RouteId              ProcessorId          Processor                            
                                            Elapsed (ms)
-[route1            ] [route1            ] [from[seda://start]                  
                                          ] [       432]
-[route1            ] [to1               ] [log:foo                             
                                          ] [         5]
-[route1            ] [to2               ] [direct:bar                          
                                          ] [       111]
-[route2            ] [to5               ] [log:bar                             
                                          ] [         0]
-[route2            ] [delay2            ] [delay[100]                          
                                          ] [       110]
-[route2            ] [to6               ] [mock:bar                            
                                          ] [         0]
-[route1            ] [delay1            ] [delay[300]                          
                                          ] [       305]
-[route1            ] [to3               ] [log:baz                             
                                          ] [         2]
-[route1            ] [process1          ] [Processor@0x5e600dd5                
                                          ] [         0]
+Source                                   ID                             
Processor                                          Elapsed (ms)
+                                         route1/route1                  
from[timer://java?period=2s]                                  2
+                                         route1/setBody1                
setBody[bean[MyJavaRouteBuilder method:randomNumbe            0
+                                         route1/log1                    log    
                                                       1
+                                         route1/filter1                 
filter[simple{${body} < 30}]                                  0
+                                         route1/throwException1         
throwException[java.lang.IllegalArgumentException]            0
 
 Stacktrace
 
---------------------------------------------------------------------------------------------------------------------------------------
-java.lang.IllegalArgumentException: Forced to dump message history
-       at 
org.apache.camel.processor.MessageHistoryDumpRoutingTest$1$1.process(MessageHistoryDumpRoutingTest.java:52)
 ~[test-classes/:?]
-       at 
org.apache.camel.support.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:64)
 ~[classes/:?]
-       at 
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryState.run(RedeliveryErrorHandler.java:477)
 ~[classes/:?]
-       at 
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:186)
 ~[classes/:?]
-       at 
org.apache.camel.impl.engine.DefaultReactiveExecutor.schedule(DefaultReactiveExecutor.java:56)
 ~[classes/:?]
-       at 
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryState.lambda$run$1(RedeliveryErrorHandler.java:481)
 ~[classes/:?]
-       at 
org.apache.camel.processor.DelayProcessorSupport$ProcessCall$1.done(DelayProcessorSupport.java:77)
 [classes/:?]
-       at 
org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:63)
 [classes/:?]
-       at 
org.apache.camel.processor.DelayProcessorSupport$ProcessCall.run(DelayProcessorSupport.java:70)
 [classes/:?]
-       at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
[?:1.8.0_201]
-       at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
[?:1.8.0_201]
-       at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
 [?:1.8.0_201]
-       at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
 [?:1.8.0_201]
-       at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[?:1.8.0_201]
-       at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[?:1.8.0_201]
-       at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]
+
+java.lang.IllegalArgumentException: The number is too low
+       at 
sample.camel.MyJavaRouteBuilder.configure(MyJavaRouteBuilder.java:34) 
~[classes/:na]
+       at 
org.apache.camel.builder.RouteBuilder.checkInitialized(RouteBuilder.java:607) 
~[camel-core-model-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
+       at 
org.apache.camel.builder.RouteBuilder.configureRoutes(RouteBuilder.java:553) 
~[camel-core-model-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 ----
 
 When Message History is enabled then the full history is logged as shown 
above. Here we can see the full path
-the message has been routed, where it started from route1, called route2 and 
returned to route1 again, and so on.
+the message has been routed.
 
 When Message History is disabled (by default) then the error handler logs a 
brief history with the last node
 where the exception occurred as shown below:
 
 [source,text]
 ----
-2020-01-15 11:59:33,238 [read #3 - Delay] ERROR DefaultErrorHandler            
- Failed delivery for (MessageId: ID-davsclaus-pro-local-1579085972821-0-2 on 
ExchangeId: ID-davsclaus-pro-local-1579085972821-0-3). Exhausted after delivery 
attempt: 1 caught: java.lang.IllegalArgumentException: Forced to dump message 
history
+2022-01-06 12:12:32.072 ERROR 67704 --- [ - timer://java] 
o.a.c.p.e.DefaultErrorHandler            : Failed delivery for (MessageId: 
CD6D1B185A3706F-0000000000000004 on ExchangeId: 
CD6D1B185A3706F-0000000000000004). Exhausted after delivery attempt: 1 caught: 
java.lang.IllegalArgumentException: The number is too low
 
-Message History (complete message history is disabled)
+Message History (source location and message history is disabled)
 
---------------------------------------------------------------------------------------------------------------------------------------
-RouteId              ProcessorId          Processor                            
                                            Elapsed (ms)
-[route1            ] [route1            ] [from[seda://start]                  
                                          ] [       419]
+Source                                   ID                             
Processor                                          Elapsed (ms)
+                                         route1/route1                  
from[timer://java?period=2s]                                  2
        ...
-[route1            ] [process1          ] [Processor@0x229c6181                
                                          ] [         0]
+                                         route1/throwException1         
throwException[java.lang.IllegalArgumentException]            0
 
 Stacktrace
 
---------------------------------------------------------------------------------------------------------------------------------------
-java.lang.IllegalArgumentException: Forced to dump message history
-       at 
org.apache.camel.processor.MessageHistoryDumpRoutingTest$1$1.process(MessageHistoryDumpRoutingTest.java:52)
 ~[test-classes/:?]
-       at 
org.apache.camel.support.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:64)
 ~[classes/:?]
-       at 
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryState.run(RedeliveryErrorHandler.java:477)
 ~[classes/:?]
-       at 
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:186)
 ~[classes/:?]
-       at 
org.apache.camel.impl.engine.DefaultReactiveExecutor.schedule(DefaultReactiveExecutor.java:56)
 ~[classes/:?]
-       at 
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryState.lambda$run$1(RedeliveryErrorHandler.java:481)
 ~[classes/:?]
-       at 
org.apache.camel.processor.DelayProcessorSupport$ProcessCall$1.done(DelayProcessorSupport.java:77)
 [classes/:?]
-       at 
org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:63)
 [classes/:?]
-       at 
org.apache.camel.processor.DelayProcessorSupport$ProcessCall.run(DelayProcessorSupport.java:70)
 [classes/:?]
-       at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
[?:1.8.0_201]
-       at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
[?:1.8.0_201]
-       at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
 [?:1.8.0_201]
-       at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
 [?:1.8.0_201]
-       at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[?:1.8.0_201]
-       at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[?:1.8.0_201]
-       at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]
+
+java.lang.IllegalArgumentException: The number is too low
+       at 
sample.camel.MyJavaRouteBuilder.configure(MyJavaRouteBuilder.java:34) 
~[classes/:na]
+       at 
org.apache.camel.builder.RouteBuilder.checkInitialized(RouteBuilder.java:607) 
~[camel-core-model-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
+       at 
org.apache.camel.builder.RouteBuilder.configureRoutes(RouteBuilder.java:553) 
~[camel-core-model-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 ----
 
 Here you can see the Message History only outputs the input (route1) and the 
last step
-where the exception occurred (process1).
+where the exception occurred (throwException1).
+
+Notice that the source column is empty, because source location is not enabled.
+When enabled then, you can see exactly which source file and line number the 
message routed:
+
+[source,text]
+----
+2022-01-06 12:19:01.277 ERROR 67870 --- [ - timer://java] 
o.a.c.p.e.DefaultErrorHandler            : Failed delivery for (MessageId: 
37412D6F722F679-0000000000000003 on ExchangeId: 
37412D6F722F679-0000000000000003). Exhausted after delivery attempt: 1 caught: 
java.lang.IllegalArgumentException: The number is too low
+
+Message History
+---------------------------------------------------------------------------------------------------------------------------------------
+Source                                   ID                             
Processor                                          Elapsed (ms)
+MyJavaRouteBuilder:29                    route1/route1                  
from[timer://java?period=2s]                                 10
+MyJavaRouteBuilder:32                    route1/setBody1                
setBody[bean[MyJavaRouteBuilder method:randomNumbe            1
+MyJavaRouteBuilder:33                    route1/log1                    log    
                                                       1
+MyJavaRouteBuilder:34                    route1/filter1                 
filter[simple{${body} < 30}]                                  0
+MyJavaRouteBuilder:35                    route1/throwException1         
throwException[java.lang.IllegalArgumentException]            0
+
+Stacktrace
+---------------------------------------------------------------------------------------------------------------------------------------
+
+java.lang.IllegalArgumentException: The number is too low
+       at 
sample.camel.MyJavaRouteBuilder.configure(MyJavaRouteBuilder.java:34) 
~[classes/:na]
+       at 
org.apache.camel.builder.RouteBuilder.checkInitialized(RouteBuilder.java:607) 
~[camel-core-model-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
+       at 
org.apache.camel.builder.RouteBuilder.configureRoutes(RouteBuilder.java:553) 
~[camel-core-model-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
+----
+
+In this case we can see its the `MyJavaRouteBuilder` class on line 35 that is 
the problem.
 
 === Configuring route stack-trace from error handler
 

Reply via email to