Windows Atomic File Publication
Headless-dokumentsparande förbereder och spolar en exklusiv stagingfil i målkatalogen innan dess completa byte publiceras genom atomär ersättning
På Windows tillåter övergående ERROR_ACCESS_DENIED-, ERROR_SHARING_VIOLATION- och ERROR_LOCK_VIOLATION-fel högst åtta MoveFileEx-försök med MOVEFILE_REPLACE_EXISTING och MOVEFILE_WRITE_THROUGH
Väntar mellan försöken är 1, 2, 4, 8, 16, 16 och 16 millisekunder, sammanlagt högst 63 millisekunders begärda väntan; operativsystemets schemaläggning och syscall-längd bestämmer den faktiska förloppstiden
Avbrott observeras före varje försök och före och efter varje väntan; en lyckad atomär ersättning är publiceringsgränsen
Permanent låsning eller åtkomstbegränsningar bevarar den ursprungliga destinationen och rapporterar det senast fångade Windows-felet; andra operativsystemfel misslyckas omedelbart
Misslyckade dokumentsparanden städar upp sina egna stagingfiler; publiceringen tar inte bort en befintlig destination och faller inte tillbaka till en partiell kopia
Samma privata väg publicerar ordinära sparanden, signerade PDF:er och fristående dokumenttidsstämplar; Linux fortsätter att använda sin fsync- och namnbyteväg
Faktisk acceptans
Tester håller genuina Windows-filhandles som nekar borttagning, släpper ett övergående lås på en annan tråd, behåller permanenta lås, avbryter under försök och prövar skrivskyddad ersättning
Varje Windows-mål utför också 500 completa atomära ersättningar och 50 verkliga dokumentsparanden med nativ omläsning, med bevarade källbyte och kontroll av stagingfilsstädning
En separat enbart-WinAPI-sondering reproducerar det ursprungliga intermittenta nekad-åtkomst-felet utan HotPDF eller Cairo; den identifierar publiceringsgränsen utan att tillskriva orsaken en oobserverad process