Repository navigation
fix(storage): preserve concurrent Windows portable destinations - #1197
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Warning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Windows portable publication used
std::fs::rename, which can replace a destination created after export staging begins. Route publication through a Rust-owned atomic no-replace operation usingMoveFileExWwith zero flags; preserve the existing Unix primitive and typed export failures.Closes #1190.
File and directory sentinel tests verify that existing bytes survive refusal. A synchronized two-writer test proves exactly one publisher wins. The Windows lane also runs the export race regression; the mapped expanded/bundle export, verify, import, and reopen coverage inherited from #1188 checks successful publication.
Validation on the refreshed branch:
cargo test -p graphforge-filesystem --lib: 33 passed.cargo test -p graphforge-storage --lib project_portable_v2_export::tests::: 25 passed, including destination replacement and successful expanded/bundle round trips. Durable fixtures used TMPDIR on the host root ext4 filesystem.cargo clippy -p graphforge-filesystem --all-targets -- -D warnings: passed.cargo fmt --all -- --check,make pre-push-fast, andmake gate-registry-check: passed.Exact-head hosted CI, including Windows and macOS, remains the merge gate. Full local
make pre-pushis not claimed green; the existing host tmpfs fixture limitation is tracked by #1192.Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.