Recurring event series breaks when edited from an Andorid device

Questions, comments, and problems with Zimbra on Apple desktops & general CalDAV / CardDAV questions.
Post Reply
blagoy.chepelov@opencode.com
Posts: 2
Joined: Wed Mar 04, 2015 2:56 am

Recurring event series breaks when edited from an Andorid device

Post by blagoy.chepelov@opencode.com »

Dear Team,

We have been experiencing the following error when a recurring event is being updated/deleted from an Android Calendar via DavDroid the message we get is:
2015-03-04 10:16:25,214 INFO  [qtp509886383-474469:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=blagoy.chepelov@opencode.
com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] calendar - setCalendarItem: id=(new), folderId=277274, subject="Event1", UID=20150304T081624Z-3704@4a7fb4f123ef0858
2015-03-04 10:16:25,214 INFO  [qtp509886383-474469:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=blagoy.chepelov@opencode.
com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] calendar - Adding CalendarItem: id=410665, Message-ID="(none)", folderId=277274, subject="Event1", UID=20150304T081624Z-3704@4a7fb4f123ef0858
2015-03-04 10:16:25,218 INFO  [qtp509886383-474469:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=blagoy.chepelov@opencode.
com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] calendar - CalendarItem has effectively zero instances: id=410665, folderId=277274, subject="Event1", UID=20150304T081624Z-3704@4a7fb4f123ef0858
2015-03-04 10:16:25,218 INFO  [qtp509886383-474469:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] calendar - Deleting CalendarItem: id=410665, folderId=277274, subject="Event1", UID=20150304T081624Z-3704@4a7fb4f123ef0858
2015-03-04 10:16:25,218 INFO  [qtp509886383-474469:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] mailop - Deleting Appointment (id=410665).
2015-03-04 10:16:25,220 INFO  [qtp509886383-474469:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] dav - sending http error 403 because: forbidden: Recurring series has effectively zero instances
2015-03-04 10:16:25,220 INFO  [qtp509886383-474469:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] dav - DavServlet operation PUT to /home/beji@myhost.com/Life/20150304T081624Z-3704@4a7fb4f123ef0858.ics (depth: zero) finished in 10ms
The versions we have this issue are from 8.0.x to 8.6.0_GA_1153.FOSS

This could be easily reproduced by:
Steps to reproduce the issue:
1.Create a repeating event "Test" for every 1st day of the month until 20 ocurances.
2.Sync your Andorid phone
3.Delet one of the Test events on the Android phone using DavDroid and try to sync.
4.The error message and similar debug should pop up.

