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)