davsclaus opened a new pull request, #24822: URL: https://github.com/apache/camel/pull/24822
## Summary - Fix race condition in `MulticastTask.timeout()` where `tryLock()` silently drops the timeout when the aggregation lock is held, causing the exchange to hang forever - Change `timeout()` to use `lock.lock()` instead of `tryLock()` — the timeout is a one-shot scheduled task that runs on a dedicated executor, so blocking until the lock is available is safe and correct - Add `done.get()` guard after acquiring the lock to skip timeout handling if the multicast already completed normally - Add reproducer test that makes the race deterministic by using a slow aggregation strategy that holds the lock while the timeout fires The bug was introduced in CAMEL-16103 (2021) when `tryLock()` was correctly applied to `aggregate()` (called repeatedly, safe to skip) but also incorrectly applied to `timeout()` (called once, never retried). The fix affects Multicast, Split, and RecipientList EIPs since they all share `MulticastProcessor`. _Claude Code on behalf of davsclaus_ Co-Authored-By: Claude Opus 4.6 <[email protected]> -- 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]
