[ 
https://issues.apache.org/jira/browse/CAMEL-26908?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Work on CAMEL-26908 started by shashank.
----------------------------------------
> camel-core - an Error of an on completion skips the other on completions of 
> the exchange and the end of its unit of work
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-26908
>                 URL: https://issues.apache.org/jira/browse/CAMEL-26908
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>            Reporter: shashank
>            Assignee: shashank
>            Priority: Minor
>
> Follow-up of CAMEL-26741. {{UnitOfWorkHelper}} runs the on completions 
> ({{Synchronization}}) of an exchange when its unit of work is done, and their 
> route aware callbacks when the exchange enters or leaves a route. It catches 
> {{Exception}} around each call, "to ensure all synchronizations have a chance 
> to run", and logs it at WARN. An {{Error}} that is not a 
> {{VirtualMachineError}} (such as a {{NoClassDefFoundError}} of a client 
> library, or an {{AssertionError}}) thrown by one of them escapes instead:
> * the on completions after it do not run, such as the commit or rollback of 
> the consumer (the move of a file, the acknowledge of a message) or the 
> release of a resource;
> * {{DefaultUnitOfWork.done}} stops before it removes the exchange from the 
> inflight registry, fires the completed or failed event and releases a pooled 
> exchange, and {{UnitOfWorkHelper.doneUow}} (which also catches only 
> {{Exception}}) lets the {{Error}} through to the caller, so the exchange 
> stays in the inflight registry;
> * an {{Error}} of {{onBeforeRoute}} or {{onAfterRoute}} also skips the end of 
> the route: its inflight count (so a graceful shutdown waits for its timeout), 
> its route policies, and in the route that created the unit of work the unit 
> of work itself, so none of the on completions run.
> Expected: as for an exception, the {{Error}} is logged and ignored, so the 
> other on completions run and the unit of work ends; a {{VirtualMachineError}} 
> is left as before. The same for {{onBeforeRoute}} and {{onAfterRoute}} of a 
> {{SynchronizationRouteAware}}, and in {{doneUow}}.
> The advices of a route ({{RoutePolicyAdvice}}, {{AdviceIterator}}) have the 
> same gap and are covered by their own JIRA (link it when filed).
> Found while going through the follow-ups of CAMEL-26741; confirmed with tests 
> on the real classes.
> _Filed with Claude Code on behalf of allthingssecurity._



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to