pimutils / pimutils/vdirsyncer
Precondition failed (HTTP 412) when rerunning sync to mailbox.org
Open
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1.9k
- Forks
- 185
- Avg merge
- 11h 49m
- Merged PRs (30d)
- 1
Description
Report
Steps to reproduce
- Sync from Google to local
- Sync from local to Mailfence
- Repair unsafe UID on Mailfence
- Wipe out local (store and status)
- Sync Mailfence to local
- Sync local to Mailbox (with manual throttling through KeyboardInterrupt)
Expected behavior
- Items are uploaded to Mailbox until keyboard interrupt (Ctrl-C).
- Then, when sync is resumed (rerun), some more items are uploaded.
- Finally, there is nothing left to sync and it exits successfully.
Actual behavior
- Items are uploaded to Mailbox until keyboard interrupt.
- Then, when sync is resumed (rerun), there are conflicts, despite no concurrent modification from other clients.
System details
- Your vdirsyncer version: 0.16.4
- If applicable, which server software (and which version) you're using: Google, Mailbox, Mailfence
- Your Python version: 3.6.5
- Your operating system: Arch Linux \r (\l)
- Your config file: config.txt
- Use
vdirsyncer -vdebugfor debug output. vdebug.txt
Example
The item 00150f4f-5342-4cea-9fff-89d9af72ebcc.ics:
Copying (uploading) item 00150f4f-5342-4cea-9fff-89d9af72ebcc to mailbox_calendars/50
debug: Normalized URL from '00150f4f-5342-4cea-9fff-89d9af72ebcc.ics' to '/caldav/50/00150f4f-5342-4cea-9fff-89d9af72ebcc.ics'
debug: PUT https://dav.mailbox.org/caldav/50/00150f4f-5342-4cea-9fff-89d9af72ebcc.ics
debug: {'User-Agent': 'vdirsyncer/0.16.4', 'Content-Type': 'text/calendar', 'If-None-Match': '*'}
/.../
debug: Sending request...
debug: 412
debug: {'Date': 'Thu, 24 May 2018 21:20:11 GMT', 'Server': 'Openexchange WebDAV', 'X-Robots-Tag': 'none', 'Content-Length': '0', 'Strict-Transport-Security': 'max-age=15768000', 'Keep-Alive': 'timeout=5, max=98', 'Connection': 'Keep-Alive', 'Content-Type': 'text/calendar'}
error: Unknown error occured for calendars__local__mailbox/main: Precondition Failed
Resources
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 attached vdebug.txt and config.txt, tracing the interrupted upload and the resumed PUT that receives HTTP 412 with If-None-Match: *. Read the sync and WebDAV request-handling entry points implicated by that trace; done means an interrupted sync can be rerun without reporting false conflicts and eventually exits successfully.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend, networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100