@rfc2822
Hi Ricki,
Yep, that’s fixed it.
I bet you wish all bugs were so easy to squish. Many thanks for such a quick response and fix.
Every time when the app wants to sync with my Kolab account, it fails because of the following problem (I don’t know if the sync is the problem, or if something is already stored not correct on the device), I am using the latest versions of DAVDroid and openTasks from Google Play, sync of Contacts and Calendar is working as expected:
SYNCHRONIZATION INFO
Synchronization phase: 4
Account name: KolabNow Tasks
Authority: org.dmfs.tasks
STACK TRACE:
java.text.ParseException: Unparseable date: "INTERVAL=1;BYMONTH=1;BYDAY=1FR" (at offset 0)
at java.text.DateFormat.parse(DateFormat.java:579)
at net.fortuna.ical4j.model.DateTime.setTime(DateTime.java:414)
at net.fortuna.ical4j.model.DateTime.<init>(DateTime.java:344)
at net.fortuna.ical4j.model.DateList.<init>(DateList.java:134)
at at.bitfire.ical4android.DateUtils.androidStringToRecurrenceSet(DateUtils.java:170)
at at.bitfire.ical4android.AndroidTask.populateTask(AndroidTask.java:215)
at at.bitfire.davdroid.resource.LocalTask.populateTask(LocalTask.java:64)
at at.bitfire.ical4android.AndroidTask.getTask(AndroidTask.java:85)
[wrapped] at.bitfire.ical4android.CalendarStorageException: Couldn't parse locally stored event
at.bitfire.ical4android.CalendarStorageException: Couldn't parse locally stored event
at at.bitfire.ical4android.AndroidTask.getTask(AndroidTask.java:92)
at at.bitfire.davdroid.resource.LocalTaskList.getDirty(LocalTaskList.java:93)
at at.bitfire.davdroid.syncadapter.SyncManager.uploadDirty(SyncManager.java:320)
at at.bitfire.davdroid.syncadapter.SyncManager.performSync(SyncManager.java:159)
at at.bitfire.davdroid.syncadapter.TasksSyncAdapterService$SyncAdapter.onPerformSync(TasksSyncAdapterService.java:63)
at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:259)
SOFTWARE INFORMATION
DAVdroid version: 0.9.1.3 (87) Sat Jan 02 11:24:54 MEZ 2016
Installed from: com.android.vending
JB Workaround installed: no
CONFIGURATION
System-wide synchronization: automatically
Account: konrad.renner@kolabserver.at
Address book sync. interval: —
Calendar sync. interval: 1440 min
OpenTasks sync. interval: —
Account: KolabNow Kontakte
Address book sync. interval: 1440 min
Calendar sync. interval: —
OpenTasks sync. interval: —
Account: KolabNow Tasks
Address book sync. interval: —
Calendar sync. interval: —
OpenTasks sync. interval: 1440 min
SYSTEM INFORMATION
Android version: 5.1.1 (LMY48T)
Device: LGE Nexus 4 (mako)
@konradrenner Seems like the VTODO is wrong (e.g., RDATE instead of RRULE).
@rfc2822 is it a problem in the app or on the server side?
@konradrenner Seems like the VTODO is wrong, so at server (or user) side.
@rfc2822 but it occurs when an edited task gets uploaded… Not when a task is downloaded
Indeed:
[wrapped] at.bitfire.ical4android.CalendarStorageException: Couldn’t parse locally stored event
Looks like a locally stored task is invalid. The lines around AndroidTask.java:215
(DAVdroid 0.9.1.3) are:
String exDate = values.getAsString(Tasks.EXDATE);
if (exDate != null)
task.getExDates().add((ExDate)DateUtils.androidStringToRecurrenceSet(exDate, ExDate.class, allDay));
So there seems to be a value that can’t be parsed (INTERVAL=1;BYMONTH=1;BYDAY=1FR
) in the Tasks.EXDATE
column.
The question is: How could the invalid value find its way into the EXDATE
column? Because it’s a dirty (not a new) contact you’re uploading, I guess that the invalid value has been downloaded from the server before, and then written into the EXDATE
column.
This is why I guess the VTODO is wrong, and has been sent by the server incorrectly. However, I’m afraid that validation of my theory will require verbose logs of the initial VTODO download, comprising the VTODO content.
AndroidTask.java L342:
if (task.rRule != null)
builder.withValue(Tasks.EXDATE, task.rRule.getValue());
Seems like the rRule is written into EXDATE… so this is an ical4android problem and will be fixed in next DAVdroid release.
Thanks for the report.
@rfc2822 thanks for fixing it! Can’t wait for it
@rfc2822 do I have to delete local data and resync after the Problem is fixed or will it work without deleting an readding the account?
@konradrenner In the meanwhile, it should be enough to delete the task on your mobile phone and then sync. Then create the task again on the mobile phone.