pimutils / pimutils/vdirsyncer
vdirsyncer incorrectly complains that "Storage was completely emptied"
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1.9k
- Forks
- 185
- Avg merge
- 11h 49m
- Merged PRs (30d)
- 1
Description
I successfully synced from local (filesystem on Arch Linux) to remote (radicale server 2.1.8) once. Now on the subsequent runs I get the errer shown below. Note that I am able to sync from the radicale server to a phone. So the remote is not actually empty.
Does it have to do with normalization?
This is vdirsyncer 0.16.3.
debug: Using 1 maximal workers.
Syncing addressbook
debug: PROPFIND http://192.168.1.1:5232/user/addressbook.vcf/
debug: {'User-Agent': 'vdirsyncer/0.16.3', 'Content-Type': 'application/xml; charset=UTF-8', 'Depth': '1'}
debug: <?xml version="1.0" encoding="utf-8" ?>
debug: <D:propfind xmlns:D="DAV:">
debug: <D:prop>
debug: <D:resourcetype/>
debug: <D:getcontenttype/>
debug: <D:getetag/>
debug: </D:prop>
debug: </D:propfind>
debug:
debug: Sending request...
debug: 207
debug: {'Date': 'Fri, 22 Dec 2017 21:01:02 GMT', 'Server': 'WSGIServer/0.2 CPython/3.6.3', 'DAV': '1, 2, 3, calendar-access, addressbook, extended-mkcol', 'Content-Type': 'text/xml; charset=utf-8', 'Content-Encoding': 'gzip', 'Content-Length': '31299'}
debug: <?xml version='1.0' encoding='utf-8'?>
debug: <multistatus xmlns="DAV:"
xmlns:CR="urn:ietf:params:xml:ns:carddav">
<response>
<href>/user/addressbook.vcf/</href>
<propstat>
<prop>
<resourcetype>
<collection />
</resourcetype>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<getcontenttype />
<getetag />
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>
/user/addressbook.vcf/i1y36nwmmjny43q371o12933nj52x9wg9clw.vcf/</href>
<propstat>
<prop>
<resourcetype>
<CR:addressbook />
<collection />
</resourcetype>
<getcontenttype>text/vcard</getcontenttype>
<getetag>"ebf1610a8cd56d4ce5b6aec03d090f23"</getetag>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
<response>
<href>
/user/addressbook.vcf/i6g5lzucj5umfdikxgulldltt78wumrwntby.vcf/</href>
<propstat>
<prop>
<resourcetype>
<CR:addressbook />
<collection />
</resourcetype>
<getcontenttype>text/vcard</getcontenttype>
<getetag>"9fc7b2fe0990fceb031f6568b04219dd"</getetag>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
Many more responses like this before "multistatus" is closed:
</multistatus>
Then loads of messages like this:
debug: Already normalized: '/user/addressbook.vcf/n4vq5kmkwk.vcf/'
debug: Skipping '/user/addressbook.vcf/n4vq5kmkwk.vcf/', is collection.
Finally:
error: addressbook: Storage "addressbook_remote" was completely emptied. If you want to delete ALL entries on BOTH sides, then use `vdirsyncer sync --force-delete addressbook`. Otherwise delete the files for addressbook in your status directory.
error: 1 out of 2 tasks failed.
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 by reproducing the vdirsyncer sync failure with Radicale 2.1.8 and the logged PROPFIND response, then trace response normalization and the storage-empty safety check. Done means a non-empty remote address book is not reported as completely emptied, with regression coverage for this response shape.
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