delete() sends no If-Match, so a concurrent change is deleted silently
I maintainer di solito rispondono entro 1 giorno
Una pull request collegata è già stata integrata.
- #747 di @tobixen — integrata
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- Mezza giornata
- Idoneità per principianti
- 22/100
Direzione di ricerca
Start with DAVObject.delete() and _post_delete() in the caldav package, and compare them with save(), which already sends If-Match and If-Schedule-Tag-Match. Decide how 404 should behave when a precondition is given, and check the work in linked pull request #747 before starting. Done means delete() sends the etag precondition, a 412 raises a catchable error, and tests cover both cases.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Disclaimer: AI-generated text below the line, generated by Claude Opus 5.5 (Claude Code), from the prompt:
https://github.com/pycalendar/calendaring-sync/pull/19 [and the design notes of the calendaring library] - please file the issues mentioned in that pull request
DAVObject.delete() calls self.client.delete(str(self.url)) without any precondition header, and _post_delete() treats 404 as success.
save() can already send If-Match / If-Schedule-Tag-Match. delete() cannot, so a client that last saw etag A will delete the object even if someone else has changed it to etag B in the meantime. For a sync engine that is data loss: the remote edit should have become a conflict instead.
Wanted: delete() sends If-Match: <etag> when the object has a known etag (or on request, e.g. delete(if_match=True) / delete(etag=...)), and a 412 raises a distinct error the caller can catch. Whether 404 should still count as success when a precondition was given is worth deciding at the same time.
Related: https://github.com/python-caldav/caldav/issues/152 (collision avoidance on save).
Found by calendaring-sync: https://github.com/pycalendar/calendaring-sync/pull/19
- Lingua principale
- Python
- Stelle
- 412
- Fork
- 113
- Merge medio
- 1g 7h
- PR unite (30g)
- 34
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di python-caldav/caldav
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
python-caldav/caldav#687 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
python-caldav/caldav#763 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
python-caldav/caldav#761 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
python-caldav/caldav#725 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
python-caldav/caldav#720 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di python-caldav/caldav
Issue simili
-
Consolidate the now-identical CLI-native and composed tasks_packages guards (#5945 follow-up)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
spec-kitty/spec-kitty#6112 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: OpenRouter streaming chunks report the requested router name instead of the model OpenRouter servedForse già presa @Mrun25 l’ha presa oggi. Apertabug llm translation
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
BerriAI/litellm#46095 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
uberdeveloper/fastbt#29 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
andrew-blake/melcloudhome#368 ·
I maintainer di solito rispondono entro 1 giorno
-
lane:discover
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
SPARDiffData/differential-data-collection#33 ·
I maintainer di solito rispondono entro 1 giorno