pimutils / pimutils/vdirsyncer
Sync fails randomly with Nextcloud's "Contact birthdays" calendar.
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1.9k
- Forks
- 185
- Avg merge
- 11h 49m
- Merged PRs (30d)
- 1
Description
I have syncing of calendars set up with Nextcloud that generates a "Contact birthdays" calendar in the collection automatically. Sometimes syncing this calendar fails, and then everything remains unsynced. If I do a vdirsyncer sync calendars/other_calendar, that will work properly. Not with the contact birthdays, unfortunately.
vdirsyncer discover manages to find the calendar, and vdirsyncer metasync successfuly syncs metadata.
I tried syncing again, changing conflict resolution so that "b wins", but that did not help.
Might be related to #832.
- Your vdirsyncer version
- 0.19.2-1
- If applicable, which server software (and which version) you're using
- Nextcloud hub
- Your Python version
- Python 3.11.6
- Your operating system
- Arch Linux
- Your config file
[pair calendars]
a = "local_cal"
b = "cal"
collections = ["from a", "from b"]
metadata = ["color"]
conflict_resolution = ["command", "nvim", "-d"]
[storage local_cal]
type = "filesystem"
path = "~/.local/share/calendars/nextcloud"
fileext = ".ics"
[storage cal]
type = "caldav"
url = "https://xxxxxxxxxxxxxxxxxxxxxxx/remote.php/dav"
username = "xxxxxxxxxx"
password.fetch = ["command", "secret-tool", "lookup", "server", "nextcloud", "username", "xxxxxxxxxx", "app", "vdirsyncer"]
- Use
vdirsyncer -vdebugfor debug output. The output is sensitive, but
please attach at least the last few lines before the error (if applicable),
censored as necessary. This is almost always the most useful information.
error: Unknown error occurred for calendars/contact_birthdays: Not Found
error: Use `-vdebug` to see the full traceback.
debug: File "/usr/lib/python3.11/site-packages/vdirsyncer/cli/utils.py", line 70, in handle_cli_error
debug: raise e
debug: File "/usr/lib/python3.11/site-packages/vdirsyncer/sync/__init__.py", line 160, in sync
debug: await action.run(a_info, b_info, conflict_resolution, partial_sync)
debug: File "/usr/lib/python3.11/site-packages/vdirsyncer/sync/__init__.py", line 183, in run
debug: await self._run_impl(a, b)
debug: File "/usr/lib/python3.11/site-packages/vdirsyncer/sync/__init__.py", line 234, in _run_impl
debug: meta.etag = await self.dest.storage.update(meta.href, self.item, meta.etag)
debug: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug: File "/usr/lib/python3.11/site-packages/vdirsyncer/storage/base.py", line 22, in inner
debug: return await f(self, *args, **kwargs)
debug: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug: File "/usr/lib/python3.11/site-packages/vdirsyncer/storage/base.py", line 22, in inner
debug: return await f(self, *args, **kwargs)
debug: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug: File "/usr/lib/python3.11/site-packages/vdirsyncer/storage/dav.py", line 596, in update
debug: href, etag = await self._put(self._normalize_href(href), item, etag)
debug: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug: File "/usr/lib/python3.11/site-packages/vdirsyncer/storage/dav.py", line 569, in _put
debug: response = await self.session.request(
debug: ^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug: File "/usr/lib/python3.11/site-packages/vdirsyncer/storage/dav.py", line 416, in request
debug: return await http.request(method, url, session=session, **more)
debug: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug: File "/usr/lib/python3.11/site-packages/vdirsyncer/http.py", line 155, in request
debug: raise exceptions.NotFoundError(response.reason)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the traceback in vdirsyncer/sync/init.py and follow the update path into vdirsyncer/storage/dav.py, especially update, _put, and request. Reproduce the failure against Nextcloud’s “Contact birthdays” calendar with vdirsyncer -vdebug, comparing it with a calendar that syncs. Done means the affected calendar syncs successfully without the Not Found error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend, cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100