davsclaus opened a new pull request, #26928:
URL: https://github.com/apache/camel/pull/26928

   Fixes [CAMEL-25047](https://issues.apache.org/jira/browse/CAMEL-25047): bugs 
in the reifiers found in a deep review. Each fix has a test in 
`ReifierEdgeCasesTest` that fails without it.
   
   1. **onException `useOriginalBody` fails unless `allowUseOriginalMessage` is 
turned on.** The reifier turned it on for `useOriginalMessage` but not for 
`useOriginalBody`, so the exchange failed with "AllowUseOriginalMessage is 
disabled".
   2. **The redelivery options of an onException reset the error handler's 
options to the defaults.** When an onException sets any redelivery option (such 
as `maximumRedeliveries`), every option it did not set was filled in with the 
model default (`redeliveryDelay` 1000, `logStackTrace` true, ...) instead of 
being inherited from the error handler, so 
`defaultErrorHandler().redeliveryDelay(0)` plus 
`onException(...).maximumRedeliveries(3)` waited 1 second per redelivery. The 
defaults came in with Camel 3.17 (error handler in the model); the error 
handler itself never needed them, as `RedeliveryPolicy` has the same field 
defaults.
   3. **`logName` of `defaultErrorHandler`/`deadLetterChannel` is ignored.** No 
reifier read it, so the XML/YAML attribute did nothing.
   4. **A disabled `multicast` or `pipeline` with a single output still runs.** 
With one output the processor is that output's channel, where the disabled flag 
is not checked at runtime.
   5. **An error handler with an unknown `executorServiceRef` fails with 
`NullPointerException`** instead of "ExecutorService x not found in registry". 
The dead letter channel also did not resolve a placeholder in the ref.
   6. **Placeholders are not resolved in the `executorService` of delay and 
throttle**, while split, multicast and others resolve them.
   7. **Placeholders are not resolved in `aggregationStrategyMethodName` of 
split, enrich, pollEnrich, aggregate and claimCheck** (multicast and recipient 
list resolve them), nor in the `retryWhileRef` of the dead letter channel.
   
   **Not changed (for a later look)**
   - interceptSendToEndpoint: the intercepted route id and from uri come from 
the first route that registered the intercept, and the callbacks of the other 
routes are never removed.
   - The load balancer and its children do not get ids and route ids, so 
`context.getProcessor(id)` does not find them.
   - doTry without doCatch or doFinally is accepted (the null check on the 
catch list is dead).
   - threads `keepAliveTime` is parsed as a duration (milliseconds) but used 
with `timeUnit` (seconds by default).
   
   2 changes behaviour and is in the 4.23 upgrade guide. The whole `camel-core` 
test suite passes (one flaky file test passed on rerun).
   
   _Claude Code on behalf of Claus Ibsen_
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to