Windows 原子式檔案發布
headless 文件儲存會先在目的地目錄準備並排清一個獨占的 staging 檔案,再透過原子式替換發布完整位元組
在 Windows 上,暫時性的 ERROR_ACCESS_DENIED、ERROR_SHARING_VIOLATION 與 ERROR_LOCK_VIOLATION 失敗最多允許八次帶 MOVEFILE_REPLACE_EXISTING 與 MOVEFILE_WRITE_THROUGH 的 MoveFileEx 嘗試
嘗試之間的等待為 1、2、4、8、16、16 與 16 毫秒,請求等待合計最多 63 毫秒;實際耗時由作業系統排程與系統呼叫持續時間決定
每次嘗試前與每次等待前後都會檢查取消;完成且成功的原子式替換即為發布邊界
永久鎖定或存取限制會保留原目的地並回報最後捕捉到的 Windows 錯誤;其他作業系統錯誤立即失敗
失敗的文件儲存會清理自己擁有的 staging 檔;發布不會刪除既有目的地,也不會退回部分複製
同一條私有路徑發布一般儲存、已簽署 PDF 與獨立的文件時間戳;Linux 繼續使用其 fsync 與 rename 路徑
實際驗收
測試會持有真正拒絕刪除的 Windows 檔案控制代碼、在另一條執行緒釋放暫時鎖、保留永久鎖、在重試期間取消,並嘗試對唯讀目的地替換
每個 Windows 目標還會執行 500 次完整的原子式替換與 50 次實際文件儲存並原生重新載入,保留來源位元組並檢查 staging 檔清理
一個僅用 WinAPI 的獨立探針在沒有 HotPDF 與 Cairo 的情況下重現原本間歇性的存取被拒失敗;這能定位發布邊界,而不把原因歸咎於未被觀察的程序