Windows Atomic File Publication

Headless documentopslag bereidt en flußt een exclusief staging-bestand in de doeldirectory voordat diens complete bytes via atomare vervanging worden gepubliceerd

Op Windows laten tijdelijke ERROR_ACCESS_DENIED-, ERROR_SHARING_VIOLATION- en ERROR_LOCK_VIOLATION-fouten hoogstens acht MoveFileEx-pogingen toe met MOVEFILE_REPLACE_EXISTING en MOVEFILE_WRITE_THROUGH

Waits tussen pogingen zijn 1, 2, 4, 8, 16, 16 en 16 milliseconden, samen hoogstens 63 milliseconden aan gevraagde waits; besturingssysteem-scheduling en syscall-duur bepalen de werkelijk verstreken tijd

Annulering wordt geobserveerd vóór elke poging en vóór en na elke wait; een voltooide geslaagde atomare vervanging is de publicatiegrens

Permanente locking of toegangsbeperkingen behouden de originele destination en rapporteren de laatst vastgelegde Windows-fout; andere besturingssysteemfouten falen direct

Gefaalde documentopslagen ruimen diens owned staging-bestanden op; publicatie verwijdert geen bestaande destination en valt niet terug op een partiele kopie

Hetzelfde privé-pad publiceert gewone saves, getekende PDF's en standalone document-timestamps; Linux blijft diens fsync- en rename-pad gebruiken

Echte acceptatie

Tests houden echte Windows deletion-denying file-handles vast, geven een tijdelijke lock op een andere thread vrij, houden permanente locks vast, annuleren tijdens retry en proberen read-only vervanging

Elke Windows-target voert ook 500 complete atomare vervangingen en 50 echte documentopslagen met native herladen uit, met behoud van bronbytes en check van staging-bestandsopruiming

Een apart WinAPI-only-proef reproduceert de oorspronkelijke intermitterende access-denied-fout zonder HotPDF of Cairo; dit identificeert de publicatiegrens zonder de oorzaak toe te schrijven aan een niet-geobserveerd proces

SaveToFile · Signing workflows