pimutils / pimutils/vdirsyncer

vdirsyncer fails to sync privately shared icloud calendars

Open
#800 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
1.9k
Forks
185
Avg merge
11h 49m
Merged PRs (30d)
1

Description

My partner privately shares two icloud calendars with my calendars. Both calendars fails to sync with the following backtrace:

error: Unknown error occured for icloud_cal/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx: /xxxxxxxx/calendars/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.ics
debug:   File "/usr/lib/python3.7/site-packages/vdirsyncer/cli/tasks.py", line 69, in sync_collection
debug:     partial_sync=pair.partial_sync
debug:   File "/usr/lib/python3.7/site-packages/vdirsyncer/sync/__init__.py", line 136, in sync
debug:     b_nonempty = b_info.prepare_new_status()
debug:   File "/usr/lib/python3.7/site-packages/vdirsyncer/sync/__init__.py", line 59, in prepare_new_status
debug:     if prefetch else ()):
debug:   File "/usr/lib/python3.7/site-packages/vdirsyncer/storage/dav.py", line 505, in get_multi
debug:     raise exceptions.NotFoundError(href)

These calendars have an id that is much longer than the "normal" calendars (64 characters). Could this be a size limit on the file name?

  • Your vdirsyncer version: 0.16.7
  • If applicable, which server software (and which version) you're using: icloud calendars
  • Your Python version: 3.7.3
  • Your operating system: ArchLinux, up to date
  • Your config file:
[general]
status_path = "~/.vdirsyncer/status/"

[pair icloud_cal]
a = "icloud_cal_local"
b = "icloud_cal_remote"
collections = ["from a", "from b"]
metadata = ["displayname"]

[storage icloud_cal_local]
type = "filesystem"
path = "~/.calendars/icloud/"
fileext = ".ics"

[storage icloud_cal_remote]
type = "caldav"
url = "https://caldav.icloud.com/"
username = "…"
password = "…"

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in vdirsyncer/storage/dav.py at get_multi, following the NotFoundError shown in the traceback, and reproduce the sync with privately shared iCloud calendars. Done means the shared calendars synchronize successfully without the reported unknown error or missing-resource failure.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.