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

Work on CAMEL-26751 started by shashank.
----------------------------------------
> camel-sanitizer - R1 still pending: warn about a step whose callback has not 
> come
> ---------------------------------------------------------------------------------
>
>                 Key: CAMEL-26751
>                 URL: https://issues.apache.org/jira/browse/CAMEL-26751
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-core
>            Reporter: shashank
>            Assignee: shashank
>            Priority: Major
>
> Step 6 of the order of work in the exchange sanitizer design 
> ({{design/exchange-sanitizer.adoc}}, CAMEL-26630): rule R1 "still pending", 
> on top of the {{camel-sanitizer}} module of CAMEL-26714.
> As in the design (R1, "Still pending"):
> * A call of a step whose callback has not come after 
> {{camel.sanitizer.pendingTimeout}} (default 60s) is a *warning*, not a 
> violation, as a slow endpoint looks the same. It is logged at WARN and never 
> fails a test.
> * Only the innermost pending call of an exchange is reported, timed from the 
> last call or callback of that exchange, so a long split or a 
> {{to("direct:...")}} that waits for its children is not. The copies that a 
> split, multicast, recipient list, enrich, kamelet, circuit breaker or 
> {{to("kamelet:...")}} step waits for count as the exchange they belong to 
> (they carry its id as their correlation id; other copies, such as the one a 
> seda producer queues, are exchanges of their own).
> * The warning names the exchange, route, step, the processor (the class of a 
> user's processor) and the endpoint, says whether {{process}} returned, threw 
> or has not returned yet (then with the stack of the thread still in it), and 
> lists the enclosing calls that wait for it. This is what the {{inflight}} 
> console cannot tell: which step's callback the exchange waits for, and 
> whether that step threw.
> * When the context stops, the calls still pending are listed.
> * The pending calls are kept in a bounded table that holds ids and names, not 
> the exchanges (10,000 calls; past that the oldest is dropped, counted, and 
> one WARN says the checks are incomplete). An exchange that is done (its unit 
> of work) is dropped, so a call that threw and that Camel handled is not 
> reported.
> * The new option is part of the {{SanitizerConfigurationProperties}} group of 
> camel-main; {{0}} turns the warning off.
> The design's validation for this step: the hangs of CAMEL-26575 (an 
> {{AggregationStrategy}} whose {{onCompletion}} throws in a multicast) and 
> CAMEL-26601 (a recipient producer that throws inside {{doTry}}), which R1 
> could not show, reported at the multicast and recipient list step with the 
> fixes reverted; and the camel-core suite with the CI switch quiet on main.
> _Filed with Claude Code on behalf of allthingssecurity._



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

Reply via email to