Error repetition - does DAVx⁵ give up at some point?


  • In an attempt to shrink my big tech data footprint, I’m trying an /e/os + Nextcloud 21 approach. So I have no prior experience with DAVx, and I’m hesitant to reveal that I am doing something dunderheadedly.

    After importing my google agenda on my Nextcloud 21 account, connecting my phone (DAVx⁵) to it, and doing some cleanup, I get two error messages in a popup every two minutes. Sometimes it stops, but after I reboot my phone, it’s back. I have to turn my sound off to silence the notifications.

    Those errors are the following:

    Error 1: Birthday 404

    There is a birthday being synced. I didn’t knowingly make a change. Perhaps by accident.

    Authority: com.android.calendar
    
    EXCEPTION
    at.bitfire.dav4jvm.exception.NotFoundException: HTTP 404 
    
    HTTP REQUEST
    Request{method=PUT, url=https://nextcloud.******.***/remote.php/dav/calendars/sant/contact_birthdays/contacts-goog323.ics, headers=[Accept-Encoding:br,gzip]}
    BEGIN:VCALENDAR
    VERSION:2.0
    PRODID:DAVx5/3.3.10-ose ical4j/3.0.24 (org.lineageos.etar)
    X-NEXTCLOUD-BC-FIELD-TYPE:BDAY
    X-NEXTCLOUD-BC-UNKNOWN-YEAR:0
    X-NEXTCLOUD-BC-YEAR:1983
    
    HTTP RESPONSE
    Response{protocol=h2, code=404, message=, url=https://nextcloud.******.***/remote.php/dav/calendars/sant/contact_birthdays/contacts-goog323.ics}
    <?xml version="1.0" encoding="utf-8"?>
    <d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
      <s:exception>Sabre\DAV\Exception\NotFound</s:exception>
      <s:message>Node with name 'contacts-goog323.ics' could not be found</s:message>
    </d:error>
    
    REMOTE RESOURCE
    https://nextcloud.******.***/remote.php/dav/calendars/sant/contact_birthdays/contacts-goog323.ics
    
    Cropped for brevity

    Error 2: Deck task, formerly 501, now 404

    This is from the kanban style deck app on Nextcloud 21. It kept giving a 501 every two minutes, so I removed the example tasks from the deck app. Now it’s giving 404 every two minutes.

    Authority: org.tasks.opentasks
    
    EXCEPTION
    at.bitfire.dav4jvm.exception.NotFoundException: HTTP 404 
    
    HTTP REQUEST
    Request{method=PUT, url=https://nextcloud.******.***/remote.php/dav/calendars/sant/app-generated--deck--board-2/stack-6.ics, headers=[Accept-Encoding:br,gzip]}
    BEGIN:VCALENDAR
    VERSION:2.0
    PRODID:DAVx5/3.3.10-ose ical4j/3.0.24
    X-OC-HIDESUBTASKS:1
    
    HTTP RESPONSE
    Response{protocol=h2, code=404, message=, url=https://nextcloud.******.***/remote.php/dav/calendars/sant/app-generated--deck--board-2/stack-6.ics}
    <?xml version="1.0" encoding="utf-8"?>
    <d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
      <s:exception>Sabre\DAV\Exception\NotFound</s:exception>
      <s:message>Node with name 'stack-6.ics' could not be found</s:message>
    </d:error>
    
    REMOTE RESOURCE
    https://nextcloud.******.***/remote.php/dav/calendars/sant/app-generated--deck--board-2/stack-6.ics
    
    Cropped for brevity

    So I guess my questions are:

    1. Did I do something wrong setting this up i.e. this is my own fault?
    2. For 404 - Shouldn’t there be an option to automatically (re)create remote resource if not exists, or remove local resource, in order to resolve this repeating sync error?
    3. For 501 - Shouldn’t there be an option to overwrite local resource with remote resource in order to resolve this repeating sync error?
    4. Should 404 and 501 errors be retried using an “increasing retry delay” e.g. wait 2 minutes, 4, 8, 16, 1 hour, 4 hours etc., or some other way to debounce error notifications, so that a (new) user is not chased away with a hundred error messages when trying DAVx⁵ for the first time?

    I mean, even for computers, trying the same thing over and over again and hoping for different results is the definition of, well, something that kind of looks like a bug. 😉

  • developer

    Hello,

    @sant said in Error repetition - does DAVx⁵ give up at some point?:

    In an attempt to shrink my big tech data footprint, I’m trying an /e/os + Nextcloud 21 approach. So I have no prior experience with DAVx, and I’m hesitant to reveal that I am doing something dunderheadedly.

    Thanks for using DAVx⁵ (with 5, please).

    Those errors are the following:

    Error 1: Birthday 404

    There is a birthday being synced. I didn’t knowingly make a change. Perhaps by accident.

    This error comes from editing a birthday event, which is read-only. See also https://forums.bitfire.at/post/13613

    Unfortunately your debug info is not complete – in the last lines, you can see whether your server sent the “read-only” flag (as Nextcloud usually does). In this case, DAVx⁵ sets the event to read-only, so calendar apps must not modify them. It seems that org.lineageos.etar has modified the event. Possibly https://github.com/Etar-Group/Etar-Calendar/issues/523?

    Error 2: Deck task, formerly 501, now 404

    This is from the kanban style deck app on Nextcloud 21. It kept giving a 501 every two minutes, so I removed the example tasks from the deck app. Now it’s giving 404 every two minutes.

    See https://forums.bitfire.at/post/13710 and upstream: https://github.com/nextcloud/deck/issues/2355 and https://github.com/nextcloud/deck/issues/15

    I mean, even for computers, trying the same thing over and over again and hoping for different results is the definition of, well, something that kind of looks like a bug. 😉

    The other option would be to silently ignore the changes, ie. causing user data to vanish.


  • @rfc2822 said in Error repetition - does DAVx⁵ give up at some point?:

    Thanks for using DAVx⁵ (with 5, please).

    Apologies. Do I get credits for the title? 😃

    This error comes from editing a birthday event, which is read-only. See also https://forums.bitfire.at/post/13613

    Unfortunately your debug info is not complete – in the last lines, you can see whether your server sent the “read-only” flag (as Nextcloud usually does). In this case, DAVx⁵ sets the event to read-only, so calendar apps must not modify them. It seems that org.lineageos.etar has modified the event. Possibly https://github.com/Etar-Group/Etar-Calendar/issues/523?

    Here is a minimally redacted log. Hopefully I removed all private information.

    --- BEGIN DEBUG INFO ---
    
    SYNCHRONIZATION INFO
    Account: Account {name=sant@******.***, type=bitfire.at.davdroid}
    Authority: com.android.calendar
    
    EXCEPTION
    at.bitfire.dav4jvm.exception.NotFoundException: HTTP 404 
    	at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:6)
    	at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:3)
    	at at.bitfire.dav4jvm.DavResource.put(DavResource.kt:2)
    	at at.bitfire.dav4jvm.DavResource.put$default(DavResource.kt:1)
    	at at.bitfire.davdroid.syncadapter.SyncManager$uploadDirty$3.invoke(SyncManager.kt:5)
    	at at.bitfire.davdroid.syncadapter.SyncManager$uploadDirty$3.invoke(SyncManager.kt:1)
    	at at.bitfire.davdroid.syncadapter.SyncManager.remoteExceptionContext(SyncManager.kt:1)
    	at at.bitfire.davdroid.syncadapter.SyncManager.uploadDirty(SyncManager.kt:17)
    	at at.bitfire.davdroid.syncadapter.SyncManager.uploadDirty(SyncManager.kt:31)
    	at at.bitfire.davdroid.syncadapter.SyncManager$uploadDirty$1$1$1.invoke(SyncManager.kt:2)
    	at at.bitfire.davdroid.syncadapter.SyncManager$uploadDirty$1$1$1.invoke(SyncManager.kt:1)
    	at at.bitfire.davdroid.syncadapter.SyncManager.localExceptionContext(SyncManager.kt:1)
    	at at.bitfire.davdroid.syncadapter.SyncManager$uploadDirty$1$1.invokeSuspend(SyncManager.kt:2)
    	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:3)
    	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:15)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    	at java.lang.Thread.run(Thread.java:923)
    
    HTTP REQUEST
    Request{method=PUT, url=https://nextcloud.******.***/remote.php/dav/calendars/sant/contact_birthdays/contacts-goog323.ics, headers=[Accept-Encoding:br,gzip]}
    BEGIN:VCALENDAR
    VERSION:2.0
    PRODID:DAVx5/3.3.10-ose ical4j/3.0.24 (org.lineageos.etar)
    BEGIN:VEVENT
    DTSTAMP:20210506T202613Z
    UID:sabre-vobject-redacted
    SEQUENCE:1
    SUMMARY:🎂 redacted (1983)
    DTSTART;VALUE=DATE:19830506
    DTEND;VALUE=DATE:19830507
    RRULE:FREQ=YEARLY
    CLASS:PUBLIC
    TRANSP:TRANSPARENT
    X-NEXTCLOUD-BC-FIELD-TYPE:BDAY
    X-NEXTCLOUD-BC-UNKNOWN-YEAR:0
    X-NEXTCLOUD-BC-YEAR:1983
    END:VEVENT
    END:VCALENDAR
    
    
    HTTP RESPONSE
    Response{protocol=h2, code=404, message=, url=https://nextcloud.******.***/remote.php/dav/calendars/sant/contact_birthdays/contacts-goog323.ics}
    <?xml version="1.0" encoding="utf-8"?>
    <d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
      <s:exception>Sabre\DAV\Exception\NotFound</s:exception>
      <s:message>Node with name 'contacts-goog323.ics' could not be found</s:message>
    </d:error>
    
    
    LOCAL RESOURCE
    LocalEvent=[eTag=null, fileName=contacts-goog323.ics, flags=1, scheduleTag=null, weAreOrganizer=true, calendar=at.bitfire.davdroid.resource.LocalCalendar@c88a8de, event=Event=[alarms=[], attendees=[], categories=[], classification=CLASS:PUBLIC, color=null, description=null, dtEnd=DTEND;VALUE=DATE:19830507, dtStart=DTSTART;VALUE=DATE:19830506, duration=null, exDates=[], exRules=[], exceptions=[], lastModified=null, location=null, opaque=false, organizer=null, rDates=[], rRules=[RRULE:FREQ=YEARLY
    ], recurrenceId=null, status=null, summary=🎂 redacted (1983), unknownProperties=[X-NEXTCLOUD-BC-FIELD-TYPE:BDAY
    , X-NEXTCLOUD-BC-UNKNOWN-YEAR:0
    , X-NEXTCLOUD-BC-YEAR:1983
    ], url=null, userAgents=[org.lineageos.etar], sequence=1, uid=sabre-vobject-redacted], id=10]
    
    REMOTE RESOURCE
    https://nextcloud.******.***/remote.php/dav/calendars/sant/contact_birthdays/contacts-goog323.ics
    
    SOFTWARE INFORMATION
    
    ┌────────────────────────────────┬────────────┬───────────┬───────────────────┬───────┐
    │ Package                        │ Version    │ Code      │ Installer         │ Notes │
    ├────────────────────────────────┼────────────┼───────────┼───────────────────┼───────┤
    │ at.bitfire.davdroid            │ 3.3.10-ose │ 303100003 │ com.aurora.adroid │       │
    │ org.tasks                      │ 11.10      │ 111004    │ com.aurora.adroid │       │
    │ com.android.providers.contacts │ 11         │ 30        │ —                 │       │
    │ com.android.providers.calendar │ 11         │ 30        │ —                 │       │
    │ org.lineageos.etar             │ 11         │ 30        │ —                 │       │
    └────────────────────────────────┴────────────┴───────────┴───────────────────┴───────┘
    
    
    SYSTEM INFORMATION
    
    Android version: 11 (lineage_gemini-userdebug 11 RQ2A.210305.006 eng.root.20210410.071343 dev-keys)
    Device: Xiaomi MI 5 (gemini)
    Locale(s): [en_US]
    
    
    CONNECTVITY
    
     ☒ wlan0
       - [ Transports: WIFI Capabilities: NOT_METERED INTERNET NOT_RESTRICTED TRUSTED NOT_VPN VALIDATED NOT_ROAMING FOREGROUND NOT_CONGESTED NOT_SUSPENDED LinkUpBandwidth>=387247Kbps LinkDnBandwidth>=387247Kbps SignalStrength: -56 AdministratorUids: [] RequestorUid: -1 RequestorPackageName: null]
       - DNS: 84.116.46.23, 84.116.46.22
    
    Data saver: disabled
    
    
    CONFIGURATION
    
    Power saving disabled: yes
    System-wide synchronization: automatically
    
    Notifications:
     - sync isBlocked=false
      * syncProblems: importance=3
      * syncIoErrors: importance=1
      * syncWarnings: importance=2
     - status: importance=2
     - general: importance=3
     - debug: importance=4
    
    Permissions:
     - ACCESS_NETWORK_STATE: granted
     - ACCESS_WIFI_STATE: granted
     - FOREGROUND_SERVICE: granted
     - INTERNET: granted
     - READ_SYNC_SETTINGS: granted
     - READ_SYNC_STATS: granted
     - WRITE_SYNC_SETTINGS: granted
     - RECEIVE_BOOT_COMPLETED: granted
     - REQUEST_IGNORE_BATTERY_OPTIMIZATIONS: granted
     - READ_CONTACTS: granted
     - WRITE_CONTACTS: granted
     - READ_CALENDAR: granted
     - WRITE_CALENDAR: granted
     - ACCESS_COARSE_LOCATION: denied
     - ACCESS_FINE_LOCATION: denied
     - ACCESS_BACKGROUND_LOCATION: denied
     - org.dmfs.permission.READ_TASKS: denied
     - org.dmfs.permission.WRITE_TASKS: denied
     - org.tasks.permission.READ_TASKS: granted
     - org.tasks.permission.WRITE_TASKS: granted
    
    
    ACCOUNTS
    
     - Account: sant@******.***
    
    ┌──────────────────────────────────┬──────────┬───────────┬──────────┬───────────────────────────────────┐
    │ Authority                        │ Syncable │ Auto-sync │ Interval │ Entries                           │
    ├──────────────────────────────────┼──────────┼───────────┼──────────┼───────────────────────────────────┤
    │ at.bitfire.davdroid.addressbooks │ 1        │ true      │ 240 min  │ —                                 │
    │ com.android.calendar             │ 1        │ true      │ 240 min  │ 57 event(s)                       │
    │ org.dmfs.tasks                   │ 0        │ false     │ 1440 min │ —                                 │
    │ org.tasks.opentasks              │ 1        │ true      │ 240 min  │ 9 tasks.org task(s)               │
    │ com.android.contacts             │ 0        │ false     │ —        │ 0 wrongly assigned raw contact(s) │
    └──────────────────────────────────┴──────────┴───────────┴──────────┴───────────────────────────────────┘
    
      WiFi only: false
      Contact group method: CATEGORIES
      Time range (past days): 90
      Default alarm (min before): null
      Manage calendar colors: true
      Use event colors: true
    
      * Address book: Contacts (sant@******.*** Sw)
        
        ┌──────────────────────┬──────────┬───────────┬──────────┬────────────────────┐
        │ Authority            │ Syncable │ Auto-sync │ Interval │ Entries            │
        ├──────────────────────┼──────────┼───────────┼──────────┼────────────────────┤
        │ com.android.contacts │ 1        │ true      │ 1440 min │ 239 raw contact(s) │
        └──────────────────────┴──────────┴───────────┴──────────┴────────────────────┘
        
        URL: https://nextcloud.******.***/remote.php/dav/addressbooks/users/sant/contacts/
        Read-only: 0
    
    
    DATABASE DUMP
    
    android_metadata
    
    ┌────────┐
    │ locale │
    ├────────┤
    │ en_US  │
    └────────┘
    
    service
    
    ┌────┬─────────────────┬─────────┬────────────────────────────────────────────────────────────────────┐
    │ id │ accountName     │ type    │ principal                                                          │
    ├────┼─────────────────┼─────────┼────────────────────────────────────────────────────────────────────┤
    │ 1  │ sant@******.*** │ carddav │ https://nextcloud.******.***/remote.php/dav/principals/users/sant/ │
    │ 2  │ sant@******.*** │ caldav  │ https://nextcloud.******.***/remote.php/dav/principals/users/sant/ │
    └────┴─────────────────┴─────────┴────────────────────────────────────────────────────────────────────┘
    
    sqlite_sequence
    
    ┌────────────┬─────┐
    │ name       │ seq │
    ├────────────┼─────┤
    │ service    │ 2   │
    │ homeset    │ 2   │
    │ collection │ 7   │
    └────────────┴─────┘
    
    homeset
    
    ┌────┬───────────┬──────────┬──────────────────────────────────────────────────────────────────────┬──────────┬─────────────┐
    │ id │ serviceId │ personal │ url                                                                  │ privBind │ displayName │
    ├────┼───────────┼──────────┼──────────────────────────────────────────────────────────────────────┼──────────┼─────────────┤
    │ 1  │ 1         │ 1        │ https://nextcloud.******.***/remote.php/dav/addressbooks/users/sant/ │ 1        │ —           │
    │ 2  │ 2         │ 1        │ https://nextcloud.******.***/remote.php/dav/calendars/sant/          │ 1        │ —           │
    └────┴───────────┴──────────┴──────────────────────────────────────────────────────────────────────┴──────────┴─────────────┘
    
    collection
    
    ┌────┬───────────┬───────────┬──────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────────────┬────────────┬───────────────┬────────────────────┬─────────────┬────────────────────────────────────────────────────────────────────┬──────────┬──────────┬────────────────┬───────────────┬──────────────────┬──────────────────────────────────────────────────────────┬──────┐
    │ id │ serviceId │ homeSetId │ type         │ url                                                                                                               │ privWriteContent │ privUnbind │ forceReadOnly │ displayName        │ description │ owner                                                              │ color    │ timezone │ supportsVEVENT │ supportsVTODO │ supportsVJOURNAL │ source                                                   │ sync │
    ├────┼───────────┼───────────┼──────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────┼────────────┼───────────────┼────────────────────┼─────────────┼────────────────────────────────────────────────────────────────────┼──────────┼──────────┼────────────────┼───────────────┼──────────────────┼──────────────────────────────────────────────────────────┼──────┤
    │ 1  │ 1         │ 1         │ ADDRESS_BOOK │ https://nextcloud.******.***/remote.php/dav/addressbooks/users/sant/contacts/                                     │ 1                │ 1          │ 0             │ Contacts           │ —           │ https://nextcloud.******.***/remote.php/dav/principals/users/sant/ │ —        │ —        │ —              │ —             │ —                │ —                                                        │ 1    │
    │ 2  │ 1         │ 1         │ ADDRESS_BOOK │ https://nextcloud.******.***/remote.php/dav/addressbooks/users/sant/z-app-generated--contactsinteraction--recent/ │ 0                │ 0          │ 0             │ Recently contacted │ —           │ https://nextcloud.******.***/remote.php/dav/principals/users/sant/ │ —        │ —        │ —              │ —             │ —                │ —                                                        │ 0    │
    │ 3  │ 2         │ 2         │ CALENDAR     │ https://nextcloud.******.***/remote.php/dav/calendars/sant/testlijst/                                             │ 1                │ 1          │ 0             │ Work               │ —           │ https://nextcloud.******.***/remote.php/dav/principals/users/sant/ │ -3395204 │ —        │ 0              │ 1             │ 0                │ —                                                        │ 1    │
    │ 4  │ 2         │ 2         │ CALENDAR     │ https://nextcloud.******.***/remote.php/dav/calendars/sant/contact_birthdays/                                     │ 0                │ 0          │ 0             │ Contact birthdays  │ —           │ https://nextcloud.******.***/remote.php/dav/principals/users/sant/ │ -1451943 │ —        │ 1              │ 0             │ 0                │ —                                                        │ 1    │
    │ 5  │ 2         │ 2         │ CALENDAR     │ https://nextcloud.******.***/remote.php/dav/calendars/sant/personal/                                              │ 1                │ 1          │ 0             │ Personal           │ —           │ https://nextcloud.******.***/remote.php/dav/principals/users/sant/ │ -8824149 │ —        │ 1              │ 0             │ 0                │ —                                                        │ 1    │
    │ 6  │ 2         │ 2         │ WEBCAL       │ https://nextcloud.******.***/remote.php/dav/calendars/sant/wwwthunderbirdnet/                                     │ 1                │ 1          │ 0             │ Feestdagen         │ —           │ https://nextcloud.******.***/remote.php/dav/principals/users/sant/ │ -807141  │ —        │ 1              │ —             │ —                │ https://www.thunderbird.net/media/caldata/USHolidays.ics │ 1    │
    │ 7  │ 2         │ 2         │ CALENDAR     │ https://nextcloud.******.***/remote.php/dav/calendars/sant/app-generated--deck--board-2/                          │ 0                │ 0          │ 0             │ Deck: To do list   │ —           │ https://nextcloud.******.***/remote.php/dav/principals/users/sant/ │ -4978166 │ —        │ 0              │ 1             │ 0                │ —                                                        │ 1    │
    └────┴───────────┴───────────┴──────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────┴────────────┴───────────────┴────────────────────┴─────────────┴────────────────────────────────────────────────────────────────────┴──────────┴──────────┴────────────────┴───────────────┴──────────────────┴──────────────────────────────────────────────────────────┴──────┘
    
    
    APP SETTINGS
    
    1. SharedPreferencesProvider canWrite=true
    
    ┌───────────────────────────┬───────────────┐
    │ Setting                   │ Value         │
    ├───────────────────────────┼───────────────┤
    │ hint_AutostartPermissions │ false         │
    │ time_nextDonationPopup    │ 1628028768992 │
    └───────────────────────────┴───────────────┘
    
    2. DefaultsProvider canWrite=false
    
    ┌───────────────────────┬───────────┐
    │ Setting               │ Value     │
    ├───────────────────────┼───────────┤
    │ default_sync_interval │ 14400     │
    │ distrust_system_certs │ false     │
    │ override_proxy        │ false     │
    │ override_proxy_host   │ localhost │
    │ override_proxy_port   │ 8118      │
    └───────────────────────┴───────────┘
    
    --- END DEBUG INFO ---
    

    So if I understand correctly, Read-only: 0 should be 1 so this might be a bug or misconfiguration on Nextcloud. I read the topic you linked and the description seems to be similar. If I understand correctly from that topic, disabling and syncing and enabling and syncing again removes the error. But how to I prevent this from happening again?

    The other option would be to silently ignore the changes, ie. causing user data to vanish.

    Or an option to drop the data on a per error basis, so the user won’t have to see these errors for the next two years until they get a new phone. Is there currently an option to willingly drop a record that causes a perpetual error?

  • developer

    @sant said in Error repetition - does DAVx⁵ give up at some point?:

    So if I understand correctly, Read-only: 0 should be 1 so this might be a bug or misconfiguration on Nextcloud. I read the topic you linked and the description seems to be similar. If I understand correctly from that topic, disabling and syncing and enabling and syncing again removes the error. But how to I prevent this from happening again?

    forceRead only is when the user forces read-only. The server permissions are shown in privWriteContent. If privWriteContent=0, it means a collection is read-only. In this case, DAVx⁵ sets the calendar to read-only. This is usually the case with Nextcloud birthday calendars. I guess it’s the Etar problem mentioned above.

    OpenTasks unfortunately doesn’t have a read-only mode (yet).


  • @rfc2822 said in Error repetition - does DAVx⁵ give up at some point?:

    In this case, DAVx⁵ sets the calendar to read-only. This is usually the case with Nextcloud birthday calendars. I guess it’s the Etar problem mentioned above.

    It seems to be the same problem indeed.

    So if DAVx⁵ knows the calendar on the server is read-only, and Etar sets a reminder on that read-only calendar, shouldn’t DAVx⁵ ignore this reminder?

    Etar probably means to set a phone only reminder not meant to be synced. Like an alarm. Because having a read-only calendar shouldn’t prevent a user from setting a reminder in their own phone if they choose to. I think this is a feature from Etar, not a bug.

  • developer

    @sant said in Error repetition - does DAVx⁵ give up at some point?:

    So if DAVx⁵ knows the calendar on the server is read-only, and Etar sets a reminder on that read-only calendar, shouldn’t DAVx⁵ ignore this reminder?

    DAVx⁵ trusts that calendars marked as CAL_ACCESS_READ won’t be modified.

    Etar probably means to set a phone only reminder not meant to be synced. Like an alarm. Because having a read-only calendar shouldn’t prevent a user from setting a reminder in their own phone if they choose to. I think this is a feature from Etar, not a bug.

    There is no possibility to set alarms as “shall be synchronized” or “shall not be synchronized”. So DAVx⁵ has to assume that all alarms shall be synchronized, which results in an error in your case.

    Other calendar apps I have tested don’t allow reminders to be set on events of CAL_ACCESS_READ calendars. This topic (whether it’s allowed to add reminders on read-only events) would have to be clarified before implementing something. Do you have any additional information on that?


  • @rfc2822 said in Error repetition - does DAVx⁵ give up at some point?:

    This topic (whether it’s allowed to add reminders on read-only events) would have to be clarified before implementing something. Do you have any additional information on that?

    I’m more of a pragmatic person. I want to set a reminder in my phone. Etar allows me to set that reminder in my phone. DAVx⁵ pushes an error notifications ad infinitum. Guess which one is the annoying one?

    While I don’t know if it’s allowed to add reminders on read-only events, I did learn that it is certainly possible to do so. Perhaps it would make sense if DAVx⁵ treats this case as a possibility. It could notify with a dedicated warning: “Reminders can’t be synced with read-only calendar. Ignore future attempts? Y/N”

    Consider that Etar is on the majority of AOSP out there. Millions of devices. LineageOS alone has over 4 million installations.

    Alternatively, I’m not sure if this is relevant or correct - consider this just a thought - but Google Assistant allows you to set reminders that do not seem to be attached to any calendars. Let’s call this “independent reminders”. In this case, there could be a setting: “Ignore EVENT_ID for reminders on read-only calendars Y/N”

  • admin

    @sant Thank you for the insights. We will consider implementing this in future releases and I tagged the topic as an enhancement!

Similar topics