CalDAV problem with recurring events: Jolla -> Baikal -> Thunderbird -> Baikal -> Jolla
I have encountered reproducable problems, when syncing CalDAV events from Jolla (1.0.8.21, Tahkalampi) via Baikal (0.2.7) to Thunderbird (31.2.0) and back:
- the end time is equal to the start time (although the event should last 1 hour)
- daily recurrence for 3 days is lost
- the reminder "30 minutes before event" is lost
Steps to reproduce:
On Jolla GUI, create event:
- Event name: "Test recurring three times"
- Event location: empty
- Description: "Created on Jolla"
- Start date: 18.11.14
- Start time: 12:00:00
- End date: 18.11.14
- End time: 13:00:00
- Allday: No
- Recurring: Every day
- Recurrence end: 20.11.2014
- Reminder: 30 min before event
In Jolla db (/home/nemo/.local/share/system/privileged/Calendar/mkcal/db
):
CREATE TABLE Components(ComponentId INTEGER PRIMARY KEY AUTOINCREMENT, Notebook TEXT, Type TEXT, Summary TEXT, Category TEXT, DateStart INTEGER, DateStartLocal INTEGER, StartTimeZone TEXT, HasDueDate INTEGER, DateEndDue INTEGER, DateEndDueLocal INTEGER, EndDueTimeZone TEXT, Duration INTEGER, Classification INTEGER, Location TEXT, Description TEXT, Status INTEGER, GeoLatitude REAL, GeoLongitude REAL, Priority INTEGER, Resources TEXT, DateCreated INTEGER, DateStamp INTEGER, DateLastModified INTEGER, Sequence INTEGER, Comments TEXT, Attachments TEXT, Contact TEXT, InvitationStatus INTEGER, RecurId INTEGER, RecurIdLocal INTEGER, RecurIdTimeZone TEXT, RelatedTo TEXT, URL TEXT, UID TEXT, Transparency INTEGER, LocalOnly INTEGER, Percent INTEGER, DateCompleted INTEGER, DateCompletedLocal INTEGER, CompletedTimeZone TEXT, DateDeleted INTEGER, extra1 STRING, extra2 STRING, extra3 INTEGER); select * from components; 37|e0f9a123-1136-45d7-8b8f-3c0afb0d88e9|Event|Test recurring three times||1416308400|1416312000|Europe/Berlin|0|1416312000|1416315600|Europe/Berlin|0|0||Created on jolla|0|255.0|255.0|0||1416305021|1416305021|1416305021|0||||0|0|0|||urn:x-ical:8db2134e-7b77-4afb-87b5-8959ade43add|8db2134e-7b77-4afb-87b5-8959ade43add|0|0|0|0|0||0|||0
After sync from jolla to baikal in Baikal db:
CREATE TABLE calendarobjects ( id integer primary key asc, calendardata blob, uri text, calendarid integer, lastmodified integer , etag text, size integer, componenttype text, firstoccurence integer, lastoccurence integer); select * from calendarobjects; 15|BEGIN:VCALENDAR PRODID:-//K Desktop Environment//NONSGML libkcal 4.3//EN VERSION:2.0 X-KDE-ICAL-IMPLEMENTATION-VERSION:1.0 BEGIN:VTIMEZONE TZID:Europe/Berlin BEGIN:DAYLIGHT TZNAME:CEST TZOFFSETFROM:+0100 TZOFFSETTO:+0200 DTSTART:19810329T020000 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3 END:DAYLIGHT BEGIN:DAYLIGHT TZNAME:CEST TZOFFSETFROM:+0100 TZOFFSETTO:+0200 DTSTART:19160501T220000 RDATE;VALUE=DATE-TIME:19160501T220000 RDATE;VALUE=DATE-TIME:19170416T010000 RDATE;VALUE=DATE-TIME:19180415T010000 RDATE;VALUE=DATE-TIME:19400401T010000 RDATE;VALUE=DATE-TIME:19430329T010000 RDATE;VALUE=DATE-TIME:19440403T010000 RDATE;VALUE=DATE-TIME:19450402T010000 RDATE;VALUE=DATE-TIME:19460414T010000 RDATE;VALUE=DATE-TIME:19470407T020000 RDATE;VALUE=DATE-TIME:19480418T010000 RDATE;VALUE=DATE-TIME:19490410T010000 RDATE;VALUE=DATE-TIME:19800406T020000 END:DAYLIGHT BEGIN:STANDARD TZNAME:CET TZOFFSETFROM:+0200 TZOFFSETTO:+0100 DTSTART:19800928T030000 RRULE:FREQ=YEARLY;COUNT=16;BYDAY=-1SU;BYMONTH=9 END:STANDARD BEGIN:STANDARD TZNAME:CET TZOFFSETFROM:+0200 TZOFFSETTO:+0100 DTSTART:19961027T030000 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 END:STANDARD BEGIN:STANDARD TZNAME:CET TZOFFSETFROM:+0200 TZOFFSETTO:+0100 DTSTART:19161001T230000 RDATE;VALUE=DATE-TIME:19161001T230000 RDATE;VALUE=DATE-TIME:19170917T020000 RDATE;VALUE=DATE-TIME:19180916T020000 RDATE;VALUE=DATE-TIME:19421102T020000 RDATE;VALUE=DATE-TIME:19431004T020000 RDATE;VALUE=DATE-TIME:19441002T020000 RDATE;VALUE=DATE-TIME:19451118T020000 RDATE;VALUE=DATE-TIME:19461007T020000 RDATE;VALUE=DATE-TIME:19471005T020000 RDATE;VALUE=DATE-TIME:19481003T020000 RDATE;VALUE=DATE-TIME:19491002T020000 END:STANDARD BEGIN:DAYLIGHT TZNAME:CEMT TZOFFSETFROM:+0200 TZOFFSETTO:+0300 DTSTART:19450525T000000 RDATE;VALUE=DATE-TIME:19450525T000000 RDATE;VALUE=DATE-TIME:19470511T020000 END:DAYLIGHT BEGIN:DAYLIGHT TZNAME:CEST TZOFFSETFROM:+0300 TZOFFSETTO:+0200 DTSTART:19450925T000000 RDATE;VALUE=DATE-TIME:19450925T000000 RDATE;VALUE=DATE-TIME:19470630T000000 END:DAYLIGHT END:VTIMEZONE BEGIN:VEVENT DTSTAMP:20141118T100341Z CREATED:20141118T100341Z UID:8db2134e-7b77-4afb-87b5-8959ade43add LAST-MODIFIED:20141118T100341Z DESCRIPTION:Created on jolla SUMMARY:Test recurring three times RRULE:FREQ=DAILY;UNTIL=20141220T110000Z DTSTART;TZID=Europe/Berlin:20141118T120000 DTEND;TZID=Europe/Berlin:20141118T130000 TRANSP:OPAQUE BEGIN:VALARM ACTION: TRIGGER;VALUE=DURATION:-PT30M X-KDE-KCALCORE-ENABLED:TRUE END:VALARM END:VEVENT END:VCALENDAR |8db2134e-7b77-4afb-87b5-8959ade43add.ics|1|1416305124|342ab2e2bab3d6f722f551245f418278|2571|VEVENT|1416308400|1419076800
And after sync from baikal to thunderbird in Thunderbird GUI:
Click open event
and Edit all occurences
. Check event data: Everything correctly synced from jolla to thunderbird, except reminder. This one is gone. I am no CalDAV export, so I don't know if this is a jolla or a thunderbird problem.
Now change the description of the event from "Created on jolla" to "Created on jolla, edit with thunderbird".
And after sync back from thunderbird to baikal, you can find in Baikal db:
CREATE TABLE calendarobjects ( id integer primary key asc, calendardata blob, uri text, calendarid integer, lastmodified integer , etag text, size integer, componenttype text, firstoccurence integer, lastoccurence integer); select * from calendarobjects; 15|BEGIN:VCALENDAR PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Berlin X-LIC-LOCATION:Europe/Berlin BEGIN:DAYLIGHT TZOFFSETFROM:+0100 TZOFFSETTO:+0200 TZNAME:CEST DTSTART:19700329T020000 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3 END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:+0200 TZOFFSETTO:+0100 TZNAME:CET DTSTART:19701025T030000 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 END:STANDARD END:VTIMEZONE BEGIN:VEVENT CREATED:20141118T100341Z LAST-MODIFIED:20141118T102957Z DTSTAMP:20141118T102957Z UID:8db2134e-7b77-4afb-87b5-8959ade43add SUMMARY:Test recurring three times RRULE:FREQ=DAILY;UNTIL=20141220T110000Z DTSTART;TZID=Europe/Berlin:20141118T120000 DTEND;TZID=Europe/Berlin:20141118T130000 DESCRIPTION:Created on jolla\, edit with thunderbird TRANSP:OPAQUE X-MOZ-GENERATION:1 END:VEVENT END:VCALENDAR |8db2134e-7b77-4afb-87b5-8959ade43add.ics|1|1416306598|a300ed4071ec65049a9c028ea8b4d81b|880|VEVENT|1416308400|1419076800
And if you sync further from baikal to jolla, you can find in Jolla Db:
CREATE TABLE Components(ComponentId INTEGER PRIMARY KEY AUTOINCREMENT, Notebook TEXT, Type TEXT, Summary TEXT, Category TEXT, DateStart INTEGER, DateStartLocal INTEGER, StartTimeZone TEXT, HasDueDate INTEGER, DateEndDue INTEGER, DateEndDueLocal INTEGER, EndDueTimeZone TEXT, Duration INTEGER, Classification INTEGER, Location TEXT, Description TEXT, Status INTEGER, GeoLatitude REAL, GeoLongitude REAL, Priority INTEGER, Resources TEXT, DateCreated INTEGER, DateStamp INTEGER, DateLastModified INTEGER, Sequence INTEGER, Comments TEXT, Attachments TEXT, Contact TEXT, InvitationStatus INTEGER, RecurId INTEGER, RecurIdLocal INTEGER, RecurIdTimeZone TEXT, RelatedTo TEXT, URL TEXT, UID TEXT, Transparency INTEGER, LocalOnly INTEGER, Percent INTEGER, DateCompleted INTEGER, DateCompletedLocal INTEGER, CompletedTimeZone TEXT, DateDeleted INTEGER, extra1 STRING, extra2 STRING, extra3 INTEGER); select * from components; 37|e0f9a123-1136-45d7-8b8f-3c0afb0d88e9|Event|Test recurring three times||1416308400|1416312000|Europe/Berlin|0|1416308400|1416312000|Europe/Berlin|0|0||Created on jolla, edit with thunderbird|0|255.0|255.0|0||1416305021|1416306787|1416306787|0||||0|0|0|||urn:x-ical:8db2134e-7b77-4afb-87b5-8959ade43add|8db2134e-7b77-4afb-87b5-8959ade43add|0|0||0|0|0|0|||0
And in the Jolla GUI, you can see that all correct, except:
- "end time" is now "12:00", should be "13:00"
- "recurring" is now "Once", should be "Every Day"
- "recurrence end" is no more shown (guess, since no recurrence)
I am no CalDAV expert, so I can't say where the error exactly happens. But I hope, providing as much debug info as possible, the Jolla CalDAV experts can find out where something goes wrong. I can only say: Creating an event on jolla, syncing to thunderbird, changing the description there and syncing it back to jolla should not lead to the three data-changes mentioned above.