vdirsyncer icon indicating copy to clipboard operation
vdirsyncer copied to clipboard

crash when syncing raise exceptions.NotFoundError(href)

Open ttyridal opened this issue 11 months ago • 4 comments

vdirsyncer, version 0.19.3, still present in main Ubuntu 22.04.5, 24.04 python 3.10.12, 3.12.3

debug: Already normalized: '/caldav/v2/[email protected]/events/x-apple-reminderkit%3A//REMCDReminder/0C2F0D87-XXXX-XXXX-XXXX-XXXXXXXX.ics'
debug: Skipping '/caldav/v2/[email protected]/events/x-apple-reminderkit%3A//REMCDReminder/0C2F0D87-XXXX-XXXX-XXXX-XXXXXXXX.ics', properties are missing.
error: Unknown error occurred for my_gcals/family: /caldav/v2/[email protected]/events/x-apple-reminderkit%3A//REMCDReminder/0C2F0D87-XXXX-XXXX-XXXX-XXXXXXXX.ics
error: Use `-vdebug` to see the full traceback.
debug:   File "/vdirsync/vdirsyncer/cli/tasks.py", line 74, in sync_collection
debug:     await sync.sync(
debug:   File "/vdirsync/vdirsyncer/sync/__init__.py", line 150, in sync
debug:     b_nonempty = await b_info.prepare_new_status()
debug:                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/vdirsync/vdirsyncer/sync/__init__.py", line 69, in prepare_new_status
debug:     async for href, item, etag in self.storage.get_multi(prefetch):
debug:   File "/vdirsync/vdirsyncer/storage/dav.py", line 551, in get_multi
debug:     raise exceptions.NotFoundError(href)

ttyridal avatar Jan 16 '25 08:01 ttyridal

Still a problem from latest main

The offending xml/href seems to be a not found response (should have been detected earlier??)

<ns0:multistatus xmlns:ns0="DAV:">
 <ns0:response> <ns0:href>/caldav/v2/[email protected]/events/x-apple-reminderkit%3A//REMCDReminder/0C2F0D87-XXXX-XXXX-XXXX-XXXXXXXX.ics</ns0:href>
  <ns0:status>HTTP/1.1 404 Not Found</ns0:status>
 </ns0:response>
</ns0:multistatus>

no surprise there are no propstat

Interestingly, I can remove the offending raise, without any (obvious) downside.

--- a/vdirsyncer/storage/dav.py
+++ b/vdirsyncer/storage/dav.py
@@ -547,8 +547,8 @@ class DAVStorage(Storage):
                         dav_logger.warning(f"Server sent unsolicited item: {href}")
                 else:
                     rv.append((href, Item(raw), etag))
-            for href in hrefs_left:
-                raise exceptions.NotFoundError(href)
+#            for href in hrefs_left:
+#                raise exceptions.NotFoundError(href)

ttyridal avatar Jun 10 '25 20:06 ttyridal

possibly duplicate of #1151

ttyridal avatar Jun 10 '25 20:06 ttyridal

There is nothing standing out in the event itself. except for one thing: the traceback has .ics suffix on the href, while the id in the event has not. Don't know if that's significant?

  {
   "kind": "calendar#event",
   "etag": "\"3472660206160000\"",
   "id": "xxxxxxxx",
   "status": "confirmed",
   "htmlLink": "https://www.google.com/calendar/event?eid=xxxxxxxx",
   "created": "2025-01-08T09:55:03.000Z",
   "updated": "2025-01-08T09:55:03.080Z",
   "summary": "clean_ascii",
   "creator": {
    "email": "clean_ascii_email",
    "displayName": "TTyridal"
   },
   "organizer": {
    "email": "[email protected]",
    "displayName": "AsciiCalendarName",
    "self": true
   },
   "start": {
    "dateTime": "2025-03-04T13:00:00+01:00",
    "timeZone": "Europe/Oslo"
   },
   "end": {
    "dateTime": "2025-03-04T14:00:00+01:00",
    "timeZone": "Europe/Oslo"
   },
   "iCalUID": "x-apple-reminderkit://REMCDReminder/0C2F0D87-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
   "sequence": 0,
   "reminders": {
    "useDefault": true
   },
   "eventType": "default"
  },

ttyridal avatar Jun 10 '25 21:06 ttyridal

The event URL has a colon, and my initial guess would be that we're escaping it wrong.

Possibly related to https://github.com/pimutils/vdirsyncer/issues/1154

WhyNotHugo avatar Jun 17 '25 12:06 WhyNotHugo