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.