The new SeparateBodyFileCache design makes updates/reads non-atomic

Offen
#324 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

  • #435 von @princ0301 — ohne Merge geschlossen

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
28/100
Issue-Typ
Bug
Klarheit
Muss geklärt werden
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
backend

Rechercherichtung

Beginne mit der Untersuchung des im Issue beschriebenen Designs von SeparateBodyFileCache und der zugehörigen Diskussion in #325. Lege fest, wie das Lesen und Schreiben von Metadaten und Body sich verhalten soll, wenn ein Prozess abstürzt oder mehrere Prozesse ein Cache-Verzeichnis gemeinsam nutzen; als erledigt gilt die Aufgabe, wenn unvollständige Einträge nicht als gültige Cache-Einträge erkannt werden und beide Vorgänge atomar sind.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug

The problem

Scenario 1

Program crashes after writing metadata but before writing body. Now the cache thinks the body is empty.

Scenario 2

Multiple processes using the same cache directory. Process A writes metadata, but not yet body. Process B gets metadata, then gets body, and now it thinks the body is empty.

Workarounds

For pip I added logic that basically pretends a cache entry is missing if it doesn't have both body and metadata files.

Solutions

Probably need both a new API that involves writing and reading both at once, and an implementation that makes sure that's atomic. See also the somewhat related #325.

Vorherrschende Sprache
Python
Sterne
505
Forks
159
Ø Merge
7 Std. 55 Min.
Gemergte PRs (30 T.)
7

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus psf/cachecontrol

Alle Issues in psf/cachecontrol

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.