Andrea Cosentino created CAMEL-24343:
----------------------------------------
Summary: camel-google-calendar: stream consumer can skip events
and only reads the first page
Key: CAMEL-24343
URL: https://issues.apache.org/jira/browse/CAMEL-24343
Project: Camel
Issue Type: Bug
Components: camel-google-calendar
Reporter: Andrea Cosentino
Assignee: Andrea Cosentino
{{GoogleCalendarStreamConsumer}} can silently skip events when
{{considerLastUpdate=true}}:
{code:java}
// GoogleCalendarStreamConsumer.java:154-167
if (!dateList.isEmpty()) {
...
calendar.add(java.util.Calendar.SECOND, 1);
finalLastUpdate = calendar.getTime();
} else {
finalLastUpdate = new Date();
}
{code}
* On a poll that returns no events the cursor is advanced to the local {{new
Date()}}, so any event updated between the previous poll and "now" (including
clock-skew between the local machine and Google) is never delivered.
* On a non-empty poll the cursor is set to the newest event's update time plus
one second, so events updated in that same second are skipped.
In addition, the non-sync branch never follows the page token:
{code:java}
// GoogleCalendarStreamConsumer.java:134
c = request.setOrderBy("updated").execute();
{code}
Only the first page (maxResults, default 10) is ever consumed, and because the
cursor still advances the remainder is dropped.
Two smaller issues in the same class:
* The 410 (invalid sync token) handler recurses into itself, {{return poll();}}
at :117, with no bound.
* {{c.getItems()}} is dereferenced without a null check at :123 and :138.
Found during a source audit of the {{components/camel-google}} module family
against main @ c3b01310be15.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)