From 266734d7ef31091c8f94b7b580dca7c0aa32fdc7 Mon Sep 17 00:00:00 2001 From: jeremyhi Date: Wed, 29 Apr 2026 03:02:06 -0700 Subject: [PATCH] fix: win cli lock (#8049) Signed-off-by: jeremyhi --- src/cli/src/data/import_v2/state.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/cli/src/data/import_v2/state.rs b/src/cli/src/data/import_v2/state.rs index 3c04e9f1db..cdad6e45db 100644 --- a/src/cli/src/data/import_v2/state.rs +++ b/src/cli/src/data/import_v2/state.rs @@ -234,7 +234,7 @@ pub(crate) fn try_acquire_import_state_lock(path: &Path) -> Result Result bool { + error.kind() == std::io::ErrorKind::WouldBlock + || error.raw_os_error() == fs2::lock_contended_error().raw_os_error() +} + fn unique_tmp_path(path: &Path) -> PathBuf { let pid = std::process::id(); let seq = IMPORT_STATE_TMP_ID.fetch_add(1, Ordering::Relaxed); @@ -435,6 +440,13 @@ mod tests { ); } + #[test] + fn test_lock_contention_detection_accepts_platform_error() { + let error = fs2::lock_contended_error(); + + assert!(is_lock_contention(&error)); + } + #[test] fn test_try_acquire_import_state_lock_rejects_second_holder() { let dir = tempdir().unwrap();