The issue is at the server side, I already checked with the DavDroid developer if this could be a client issue but everything points it is the server:
[View:https://github.com/bitfireAT/davdroid/issues/414:940:0]

I have been checking the following thread and checked wheter this could be an issue from the migration script:
[View:https://community.zimbra.com/collaborat ... 3492:940:0]

I have been playing with the installation of a fresh 8.6 version and the issue still appears there so I decided it is not the migration script that causes this.

Best Regards,
Blago
User avatar
Gren Elliot
Advanced member
Advanced member
Posts: 183
Joined: Tue Jun 10, 2014 4:45 am

Recurring event series breaks when edited from an Andorid device

Post by Gren Elliot »

I've just done a quick test with this.  Zimbra requires the last part of a URL associated with a calendar item to be of the form <UID>.ics  where <UID> is the UID of the calendar item.  When DavDroid attempts to create a calendar item, it uses a different URL.  Zimbra responds with an HTTP 302 response to redirect to the desired URL.  DavDroid appears to ignore this redirect.  Other clients don't.  Ideally, DavDroid would do what some other clients do and use the <UID>.ics convention.
In my testing, the UID had an "@" sign in it.
I notice that the DavDroid developer added https://bugzilla.zimbra.com/show_bug.cgi?id=84857 complaining about @ and : characters in Zimbra URLs, so they may still have problems from there.
Zimbra may at some point in the future allow the client to choose the URL (for CardDAV it already does as long as the card has .vcf as the suffix) but that certainly won't be before 9.0.
User avatar
Gren Elliot
Advanced member
Advanced member
Posts: 183
Joined: Tue Jun 10, 2014 4:45 am

Recurring event series breaks when edited from an Andorid device

Post by Gren Elliot »

Hmm.  Looking again at https://github.com/bitfireAT/davdroid/issues/414 it looks as if DavDroid was following the redirect for you.  The calendar collection you were writing to was a shared collection.  Are you sure you had access rights to that?
User avatar
Gren Elliot
Advanced member
Advanced member
Posts: 183
Joined: Tue Jun 10, 2014 4:45 am

Recurring event series breaks when edited from an Andorid device

Post by Gren Elliot »

Looking again and spotted the talk about Recurring series has effectively zero instances Could you enable dav tracing for the user on the server please? and repeat this.  From that we should get the ICS in the PUT request in mailbox.log.
zmprov addAccountLogger user@example.com zimbra.dav TRACE

What calendar client do you use on your android device?  It may be an issue with that rather than DavDroid.
blagoy.chepelov@opencode.com
Posts: 2
Joined: Wed Mar 04, 2015 2:56 am

Recurring event series breaks when edited from an Andorid device

Post by blagoy.chepelov@opencode.com »

Hi Gren,

The calendar client I use is the default google calendar client, com.android.calendar version 4.4.4-f98058287a

I am pasting the output after enabling the debug for my account:

2015-03-04 15:34:09,987 INFO [qtp509886383-479974:https://myhost.com:443/dav/beji@myhost.com/Calendar/] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6
.12;] FileUploadServlet - saveUpload(): received Upload: { accountId=17312afb-772a-4229-bbaa-dce5fe4fd557, time=Wed Mar 04 15:34:09 EET 2015, size=134, uploadId=6cbc0df5-b676-4004-8545-07089
0366e1b:14258e4c-390e-4396-9f17-77d5eedd26a3, name=null, path=null }
2015-03-04 15:34:09,987 DEBUG [qtp509886383-479974:https://myhost.com:443/dav/beji@myhost.com/Calendar/] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6
.12;] dav - Request: requested content-type: text/xml; charset=UTF-8, actual content-type: text/xml; charset=UTF-8
2015-03-04 15:34:09,987 DEBUG [qtp509886383-479974:https://myhost.com:443/dav/beji@myhost.com/Calendar/] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6
.12;] dav - REQUEST
<propfind xmlns="DAV:">
<prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
<getetag/>
</prop>
</propfind>
2015-03-04 15:34:10,008 DEBUG [qtp509886383-479974:https://myhost.com:443/dav/beji@myhost.com/Calendar/] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6
.12;] dav - RESPONSE:
<?xml version="1.0" encoding="UTF-8"?>

<D:multistatus xmlns:D="DAV:">
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/</D:href>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/">608435-8 ... CS:getctag>
<D:getetag>"608435-1"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/84c46c82-e13a-499d-873a-50e48f3cb352.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"798816-798816"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/2ea73dac-ed3f-464d-a7a8-184860f375bc.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"803789-803789"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/040000008200E00074C5B7101A82E00800000000005A0C305567CE010000000000000000100000007413E01C403D6F4488D2A0BFB4BF4CA5.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"800764-800764"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/1adaf1f1-037d-47ff-a00e-d4b936c3d53b.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"803323-803323"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/049c278b-c3e4-4529-a557-8bd3616218cd.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"802660-802498"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/11456069-230d-4f42-bdde-f741e8ad9f44.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"803325-803325"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/7e44b3d5-077e-4261-8f91-ba6a01b1b424.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"803781-803301"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/d4e04793-eedd-420f-8bd1-51850a23d04e.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"802600-802500"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/14881cb9-fea9-45e2-b47a-45e19ae669a6.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"803808-803808"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/20150127T182512Z-9564@4a7fb4f123ef0858.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"794221-794221"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/42a7f74d-f789-4abf-b952-cac68bc1b7d1.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"798862-798862"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/243412f9-7d57-4d15-9da7-98dbde79b801.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"803784-798861"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/040000008200E00074C5B7101A82E00800000000406527B9D450D0010000000000000000100000008F90098927027F409847843B8D2A224F.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"801074-801074"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/15626d74-3aa4-4d5b-ab95-407f7f806ea4.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"802601-802499"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/48197647-65f7-4ba4-a398-b40db7db41f1.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"795111-795111"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/2047b0a2-8a47-4808-af3f-5d2620967b55.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"803782-803300"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/79fa80c2-4348-4514-8458-4ca4f6b45493.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"802604-802502"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
<D:response>
<D:href>/dav/beji@myhost.com/Calendar/5b025922-1b12-463e-86b7-7361de6ad8a5.ics</D:href>
<D:propstat>
<D:status>HTTP/1.1 404 Not Found</D:status>
<D:prop>
<CS:getctag xmlns:CS="http://calendarserver.org/ns/"/>
</D:prop>
</D:propstat>
<D:propstat>
<D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getetag>"802602-802501"</D:getetag>
</D:prop>
</D:propstat>
</D:response>
</D:multistatus>

2015-03-04 15:34:10,008 INFO [qtp509886383-479974:https://myhost.com:443/dav/beji@myhost.com/Calendar/] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] dav - DavServlet operation PROPFIND to /home/beji@myhost.com/Calendar/ (depth: one) finished in 21ms
2015-03-04 15:34:10,603 INFO [qtp509886383-479974:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] FileUploadServlet - saveUpload(): received Upload: { accountId=17312afb-772a-4229-bbaa-dce5fe4fd557, time=Wed Mar 04 15:34:10 EET 2015, size=1837, uploadId=6cbc0df5-b676-4004-8545-070890366e1b:650c6976-ad4f-4f45-989f-3eeec1a7039c, name=null, path=null }
2015-03-04 15:34:10,603 DEBUG [qtp509886383-479974:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] dav - Request: requested content-type: text/calendar, actual content-type: text/calendar
2015-03-04 15:34:10,603 DEBUG [qtp509886383-479974:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] dav - REQUEST
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//bitfire web engineering//DAVdroid 0.6.12 (ical4j 1.0.x)//EN
BEGIN:VEVENT
DTSTAMP:20150304T133409Z
UID:20150304T133409Z-5614@4a7fb4f123ef0858
DTSTART;TZID=Europe/Helsinki:20150304T153000
DTEND;TZID=Europe/Helsinki:20150304T160000
SUMMARY:TestEvent1
STATUS:CANCELLED
LAST-MODIFIED:20150304T133409Z
END:VEVENT
BEGIN:VTIMEZONE
TZID:Europe/Helsinki
TZURL:http://tzurl.org/zoneinfo/Europe/Helsinki
X-LIC-LOCATION:Europe/Helsinki
BEGIN:DAYLIGHT
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
TZNAME:EEST
DTSTART:19830327T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:19961027T040000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
BEGIN:STANDARD
TZOFFSETFROM:+013952
TZOFFSETTO:+013952
TZNAME:HMT
DTSTART:18780531T000000
RDATE:18780531T000000
END:STANDARD
BEGIN:STANDARD
TZOFFSETFROM:+013952
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:19210501T010000
RDATE:19210501T010000
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
TZNAME:EEST
DTSTART:19420403T010000
RDATE:19420403T010000
RDATE:19810329T020000
RDATE:19820328T020000
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:19421003T010000
RDATE:19421003T010000
RDATE:19810927T030000
RDATE:19820926T030000
RDATE:19830925T040000
RDATE:19840930T040000
RDATE:19850929T040000
RDATE:19860928T040000
RDATE:19870927T040000
RDATE:19880925T040000
RDATE:19890924T040000
RDATE:19900930T040000
RDATE:19910929T040000
RDATE:19920927T040000
RDATE:19930926T040000
RDATE:19940925T040000
RDATE:19950924T040000
END:STANDARD
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:19830101T000000
RDATE:19830101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR

2015-03-04 15:34:10,603 DEBUG [qtp509886383-479974:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com' path='/Life'
com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] dav - getResource at user='beji@myhost.com' path='/Life'
2015-03-04 15:34:10,607 INFO [qtp509886383-479974:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] dav - sending redirect
2015-03-04 15:34:10,607 INFO [qtp509886383-479974:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] dav - sending http error 302 because: wrong url - redirecting to:
https://myhost.com/dav/beji@myhost.com/ ... ef0858.ics
com.zimbra.cs.dav.DavException: wrong url - redirecting to:
https://myhost.com/dav/beji@myhost.com/ ... ef0858.ics
at com.zimbra.cs.dav.resource.CalendarCollection.createItem(CalendarCollection.java:484)
at com.zimbra.cs.dav.service.method.Put.handle(Put.java:49)
at com.zimbra.cs.dav.service.DavServlet.service(DavServlet.java:359)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:738)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1651)
at com.zimbra.cs.servlet.RequestStringFilter.doFilter(RequestStringFilter.java:54)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at com.zimbra.cs.servlet.SetHeaderFilter.doFilter(SetHeaderFilter.java:59)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:83)
at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:298)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at com.zimbra.cs.servlet.ETagHeaderFilter.doFilter(ETagHeaderFilter.java:47)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at com.zimbra.cs.servlet.ContextPathBasedThreadPoolBalancerFilter.doFilter(ContextPathBasedThreadPoolBalancerFilter.java:107)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at com.zimbra.cs.servlet.ZimbraQoSFilter.doFilter(ZimbraQoSFilter.java:116)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at com.zimbra.cs.servlet.ZimbraInvalidLoginFilter.doFilter(ZimbraInvalidLoginFilter.java:117)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at org.eclipse.jetty.servlets.DoSFilter.doFilterChain(DoSFilter.java:457)
at org.eclipse.jetty.servlets.DoSFilter.doFilter(DoSFilter.java:326)
at org.eclipse.jetty.servlets.DoSFilter.doFilter(DoSFilter.java:299)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:549)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:544)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1111)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:478)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1045)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:199)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:309)
at org.eclipse.jetty.server.handler.DebugHandler.handle(DebugHandler.java:81)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:462)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:279)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:232)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:534)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536)
at java.lang.Thread.run(Thread.java:745)
2015-03-04 15:34:10,608 INFO [qtp509886383-479974:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] dav - DavServlet operation PUT to /home/beji@myhost.com/Life/20150304T133409Z-5614_4a7fb4f123ef0858.ics (depth: zero) finished in 4ms
2015-03-04 15:34:10,631 INFO [qtp509886383-479981:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] FileUploadServlet - saveUpload(): received Upload: { accountId=17312afb-772a-4229-bbaa-dce5fe4fd557, time=Wed Mar 04 15:34:10 EET 2015, size=1837, uploadId=6cbc0df5-b676-4004-8545-070890366e1b:a94b1a90-8084-48f9-a6c0-880cee14ad6b, name=null, path=null }
2015-03-04 15:34:10,631 DEBUG [qtp509886383-479981:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] dav - Request: requested content-type: text/calendar, actual content-type: text/calendar
2015-03-04 15:34:10,631 DEBUG [qtp509886383-479981:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] dav - REQUEST
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//bitfire web engineering//DAVdroid 0.6.12 (ical4j 1.0.x)//EN
BEGIN:VEVENT
DTSTAMP:20150304T133409Z
UID:20150304T133409Z-5614@4a7fb4f123ef0858
DTSTART;TZID=Europe/Helsinki:20150304T153000
DTEND;TZID=Europe/Helsinki:20150304T160000
SUMMARY:TestEvent1
STATUS:CANCELLED
LAST-MODIFIED:20150304T133409Z
END:VEVENT
BEGIN:VTIMEZONE
TZID:Europe/Helsinki
TZURL:http://tzurl.org/zoneinfo/Europe/Helsinki
X-LIC-LOCATION:Europe/Helsinki
BEGIN:DAYLIGHT
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
TZNAME:EEST
DTSTART:19830327T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:19961027T040000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
BEGIN:STANDARD
TZOFFSETFROM:+013952
TZOFFSETTO:+013952
TZNAME:HMT
DTSTART:18780531T000000
RDATE:18780531T000000
END:STANDARD
BEGIN:STANDARD
TZOFFSETFROM:+013952
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:19210501T010000
RDATE:19210501T010000
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
TZNAME:EEST
DTSTART:19420403T010000
RDATE:19420403T010000
RDATE:19810329T020000
RDATE:19820328T020000
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:19421003T010000
RDATE:19421003T010000
RDATE:19810927T030000
RDATE:19820926T030000
RDATE:19830925T040000
RDATE:19840930T040000
RDATE:19850929T040000
RDATE:19860928T040000
RDATE:19870927T040000
RDATE:19880925T040000
RDATE:19890924T040000
RDATE:19900930T040000
RDATE:19910929T040000
RDATE:19920927T040000
RDATE:19930926T040000
RDATE:19940925T040000
RDATE:19950924T040000
END:STANDARD
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:19830101T000000
RDATE:19830101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR

