You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Andrea Cosentino (Jira)" <ji...@apache.org> on 2026/08/04 09:21:00 UTC
[jira] [Created] (CAMEL-24343) camel-google-calendar: stream consumer can skip events and only reads the first page
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)