Halte einen unvollständigen Kandidaten vom lesenden Programm fern.
Die Pipeline führt einen sichtbaren Stand und einen getrennten Kandidaten. Schreiben und Validieren verändern zunächst nur den Kandidaten. Erst ein bestandener Vertrag erlaubt den Wechsel des sichtbaren Namens. Unter passenden Dateisystembedingungen kann ein Namensaustausch atomare Sichtbarkeit liefern: Leser des Namens erhalten eine vollständige alte oder neue Version. Das ist noch keine Zusage über dauerhafte Speicherung nach Stromausfall. Auch Dateisystemgrenzen, offene Leser und Plattformverhalten müssen zur konkreten Implementierung passen. Unser Dictionary-Modell stellt nur die logische Veröffentlichung dar und beweist keine Eigenschaft eines echten Dateisystems.
Ein Beispiel
Sichtbar ist catalog.current mit drei gültigen Einträgen. catalog.pending enthält nach einem Schreibfehler nur zwei unvollständige Einträge. Die Prüfung scheitert; Leser bleiben bei den drei alten Einträgen. Dasselbe gilt beim simulierten Fehler unmittelbar vor dem Namenswechsel. Erst ein vollständig gültiger Kandidat darf den sichtbaren Stand ersetzen.
Python 3.11 · Lehrbeispiel
def publish(current, candidate, valid):
if not valid:
return current, "validation_failed"
return candidate, "published"
print(publish("Version 3", "unvollständig", False))
print(publish("Version 3", "Version 4", True))
Erwartete Ausgabe
('Version 3', 'validation_failed')
('Version 4', 'published')