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