Hello, 

We are using "consumer.bridgeErrorHandler=true" in our route, so that if
there's an exception during picking up of files, the Camel Error Handler can
deal with it. 

It appears from the documentation and code snippet at:
http://camel.apache.org/file2.html (Using consumer.bridgeErrorHandler
section) that if there's an error picking up files, the "onException" clause
will be invoked and will continue to execute the ".to("mock:error") clause.

However, in our case, the "onException" clause is invoked, however the ".to"
clause isn't. Here's how our code looks like:

      onException(SomeException.class).process(new Processor()
      {
         @Override
         public void process(Exchange exchange)
         {
         //Do some logging, processing etc. 
         }
      }).to("direct:sendEmail");

So, in the above code the ".to("direct:sendEmail")" part is never invoked. 

While I was debugging this, I found out that in
BridgeExceptionHandlerToErrorHandler.java#handleException(String message,
Exchange exchange, Throwable exception), Exchange.REDELIVERY_EXHAUSTED is
set to true on Exchange:
       // and mark as redelivery exhausted as we cannot do redeliveries
        exchange.setProperty(Exchange.REDELIVERY_EXHAUSTED, Boolean.TRUE);

This causes this exchange to get marked as "exhausted" in
RedeliveryErrorHandler.java#processErrorHandler(final Exchange exchange,
final AsyncCallback callback, final RedeliveryData data) and the
".to("direct:sendEmail")" part of the route is never processed. 

This isn't compliant with the documentation. 

So, the question is: do we need to set another property on the route to
execute the complete route? Currently, we are just removing
"Exchange.REDELIVERY_EXHAUSTED" from the exchange in our onException clause

      onException(SomeException.class).process(new Processor()
      {
         @Override
         public void process(Exchange exchange)
         { 
             exchange.getProperties().remove(Exchange.REDELIVERY_EXHAUSTED);

         }
      }).to("direct:sendEmail");


 






--
View this message in context: 
http://camel.465427.n5.nabble.com/Using-consumer-bridgeErrorHandler-won-t-allow-onException-route-to-execute-completely-tp5750507.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to