diff --git a/Cargo.toml b/Cargo.toml index a66ef1856..2a9d45409 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ tempfile = { version = "3.12.0", optional = true } log = "0.4.16" serde = { version = "1.0.219", features = ["derive"] } serde_json = "1.0.140" -fs4 = { version = "0.8.0", optional = true } +fs4 = { version = "0.13.1", optional = true } levenshtein_automata = "0.2.1" uuid = { version = "1.0.0", features = ["v4", "serde"] } crossbeam-channel = "0.5.4" diff --git a/src/directory/mmap_directory.rs b/src/directory/mmap_directory.rs index 344364944..61e2b6035 100644 --- a/src/directory/mmap_directory.rs +++ b/src/directory/mmap_directory.rs @@ -7,7 +7,7 @@ use std::path::{Path, PathBuf}; use std::sync::{Arc, RwLock, Weak}; use common::StableDeref; -use fs4::FileExt; +use fs4::fs_std::FileExt; #[cfg(all(feature = "mmap", unix))] pub use memmap2::Advice; use memmap2::Mmap; @@ -485,7 +485,9 @@ impl Directory for MmapDirectory { if lock.is_blocking { file.lock_exclusive().map_err(LockError::wrap_io_error)?; } else { - file.try_lock_exclusive().map_err(|_| LockError::LockBusy)? + if !file.try_lock_exclusive().map_err(|_| LockError::LockBusy)? { + return Err(LockError::LockBusy); + } } // dropping the file handle will release the lock. Ok(DirectoryLock::from(Box::new(ReleaseLockFile {