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)