Summary | Issues when synchronizing repeated events spanning DST change date |
Queue | Synchronization |
Queue Version | Git master |
Type | Bug |
State | Assigned |
Priority | 1. Low |
Owners | jan (at) horde (dot) org |
Requester | Nikolaus (at) rath (dot) org |
Created | 03/27/2011 (5162 days ago) |
Due | |
Updated | 11/30/2011 (4914 days ago) |
Assigned | 07/30/2011 (5037 days ago) |
Resolved | |
Milestone | |
Patch | No |
That works for single events, but not for repeating events over the
DST change date.
The Android client stores it locally in UTC timezone (without any DST rule).
The Horde server should send the VCALENDAR information for the given
timezone.
State ⇒ Assigned
Version ⇒ Git master
however when using "events" instead of "calendar" as server path
name. When using "calendar", the format (VCALENDAR 2.0) is correctly
recognized and available.
But the devInf only shows "calendar", so by definition "events" is not
assigned to any
calendar type and can't be assigned by the client. That's what in fact
happens.
So these two database names are NOT equivalent.
New Attachment: select.txt
SELECT * FROM kronolith_events WHERE event_title = "Repeating One"
however when using "events" instead of "calendar" as server path
name. When using "calendar", the format (VCALENDAR 2.0) is correctly
recognized and available.
steps to generate complete SyncML debugging information.
however when using "events" instead of "calendar" as server path
name. When using "calendar", the format (VCALENDAR 2.0) is correctly
recognized and available.
in the RRULE
This might be side effect of 2) as there is no TZ info (see red
DTSTART/RRULE)
i.e. they are not unique at all. To work around that, we always ignore
UIDs sent from clients, and don't sent them back to clients either.
But he is right, this will of course break attributes like
RECURRENCE-ID. There is no easy way around this though.
correct.
This has no negative effect on client's side, but it's not ok that way.
same and not an exception of
something defined in the RRULE. They do not hamper the Synthesis
client however.
anything about that. EXDATEs are generated from recurrence exceptions
stored in the calendar. Whether they actually match any of the
recurrences is not validated and not necessary either.
there a specific SQL query you'd like me to execute?
SELECT * FROM kronolith_events WHERE event_title = "Repeating One"
Here are some answers from Beat. They refer to the following message:
BEGIN:VCALENDAR
VERSION:2.0
X-WR-CALNAME:gerti's Calendar
PRODID:-//The Horde Project//Horde_iCalendar
Library\, Horde 3.3.8//EN
METHOD:PUBLISH
BEGIN:VEVENT
DTSTART:20110301T010000Z
DTEND:20110301T020000Z
DTSTAMP:20110327T142133Z
CREATED:20110327T142029Z
LAST-MODIFIED:20110327T142029Z
SUMMARY:Repeating One
ORGANIZER;CN=gerti:mailto:gerti
CLASS:PUBLIC
STATUS:CONFIRMED
TRANSP:OPAQUE
RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=MO;UNTIL=20110505T035959Z
EXDATE:20110328T000000Z
EXDATE:20110328T000000Z
END:VEVENT
END:VCALENDAR
not offer this format. The Synthesis client is accepting this
(because it's clear what the server is intending to do), but it's not
really according the SyncML standard. The Horde server should offer
VCALENDAR 2.0.
however when using "events" instead of "calendar" as server path name.
When using "calendar", the format (VCALENDAR 2.0) is correctly
recognized and available.
However the contents of the devInf are very poor (no available field
info and so on).
Monday (as written in the RRULE)
It would be Monday in the local time zone, but no such information is sent.
the RRULE
This might be side effect of 2) as there is no TZ info (see red DTSTART/RRULE)
client will add one and send it
back with the next sync. That's why the client sends back even
without any changes.
exchanged in the SyncML protocol level.
RECURRENCE-ID can be implemented
This has nothing to do with SyncML protocol level. We consider a
workaround however for one of the next releases for events without
UID, to avoid sending it back at the next sync.
VCALENDAR 1.0), that's why the Synthesis is sending back the events
in floating format as VCALENDAR 1.0 which has several limitations for
EXDATES.
data and of course UTC dates too.
correct.
This has no negative effect on client's side, but it's not ok that way.
and not an exception of
something defined in the RRULE. They do not hamper the Synthesis
client however.
a specific SQL query you'd like me to execute?
doesn't have any exceptions.
"How exactly does this event look like in the database?"
the raw data from the SQL database. In that case I'll need your help on how to
find the data for this specific event in the DB. You probably don't
want me to send
you a dump of the entire horde database... or do you?
now you completely lost me. I guess those citations are meant to tell me
something, but they don't. I apologize if I can't quite live up to the
standard that you expect.
doesn't have any exceptions.
"How exactly does this event look like in the database?"
without exceptions.
correct. This has no negative effect on client's side, but it's not ok
that way."
doesn't have any exceptions.
Not sure why you bring up exceptions, the problems happen for events
without exceptions.
doesn't have any exceptions.
New Attachment: event.jpg
got modified when Android synced its version of it back to the server.
However, I can reproduce this problem at will, so I have attached a
screenshot of a different event that triggers the same problem.
I have asked Beat Forster from Synthesis to respond to your other
comments, so hopefully he will respond here. Otherwise I'd just be
relaying information.
State ⇒ Feedback
not offer this format. The Synthesis client is accepting this
(because it's clear what the server is intending to do), but it's
not really according the SyncML standard. The Horde server should
offer VCALENDAR 2.0.
That works for single events, but not for repeating events over the
DST change date.
The Android client stores it locally in UTC timezone (without any DST rule).
The Horde server should send the VCALENDAR information for the given
timezone.
ticket #7156.on Monday (as written in the RRULE)
It would be Monday in the local time zone, but no such information is sent.
client will add one and send it
back with the next sync. That's why the client sends back even
without any changes.
exchanged in the SyncML protocol level.
VCALENDAR 1.0), that's why the Synthesis is sending back the events
in floating format as VCALENDAR 1.0 which has several limitations
for EXDATES.
data and of course UTC dates too.
not correct.
This has no negative effect on client's side, but it's not ok that way.
Priority ⇒ 1. Low
State ⇒ Unconfirmed
Patch ⇒ No
Milestone ⇒
Summary ⇒ Issues when synchronizing repeated events spanning DST change date
Type ⇒ Bug
Queue ⇒ Synchronization
synchonizing over SyncML (set to repeat on Monday, 8pm from Feb 28th
to May, 3rd):
BEGIN:VCALENDAR
VERSION:2.0
X-WR-CALNAME:gerti's Calendar
PRODID:-//The Horde Project//Horde_iCalendar
Library\, Horde 3.3.8//EN
METHOD:PUBLISH
BEGIN:VEVENT
DTSTART:20110301T010000Z
DTEND:20110301T020000Z
DTSTAMP:20110327T142133Z
CREATED:20110327T142029Z
LAST-MODIFIED:20110327T142029Z
SUMMARY:Repeating One
ORGANIZER;CN=gerti:mailto:gerti
CLASS:PUBLIC
STATUS:CONFIRMED
TRANSP:OPAQUE
RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=MO;UNTIL=20110505T035959Z
EXDATE:20110328T000000Z
EXDATE:20110328T000000Z
END:VEVENT
END:VCALENDAR
The Synthesis Android SyncML client is not able to handle this. Upon
reporting this as a bug there, I was told that the problem is with
horde. Specifically,
1) The Horde server is sending VCALENDAR 2.0 format, though it does
not offer this format. The Synthesis client is accepting this (because
it's clear what the server is intending to do), but it's not really
according the SyncML standard. The Horde server should offer VCALENDAR
2.0.
2) The Horde server is sending it as UTC without any timezone information.
That works for single events, but not for repeating events over the
DST change date.
The Android client stores it locally in UTC timezone (without any DST rule).
The Horde server should send the VCALENDAR information for the given timezone.
3) The event is on Tuesday according to the given information, not on
Monday (as written in the RRULE)
It would be Monday in the local time zone, but no such information is sent.
4) The Horde server is not sending a UID, that's why the Synthesis
client will add one and send it
back with the next sync. That's why the client sends back even without
any changes.
5) For sending back the Horde server does not allow UTC (and only
VCALENDAR 1.0), that's why the Synthesis is sending back the events in
floating format as VCALENDAR 1.0 which has several limitations for
EXDATES.
6) The Horde server is sending two times the same EXDATE which is not correct.
This has no negative effect on client's side, but it's not ok that way.
Let me know if there is anything I can do to help getting this
resolved. Tested Horde version is 3.3.8, kronolith 2.3.4.