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

SaveToFile · Signeringsarbetsflöden