Windows 원자적 파일 발행
헤드리스 문서 저장은 대상 디렉터리의 배타적 스테이징 파일을 준비하고 플러시한 뒤, 원자적 교체로 완전한 바이트를 발행합니다
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 밀리초입니다. 실제 경과 시간은 운영 체제 스케줄링과 syscall 길이가 결정합니다
취소는 각 시도 전과 각 대기 전후에 관찰됩니다. 완료된 성공적인 원자적 교체가 발행 경계입니다
영구적인 잠금이나 접근 제한은 원래 대상을 보존하고 마지막으로 캡처한 Windows 오류를 보고합니다. 다른 운영 체제 오류는 즉시 실패합니다
실패한 문서 저장은 자기 소유 스테이징 파일을 정리합니다. 발행은 기존 대상을 삭제하지 않고 부분 복사로 폴백하지도 않습니다
같은 비공개 경로가 일반 저장, 서명된 PDF, 독립 문서 타임스탬프를 발행합니다. Linux는 계속 자기 fsync와 rename 경로를 씁니다
실제 인수 검증
테스트는 진짜 Windows 삭제 거부 파일 핸들을 잡고, 다른 스레드에서 일시적 잠금을 해제하고, 영구 잠금을 유지하고, 재시도 중 취소하고, 읽기 전용 교체를 시도합니다
각 Windows 대상은 500회의 완전한 원자적 교체와 네이티브 재로드를 동반한 50회의 실제 문서 저장도 수행하며, 소스 바이트를 보존하고 스테이징 파일 정리를 검사합니다
별도의 WinAPI 전용 프로브가 HotPDF나 Cairo 없이 원래의 간헐적 access-denied 실패를 재현합니다. 관찰되지 않은 프로세스에 원인을 돌리지 않고 발행 경계를 식별합니다