6.0.0-git
2018-12-15

[#9726] Issues when synchronizing repeated events spanning DST change date
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 2011-03-27 (2820 days ago)
Due
Updated 2011-11-30 (2572 days ago)
Assigned 2011-07-30 (2695 days ago)
Resolved
Milestone
Patch No

History
2011-11-30 17:05:09 Jan Schneider Comment #14 Reply to this comment
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.
This has been implemented for Kronolith 3.1/4.0.
2011-07-30 12:13:15 Jan Schneider Assigned to Jan Schneider
State ⇒ Assigned
Version ⇒ Git master
 
2011-04-01 16:56:09 Nikolaus (at) rath (dot) org Comment #13 Reply to this comment
I'm correcting this. The Horde server is not returning an error
however when using "events" instead of "calendar" as server path
name. When using "calendar", the format (VCALENDAR 2.0) is correctly
recognized and available.
It should work fine with both "events" and "calendar" since they are aliases.
It might be that the server answers the same way for "events" and "calendar".
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.
2011-04-01 15:50:29 Nikolaus (at) rath (dot) org Comment #12
New Attachment: select.txt Download
Reply to this comment
I'm correcting this. The Horde server is not returning an error
Try something like:
SELECT * FROM kronolith_events WHERE event_title = "Repeating One"
Result is attached.
2011-03-31 15:26:40 Jan Schneider Comment #11 Reply to this comment
I'm correcting this. The Horde server is not returning an error
however when using "events" instead of "calendar" as server path
name. When using "calendar", the format (VCALENDAR 2.0) is correctly
recognized and available.
It should work fine with both "events" and "calendar" since they are aliases.
Please read http://wiki.horde.org/SyncMLProblemReport and follow the 
steps to generate complete SyncML debugging information.
2011-03-31 15:05:16 Jan Schneider Comment #10 Reply to this comment
I'm correcting this. The Horde server is not returning an error 
however when using "events" instead of "calendar" as server path 
name. When using "calendar", the format (VCALENDAR 2.0) is correctly 
recognized and available.
It should work fine with both "events" and "calendar" since they are aliases.
DTSTART is 1-Mar-2011, which was a TUESDAY, not a MONDAY as written 
in the RRULE
This might be side effect of 2) as there is no TZ info (see red 
DTSTART/RRULE)
Yes, could be side-effect.

[Show Quoted Text - 11 lines]
The problem with UIDs is that some clients do not generate valid UIDs, 
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.
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.
The 2 EXDATES (in red) are completely wrong, they are 2 times the 
same and not an exception of
something defined in the RRULE. They do not hamper the Synthesis 
client however.
Like I said, I need the event details from the database to say 
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.
How exactly does this event look like in the database?
Please tell me how to retrieve the information that you want. Is 
there a specific SQL query you'd like me to execute?
Try something like:
SELECT * FROM kronolith_events WHERE event_title = "Repeating One"
2011-03-31 14:41:30 Nikolaus (at) rath (dot) org Comment #9 Reply to this comment
Hi,

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
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.
What makes them do those claims? They are wrong.
I'm correcting this. The Horde server is not returning an error 
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).
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.
Sorry, I don't understand what you mean.
DTSTART is 1-Mar-2011, which was a TUESDAY, not a MONDAY as written in 
the RRULE
This might be side effect of 2) as there is no TZ info (see red DTSTART/RRULE)
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.
UIDs are not supposed to be part of the iCalendar data. UIDs are 
exchanged in the SyncML protocol level.
UIDs are definitively part of iCalendar 2.0, as only with them 
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.
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.
No idea how you come to that conclusion. Horde accepts 1.0 and 2.0 
data and of course UTC dates too.
(Resolved when using "calendar" instead of "events")
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.
The 2 EXDATES (in red) are completely wrong, they are 2 times the same 
and not an exception of
something defined in the RRULE. They do not hamper the Synthesis 
client however.
How exactly does this event look like in the database?
Please tell me how to retrieve the information that you want. Is there 
a specific SQL query you'd like me to execute?

2011-03-30 18:54:42 Nikolaus (at) rath (dot) org Comment #8 Reply to this comment
A screenshot doesn't help, and it's even incomplete. That event
doesn't have any exceptions.
Well, what kind of information would you like me to give?
"Sorry, I don't understand what you mean."
"How exactly does this event look like in the database?"
After pondering this for a while, my guess is that maybe you are asking me for
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?

2011-03-30 18:35:15 Nikolaus (at) rath (dot) org Comment #7 Reply to this comment

[Show Quoted Text - 14 lines]
I am quite willing to help, but you will really have to tell me how. Right
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.

2011-03-30 17:54:12 Jan Schneider Comment #6 Reply to this comment
A screenshot doesn't help, and it's even incomplete. That event
doesn't have any exceptions.
Well, what kind of information would you like me to give?
"Sorry, I don't understand what you mean."
"How exactly does this event look like in the database?"
Not sure why you bring up exceptions, the problems happen for events 
without exceptions.
"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."
2011-03-30 17:19:41 Nikolaus (at) rath (dot) org Comment #5 Reply to this comment
A screenshot doesn't help, and it's even incomplete. That event 
doesn't have any exceptions.
Well, what kind of information would you like me to give?

Not sure why you bring up exceptions, the problems happen for events 
without exceptions.

2011-03-30 16:04:47 Jan Schneider Comment #4 Reply to this comment
A screenshot doesn't help, and it's even incomplete. That event 
doesn't have any exceptions.
2011-03-30 15:13:32 Nikolaus (at) rath (dot) org Comment #3
New Attachment: event.jpg Download
Reply to this comment
The original event does not exist in the database anymore, because it 
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.
2011-03-30 10:54:55 Jan Schneider Comment #2
State ⇒ Feedback
Reply to this comment
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.
What makes them do those claims? They are wrong.
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.
Duplicate of ticket #7156.
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.
Sorry, I don't understand what you mean.
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.
UIDs are not supposed to be part of the iCalendar data. UIDs are 
exchanged in the SyncML protocol level.
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.
No idea how you come to that conclusion. Horde accepts 1.0 and 2.0 
data and of course UTC dates too.
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.
How exactly does this event look like in the database?
2011-03-27 22:17:55 Nikolaus (at) rath (dot) org Comment #1
Type ⇒ Bug
State ⇒ Unconfirmed
Priority ⇒ 1. Low
Summary ⇒ Issues when synchronizing repeated events spanning DST change date
Queue ⇒ Synchronization
Milestone ⇒
Patch ⇒ No
Reply to this comment
Here is an example of a repeated event as it is send out by Horde when 
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.

Saved Queries