Skip to content

fix(google): write events via events.import instead of insert#403

Merged
ridafkih merged 1 commit into
mainfrom
fix/google-conflict-resolution-deleted-events
Jun 2, 2026
Merged

fix(google): write events via events.import instead of insert#403
ridafkih merged 1 commit into
mainfrom
fix/google-conflict-resolution-deleted-events

Conversation

@ridafkih

@ridafkih ridafkih commented Jun 2, 2026

Copy link
Copy Markdown
Owner

No description provided.

Comment thread packages/calendar/src/providers/google/destination/provider.ts
Comment thread packages/calendar/src/providers/google/destination/provider.ts
events.insert enforces iCalUID uniqueness and 409s when the UID already exists.
The old lookup -> delete -> re-insert conflict path left two classes of events
stuck failing every sync cycle:

- Tombstones: a deleted event retains its iCalUID, so insert keeps 409ing while
  the event is no longer returned by events.list (even with showDeleted), so the
  resolver could neither find nor delete it.
- Already-deleted events returned 410 on the conflict delete, treated as failure.

Make events.import the destination write path. It upserts by iCalUID, so
re-pushing an existing event updates it with no 409 and no separate conflict
resolution. Also treat 410 like 404 in the delete path (both mean already gone).

NOTE: import's upsert-by-iCalUID behaviour (especially resurrecting deleted /
tombstoned UIDs) is not documented by Google; validate against the live API
before rollout.
@ridafkih ridafkih force-pushed the fix/google-conflict-resolution-deleted-events branch from f7a2cb4 to 5c18d47 Compare June 2, 2026 20:52
@ridafkih ridafkih merged commit 6b50aa2 into main Jun 2, 2026
4 checks passed
@ridafkih ridafkih deleted the fix/google-conflict-resolution-deleted-events branch June 2, 2026 20:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant