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

Claus Ibsen resolved CAMEL-26557.
---------------------------------
    Resolution: Fixed

Fixed by https://github.com/apache/camel/pull/29129 (merged to main for 4.24.0).

_Claude Code on behalf of davsclaus_

> camel-util - BoundedExecutorService: a task of the executor runs nested work 
> inline with the Abort policy too
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-26557
>                 URL: https://issues.apache.org/jira/browse/CAMEL-26557
>             Project: Camel
>          Issue Type: Sub-task
>            Reporter: Adriano Machado
>            Assignee: Adriano Machado
>            Priority: Major
>             Fix For: 4.24.0
>
>
> With virtual threads, a parallel split or multicast whose thread pool profile 
> uses the Abort rejected policy runs one item fewer at a time than 
> maxQueueSize allows.
> The dispatcher task of the split runs in the BoundedExecutorService and 
> submits itself again for each item while it holds a permit. CAMEL\-26478 made 
> a task of the executor run nested work inline when no permit is free, but 
> only with the CallerRuns and Block policies. With Abort the dispatcher still 
> waits for a permit while holding one, so one permit is always taken by the 
> dispatcher. With maxQueueSize=1 it waits keepAliveTime for the permit it 
> holds itself and is then rejected.
> Measured with 10 items of 300 ms, peak items running at once for maxQueueSize 
> 1/2/3:
> \- CallerRuns and Block: 1/2/3
> \- Abort: rejected/1/2
> SplitterParallelAsyncProcessorIssueTest fails in virtual mode because of this 
> \(5.2 s instead of 2.7 s\), and also because it counts distinct thread names, 
> which grow with the number of tasks when every task gets a new virtual thread.
> Proposed fix: a task of the executor runs nested work inline with the Abort 
> policy too. A submitter outside the executor still waits and is rejected as 
> before, so backpressure does not change. The splitter test measures the items 
> running at once instead of thread names.
> _Claude Code on behalf of Adriano Machado \(@ammachado\)_
> _This was generated by an AI agent and may contain inaccuracies. Please 
> verify before relying on it._



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

Reply via email to