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]

Reply via email to