Aaron Whiteside created CAMEL-9763:
--------------------------------------

             Summary: onCompletion() removes all evidence of why an exchange 
failed.
                 Key: CAMEL-9763
                 URL: https://issues.apache.org/jira/browse/CAMEL-9763
             Project: Camel
          Issue Type: Improvement
          Components: camel-core
    Affects Versions: 2.16.2
            Reporter: Aaron Whiteside


onCompletion() removes all evidence of why an exchange failed. This makes it 
impossible to use the routing DSL/XML's onCompletion processing for error 
conditions where one needs to know the cause of the error.

OnCompletionSynchronizationAfterConsumer::onFailure() and 
OnCompletionProcessor::doProcess() remove Exchange.EXCEPTION_CAUGHT with 
comments to say this is to allow the exchange to be processed successfully..

I compare this to the behavior of the onException()'s CatchProcessor::process() 
where Exchange.EXCEPTION_CAUGHT is not removed before being passed on to the 
child (processor) for handling.

Further this behavior is not documented on the wiki.

I would propose that onCompletion() maintain the fault/cause of the error just 
like the onException() construct does.

I can understand why it removes other things that may cause issues, but not 
quite the Exchange.EXCEPTION_CAUGHT.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to