The file will be copied.
Not all tasks fields are updated
-
I just updated to 0.9.1.3 and this issue is occurring again
Re: DAVDroid stopped working at initial sync of tasks
My full exception is below
Can you please improve the exception reporting to show the ID and title of the task entry that is causing the exception? Then I could check if the exception is accurate or not. I looked through the list of tasks in another client and couldn’t see any task with DUE < DTSTART
Also, I tried to access this web site from Firefox and it doesn’t work, when I clicked to reply or post nothing happened, having a web site that doesn’t work in Firefox gives a really bad impression.
SYNCHRONIZATION INFO Synchronization phase: 9 Account name: Authority: org.dmfs.tasks STACK TRACE: java.lang.IllegalArgumentException: DUE must not be < DTSTART at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167) at android.database.DatabaseUtils.readExceptionWithOperationApplicationExceptionFromParcel(DatabaseUtils.java:160) at android.content.ContentProviderProxy.applyBatch(ContentProviderNative.java:519) at android.content.ContentProviderClient.applyBatch(ContentProviderClient.java:377) at at.bitfire.ical4android.BatchOperation.commit(BatchOperation.java:50) at at.bitfire.ical4android.AndroidTask.update(AndroidTask.java:239) at at.bitfire.davdroid.syncadapter.TasksSyncManager.processVTodo(TasksSyncManager.java:208) at at.bitfire.davdroid.syncadapter.TasksSyncManager.downloadRemote(TasksSyncManager.java:179) at at.bitfire.davdroid.syncadapter.SyncManager.performSync(SyncManager.java:182) 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) Sun Jan 03 08:04:57 CET 2016 Installed from: org.fdroid.fdroid JB Workaround installed: no
-
@pocock said:
Can you please improve the exception reporting to show the ID and title of the task entry that is causing the exception? Then I could check if the exception is accurate or not. I looked through the list of tasks in another client and couldn’t see any task with DUE < DTSTART
Probably the other client has fixed the invalid state (DUE < DTSTART) itself. Can you look at the server directly?
If you enable verbose logs, you will get the file names of the iCalendars which are received and parsed by DAVdroid.
Of course it would be useful to see the file name of the resource in the exception. High-quality patches are always welcome, but please use the v1 branch if you’re going to make one.
Also, I tried to access this web site from Firefox and it doesn’t work, when I clicked to reply or post nothing happened, having a web site that doesn’t work in Firefox gives a really bad impression.
I use this Web site with Firefox only. Probably it couldn’t load completely (bad connection or some other condition that it is not directly related to the Web site).
-
@rfc2822 said:
@pocock said:
Can you please improve the exception reporting to show the ID and title of the task entry that is causing the exception? Then I could check if the exception is accurate or not. I looked through the list of tasks in another client and couldn’t see any task with DUE < DTSTART
Probably the other client has fixed the invalid state (DUE < DTSTART) itself. Can you look at the server directly?
Yes, but not until later
If you enable verbose logs, you will get the file names of the iCalendars which are received and parsed by DAVdroid.
Of course it would be useful to see the file name of the resource in the exception. High-quality patches are always welcome, but please use the v1 branch if you’re going to make one.
Also, I tried to access this web site from Firefox and it doesn’t work, when I clicked to reply or post nothing happened, having a web site that doesn’t work in Firefox gives a really bad impression.
I use this Web site with Firefox only. Probably it couldn’t load completely (bad connection or some other condition that it is not directly related to the Web site).
Looking at Firefox’s console there are various errors:
NS_ERROR_FILE_CORRUPTED: nodebb.min.js:12:0 ... A promise chain failed to handle a rejection. Did you forget to '.catch', or did you forget to 'return'? See https://developer.mozilla.org/Mozilla/JavaScript_code_modules/Promise.jsm/Promise Date: Mon Mar 14 2016 10:28:29 GMT+0100 (CET) Full Message: [object Object]
I’ve tried several times in Firefox and it always fails, I’m using Firefox and Chromium on the same PC with the same connection
-
@pocock said:
Yes, but not until later
Then please do so. DAVdroid won’t make up a story, the exception is quite clear.
Also, I don’t think this is a “regression” because DAVdroid doesn’t crash anymore, but reports the error to the user as intended.
I’ve tried several times in Firefox and it always fails, I’m using Firefox and Chromium on the same PC with the same connection
Did you to clear your cache or do a full reload? Or maybe some FF extension that blocks essential parts of the page? We use this forum from various devices (mobile and desktop), with various Firefox versions, and there have never been problems. For more information and support, please see https://nodebb.org/ (we’re currently running version 1.0).
-
@rfc2822 said in regression: DUE must not be < DTSTART causing exception in task sync:
@pocock said:
Yes, but not until later
Then please do so. DAVdroid won’t make up a story, the exception is quite clear.
Also, I don’t think this is a “regression” because DAVdroid doesn’t crash anymore, but reports the error to the user as intended.
I used adb logcat to watch the log while doing the sync
From the log, I was able to identify the task ID:
I/davdroid(30063): [syncadapter.TasksSyncManager] Updating 5......7c.ics in local tasklist W/ContentResolver(29998): Failed to get type for: content://org.dmfs.tasks (Unsupported URI: content://org.dmfs.tasks) E/DatabaseUtils(29998): Writing exception to parcel E/DatabaseUtils(29998): java.lang.IllegalArgumentException: DUE must not be < DTSTART E/DatabaseUtils(29998): at org.dmfs.provider.tasks.processors.tasks.TaskValidatorProcessor.verifyCommon(Unknown Source)
Then I used wget to fetch the ics entry from the DAViCal server manually and save it to disk.
I found that DUE == DTSTART
Looking at the task in IceOwl-extension (Mozilla Lightning), the Start and Due Date times are both set to the same value with the same timezone. The checkbox next to Start is ticket and the checkbox next to Due Date is not ticked, the Due Date values are gray in Mozilla Lightning
In the ics file, I notice that DTSTART exists but DUE is not present anywhere:
DTSTART;TZID=Europe/Zurich:20151111T060000
Looking in the Tasks app, I find the task is in there and it has both a start and end time, they are the same values that I see in Mozilla Lightning
Could it be trying to merge these in some ugly way? I guess I could try enabling the Due Date value in Lightning and then doing the sync again to see if that clears the issue.
It would also be really good if the exception could show more detail. While I’m quite capable of using logcat and wget to identify the task entry, many users would find this frustrating and even for me it meant waiting more than a month before I had a spare 20 minutes to start analyzing it. Maybe you could improve the message that appears on-screen so that it shows the task’s ID and if available, the SUMMARY and first 80 characters of the DESCRIPTION?
Another problem I’ve observed is that whenever I change the Android device’s timezone, I see a popup telling me that OpenTasks has stopped. Looking at logcat, I see the same exception about DTSTART.
-
Can you please post
5......7c.ics
here (if there are private data, just XXX them out)?Could it be trying to merge these in some ugly way? I guess I could try enabling the Due Date value in Lightning and then doing the sync again to see if that clears the issue.
You’re right,
AndroidTask.update
does a task providerupdate
. InbuildTask
,Tasks.DUE
is only set when then task has adue
.I’ll have a look at that.
Another problem I’ve observed is that whenever I change the Android device’s timezone, I see a popup telling me that OpenTasks has stopped. Looking at logcat, I see the same exception about DTSTART.
Please report that to OpenTasks, which is not related to DAVdroid.
-
@rfc2822 said in regression: DUE must not be < DTSTART causing exception in task sync:
Can you please post
5......7c.ics
here (if there are private data, just XXX them out)?BEGIN:VCALENDAR PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Zurich X-LIC-LOCATION:Europe/Zurich 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:VTODO CREATED:20150711T160610Z LAST-MODIFIED:20151228T103238Z DTSTAMP:20151228T103238Z UID:5.....7c SUMMARY:abc X-MOZ-LASTACK:20151126T162539Z DTSTART;TZID=Europe/Zurich:20151111T060000 DESCRIPTION:something CLASS:CONFIDENTIAL SEQUENCE:2 X-MOZ-GENERATION:1656 X-MOZ-SNOOZE-TIME:20151126T163039Z BEGIN:VALARM ACTION:DISPLAY TRIGGER;VALUE=DURATION:PT0S DESCRIPTION:Default Mozilla Description END:VALARM END:VTODO END:VCALENDAR
Another problem I’ve observed is that whenever I change the Android device’s timezone, I see a popup telling me that OpenTasks has stopped. Looking at logcat, I see the same exception about DTSTART.
Please report that to OpenTasks, which is not related to DAVdroid.
OK, I’ll do that, but I’m guessing this task is the root cause. The exception log from that crash doesn’t actually mention which task is response though:
W/ContentResolver(16311): Failed to get type for: content://org.dmfs.tasks (Unsupported URI: content://org.dmfs.tasks) W/ContentResolver(16311): Failed to get type for: content://org.dmfs.tasks (Unsupported URI: content://org.dmfs.tasks) W/dalvikvm(16311): threadid=11: thread exiting with uncaught exception (group=0x41e76ce0) W/ContentResolver(16311): Failed to get type for: content://org.dmfs.tasks (Unsupported URI: content://org.dmfs.tasks) E/AndroidRuntime(16311): FATAL EXCEPTION: backgroundHandler E/AndroidRuntime(16311): Process: org.dmfs.tasks, PID: 16311 E/AndroidRuntime(16311): java.lang.IllegalArgumentException: DUE must not be < DTSTART E/AndroidRuntime(16311): at org.dmfs.provider.tasks.processors.tasks.TaskValidatorProcessor.verifyCommon(Unknown Source) E/AndroidRuntime(16311): at org.dmfs.provider.tasks.processors.tasks.TaskValidatorProcessor.beforeUpdate(Unknown Source) E/AndroidRuntime(16311): at org.dmfs.provider.tasks.processors.tasks.TaskValidatorProcessor.beforeUpdate(Unknown Source) E/AndroidRuntime(16311): at org.dmfs.provider.tasks.ProviderOperation$2.executeBeforeProcessor(Unknown Source) E/AndroidRuntime(16311): at org.dmfs.provider.tasks.ProviderOperation.execute(Unknown Source) E/AndroidRuntime(16311): at org.dmfs.provider.tasks.TaskProvider.updateInTransaction(Unknown Source) E/AndroidRuntime(16311): at org.dmfs.provider.tasks.SQLiteContentProvider.update(Unknown Source) E/AndroidRuntime(16311): at org.dmfs.provider.tasks.TaskProvider.update(Unknown Source) E/AndroidRuntime(16311): at android.content.ContentProvider$Transport.update(ContentProvider.java:287) E/AndroidRuntime(16311): at android.content.ContentResolver.update(ContentResolver.java:1316) E/AndroidRuntime(16311): at org.dmfs.provider.tasks.ContentOperation$1.handleOperation(Unknown Source) E/AndroidRuntime(16311): at org.dmfs.provider.tasks.ContentOperation$4.run(Unknown Source) E/AndroidRuntime(16311): at android.os.Handler.handleCallback(Handler.java:733) E/AndroidRuntime(16311): at android.os.Handler.dispatchMessage(Handler.java:95) E/AndroidRuntime(16311): at android.os.Looper.loop(Looper.java:136) E/AndroidRuntime(16311): at android.os.HandlerThread.run(HandlerThread.java:61)
-
Thanks. You’re right, the events are merged because ical4android (DAVdroid) does an update, and it updates only columns which are present in the VTODO. So, if there was a
DUE
but it isn’t anymore, it’s not overwritten bynull
and thus is kept, which causes your problem.Will be fixed in the next version.
-
Has been fixed in ical4android/3c86db9.
-
Can you please try with DAVdroid 1.0.8? It should be fixed there.