If I add an exception to a recurring event (i.e. make one recurrence a bit longer than the rest), the google resource stops syncing. I assume this problem is because the resource assumes UID's are unique (which they mostly are but not always). Recurrence exceptions are implemented as separate event with the same UID as the original recurring event with an additional RecurrenceID to identify the specific occurrence for which the exception applies. This means the UID is not unique, the UID+RecurrenceID pair is though (in some cases SEQUENCE has to be considered as well to guarantee uniqueness, but here that shouldn't be a problem I think). Note that this behavior is RFC compliant, so it's indeed a bug in the resource. Also note that kcalcore doesn't really support exceptions yet (AFAIK), so you'll have to use some kind of hack. I'll have to look into that for kolab as well. Reproducible: Always
The same happens with iCalenar files: If I move an event using the Mozilla calendar application (Icedove+iceowl on Debian), the original recurring event and the exception event share the same UID. Which of them shows in Akonadi is random (latest wins?) Looks like the _unique_-ID is not unique: <https://tools.ietf.org/html/rfc5545#section-3.8.4.4>
The problem is partially in the Akonadi resource and partially in KCalCore that does not handle non-unique UID. I have some patch/workaround ready, but I want to do some more testing first.
Git commit dc1d1e496990b7b65fb422f71bfe82ac751a93e4 by Dan Vrátil. Committed on 28/02/2013 at 13:19. Pushed by dvratil into branch 'master'. Port Akonadi resources for Google services to LibKGAPI2 Resources now use the new job-based API, which is more flexible and solves many problems that were very hard to fix with the previous API. Lot of duplicated code has been factored out and moved to /resources/google/common. Featurewise, Google Contacts resources now fully supports contacts groups and fetching contacts photos has been notably improved, Google Calendar resource has improved tasks handling and both resources have better status and progress reporting and should be faster and more stable. Related: bug 301647, bug 309320, bug 310741, bug 281695, bug 294639 FIXED-IN: 4.11 DIGEST: M +1 -1 CMakeLists.txt M +1 -1 resources/google/CMakeLists.txt M +5 -10 resources/google/calendar/CMakeLists.txt D +0 -102 resources/google/calendar/calendareditor.cpp D +0 -55 resources/google/calendar/calendareditor.h M +616 -519 resources/google/calendar/calendarresource.cpp M +35 -78 resources/google/calendar/calendarresource.h M +57 -50 resources/google/calendar/defaultreminderattribute.cpp M +17 -20 resources/google/calendar/defaultreminderattribute.h D +0 -298 resources/google/calendar/resource_events.cpp M +0 -166 resources/google/calendar/resource_tasks.cpp M +2 -22 resources/google/calendar/settings.cpp M +3 -23 resources/google/calendar/settings.h M +128 -731 resources/google/calendar/settingsdialog.cpp M +18 -51 resources/google/calendar/settingsdialog.h D +0 -52 resources/google/calendar/tasklisteditor.cpp D +0 -49 resources/google/calendar/tasklisteditor.h D +0 -128 resources/google/calendar/ui/calendar_editor.ui D +0 -204 resources/google/calendar/ui/settingsdialog.ui D +0 -85 resources/google/calendar/ui/tasklist_editor.ui A +244 -0 resources/google/common/googleaccountmanager.cpp [License: GPL (v2+)] A +67 -0 resources/google/common/googleaccountmanager.h [License: GPL (v2+)] A +275 -0 resources/google/common/googleresource.cpp [License: GPL (v3+)] A +109 -0 resources/google/common/googleresource.h [License: GPL (v3+)] A +55 -0 resources/google/common/googlesettings.cpp [License: GPL (v3+)] A +58 -0 resources/google/common/googlesettings.h [License: GPL (v3+)] A +213 -0 resources/google/common/googlesettingsdialog.cpp [License: GPL (v3+)] A +77 -0 resources/google/common/googlesettingsdialog.h [License: GPL (v3+)] M +4 -2 resources/google/contacts/CMakeLists.txt M +373 -593 resources/google/contacts/contactsresource.cpp M +31 -69 resources/google/contacts/contactsresource.h M +3 -24 resources/google/contacts/settings.cpp M +3 -23 resources/google/contacts/settings.h M +19 -128 resources/google/contacts/settingsdialog.cpp M +5 -23 resources/google/contacts/settingsdialog.h D +0 -38 resources/google/contacts/ui/groupeditor.ui D +0 -61 resources/google/contacts/ui/settingsdialog.ui http://commits.kde.org/kdepim-runtime/dc1d1e496990b7b65fb422f71bfe82ac751a93e4