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

  • developer

    @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


  • developer

    @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.


  • developer

    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 provider update. In buildTask, Tasks.DUE is only set when then task has a due.

    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)
    

  • developer

    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 by null and thus is kept, which causes your problem.

    Will be fixed in the next version.


  • developer

    Has been fixed in ical4android/3c86db9.


  • developer

    Can you please try with DAVdroid 1.0.8? It should be fixed there.


Log in to reply
 

Looks like your connection to Bitfire App Forums was lost, please wait while we try to reconnect.