[ 
https://issues.apache.org/jira/browse/CAMEL-25806?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18129816#comment-18129816
 ] 

Claus Ibsen commented on CAMEL-25806:
-------------------------------------

Merged via https://github.com/apache/camel/pull/28198

_Claude Code on behalf of davsclaus_

> camel-jira - the newIssues consumer silently skips the older issues when more 
> than maxResults issues are created between two polls
> ----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-25806
>                 URL: https://issues.apache.org/jira/browse/CAMEL-25806
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-jira
>            Reporter: shashank
>            Assignee: shashank
>            Priority: Major
>             Fix For: 4.24.0
>
>
> {{NewIssuesConsumer.getNewIssues}} (main 7aae27315946, lines 131-157) 
> searches for {{created > "<minute of the latest issue>" AND <jql> ORDER BY 
> created DESC}} through {{AbstractJiraConsumer.getIssues(jql)}}, which stops 
> paging as soon as it holds {{maxResults}} issues (default 50; {{issues.size() 
> >= maxResults}}, line 107). The consumer then makes the first (newest) issue 
> of the answer its {{latestIssue}}:
> {code:java}
> Queue<Issue> issues = getIssues(jqlFilter);
> ...
> latestIssue = issues.peek();
> {code}
> So when more than {{maxResults}} issues were created since the previous poll, 
> the poll routes the newest {{maxResults}} of them, and the next poll asks 
> only for issues created after the newest one: the older ones are never 
> returned again. Nothing is logged. This happens with a burst of new issues (a 
> CSV import, a bulk clone, an automation rule) and, more often, at the first 
> poll after Jira was unreachable or the polls failed for a while: all but the 
> newest 50 issues of the outage are lost. The documentation says the consumer 
> retrieves the new issues after the route is started; the option 
> {{maxResults}} is described as "Max number of issues to search for", not as a 
> limit that drops the rest.
> *Fix*: when there is a latest issue, the poll reads every page of that search 
> ({{maxResults}}, capped at 50, is the page size); the startup search and the 
> other consumers are not changed. Doc note in the component page, upgrade note 
> in the 4.24 guide (a poll can now route more than {{maxResults}} issues).
> *Tests*: new {{NewIssuesConsumerMoreThanMaxResultsTest}} (mocked 
> {{SearchRestClient}} that pages like the Jira search: 60 issues created after 
> the latest issue at startup, default {{maxResults}}). Fails on main: 
> {{mock://result Received message count. Expected: <60> but was: <50>}}; 
> passes with the fix. camel-jira unit tests: 60 run, 0 failures (the existing 
> tests of the order and the pagination of new issues are unchanged).
> *How it was found*: a Z3 model of the newIssues cursor over several polls 
> (issues arrive between polls; the poll keeps the newest M; the cursor moves 
> to the newest): "every issue is routed" holds with all pages read (no 
> counterexample), and violated on main for every M as soon as M+1 issues 
> arrive between two polls (N=51, M=50, one poll). Then the JUnit test above.
> *Affected*: main, camel-4.23.x, camel-4.22.x, camel-4.18.x and camel-4.14.x 
> (same {{getNewIssues}} and the same cut in {{getIssues}}; read, not run).
> _Filed with Claude Code on behalf of allthingssecurity._



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to