2015-03-04 15:34:10,631 DEBUG [qtp509886383-479981:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] dav - getResource at user='beji@myhost.com' path='/Life'
2015-03-04 15:34:10,636 INFO [qtp509886383-479981:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] calendar - setCalendarItem: id=(new), folderId=277274, subject="TestEvent1", UID=20150304T133409Z-5614@4a7fb4f123ef0858
2015-03-04 15:34:10,636 INFO [qtp509886383-479981:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] calendar - Adding CalendarItem: id=411019, Message-ID="(none)", folderId=277274, subject="TestEvent1", UID=20150304T133409Z-5614@4a7fb4f123ef0858
2015-03-04 15:34:10,636 INFO [qtp509886383-479981:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] calendar - CalendarItem has effectively zero instances: id=411019, folderId=277274, subject="TestEvent1", UID=20150304T133409Z-5614@4a7fb4f123ef0858
2015-03-04 15:34:10,637 INFO [qtp509886383-479981:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] calendar - Deleting CalendarItem: id=411019, folderId=277274, subject="TestEvent1", UID=20150304T133409Z-5614@4a7fb4f123ef0858
2015-03-04 15:34:10,637 INFO [qtp509886383-479981:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] mailop - Deleting Appointment (id=411019).
2015-03-04 15:34:10,643 INFO [qtp509886383-479981:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] dav - sending http error 403 because: forbidden: Recurring series has effectively zero instances
com.zimbra.cs.dav.DavException: forbidden: Recurring series has effectively zero instances
at com.zimbra.cs.dav.resource.CalendarCollection.createItem(CalendarCollection.java:609)
at com.zimbra.cs.dav.service.method.Put.handle(Put.java:49)
at com.zimbra.cs.dav.service.DavServlet.service(DavServlet.java:359)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:738)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1651)
at com.zimbra.cs.servlet.RequestStringFilter.doFilter(RequestStringFilter.java:54)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at com.zimbra.cs.servlet.SetHeaderFilter.doFilter(SetHeaderFilter.java:59)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:83)
at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:298)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at com.zimbra.cs.servlet.ETagHeaderFilter.doFilter(ETagHeaderFilter.java:47)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at com.zimbra.cs.servlet.ContextPathBasedThreadPoolBalancerFilter.doFilter(ContextPathBasedThreadPoolBalancerFilter.java:107)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at com.zimbra.cs.servlet.ZimbraQoSFilter.doFilter(ZimbraQoSFilter.java:116)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at com.zimbra.cs.servlet.ZimbraInvalidLoginFilter.doFilter(ZimbraInvalidLoginFilter.java:117)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at org.eclipse.jetty.servlets.DoSFilter.doFilterChain(DoSFilter.java:457)
at org.eclipse.jetty.servlets.DoSFilter.doFilter(DoSFilter.java:326)
at org.eclipse.jetty.servlets.DoSFilter.doFilter(DoSFilter.java:299)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:549)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:544)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1111)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:478)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1045)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:199)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:309)
at org.eclipse.jetty.server.handler.DebugHandler.handle(DebugHandler.java:81)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:462)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:279)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:232)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:534)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.zimbra.common.service.ServiceException: forbidden: Recurring series has effectively zero instances
ExceptionId:qtp509886383-479981:https://myhost.com:443/dav/beji@myhost. ... afb5b63e04
Code:service.FORBIDDEN
at com.zimbra.common.service.ServiceException.FORBIDDEN(ServiceException.java:374)
at com.zimbra.cs.mailbox.CalendarItem.create(CalendarItem.java:557)
at com.zimbra.cs.mailbox.Mailbox.createCalendarItem(Mailbox.java:7390)
at com.zimbra.cs.mailbox.Mailbox.setCalendarItem(Mailbox.java:5070)
at com.zimbra.cs.dav.resource.CalendarCollection.createItem(CalendarCollection.java:584)
... 46 more
2015-03-04 15:34:10,644 DEBUG [qtp509886383-479981:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] dav - exception:
com.zimbra.common.service.ServiceException: forbidden: Recurring series has effectively zero instances
ExceptionId:qtp509886383-479981:https://myhost.com:443/dav/beji@myhost. ... afb5b63e04
Code:service.FORBIDDEN
at com.zimbra.common.service.ServiceException.FORBIDDEN(ServiceException.java:374)
at com.zimbra.cs.mailbox.CalendarItem.create(CalendarItem.java:557)
at com.zimbra.cs.mailbox.Mailbox.createCalendarItem(Mailbox.java:7390)
at com.zimbra.cs.mailbox.Mailbox.setCalendarItem(Mailbox.java:5070)
at com.zimbra.cs.dav.resource.CalendarCollection.createItem(CalendarCollection.java:584)
at com.zimbra.cs.dav.service.method.Put.handle(Put.java:49)
at com.zimbra.cs.dav.service.DavServlet.service(DavServlet.java:359)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:738)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1651)
at com.zimbra.cs.servlet.RequestStringFilter.doFilter(RequestStringFilter.java:54)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at com.zimbra.cs.servlet.SetHeaderFilter.doFilter(SetHeaderFilter.java:59)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:83)
at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:298)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at com.zimbra.cs.servlet.ETagHeaderFilter.doFilter(ETagHeaderFilter.java:47)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at com.zimbra.cs.servlet.ContextPathBasedThreadPoolBalancerFilter.doFilter(ContextPathBasedThreadPoolBalancerFilter.java:107)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at com.zimbra.cs.servlet.ZimbraQoSFilter.doFilter(ZimbraQoSFilter.java:116)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at com.zimbra.cs.servlet.ZimbraInvalidLoginFilter.doFilter(ZimbraInvalidLoginFilter.java:117)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at org.eclipse.jetty.servlets.DoSFilter.doFilterChain(DoSFilter.java:457)
at org.eclipse.jetty.servlets.DoSFilter.doFilter(DoSFilter.java:326)
at org.eclipse.jetty.servlets.DoSFilter.doFilter(DoSFilter.java:299)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:549)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:544)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1111)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:478)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1045)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:199)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:309)
at org.eclipse.jetty.server.handler.DebugHandler.handle(DebugHandler.java:81)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:462)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:279)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:232)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:534)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536)
at java.lang.Thread.run(Thread.java:745)
2015-03-04 15:34:10,644 INFO [qtp509886383-479981:https://myhost.com:443/dav/beji@myhost. ... ef0858.ics] [aname=beji@myhost.com;ip=192.170.179.151;ua=DAVdroid/0.6.12;] dav - DavServlet operation PUT to /home/beji@myhost.com/Life/20150304T133409Z-5614@4a7fb4f123ef0858.ics (depth: zero) finished in 13ms


If you need more info do let me know.

cheers,
Blago
User avatar
Gren Elliot
Advanced member
Advanced member
Posts: 183
Joined: Tue Jun 10, 2014 4:45 am

Recurring event series breaks when edited from an Andorid device

Post by Gren Elliot »

The issue is the line "STATUS:CANCELLED" in the VCALENDAR data.
I have created bug https://bugzilla.zimbra.com/show_bug.cgi?id=98199 to document what is happening.  Not sure whether the PUT should be allowed or not, given that no instances will appear on the calendar but the error message in mailbox.log:
forbidden: Recurring series has effectively zero instances

is misleading, given that the data doesn't represent a recurring series.
Post Reply