# HG changeset patch # User Arseniy Alekseyev # Date 1645131004 0 # Node ID dcec16e799ddb6d33fcd11b04af530250a417a58 # Parent 2d69408110671029e9040a45773641a9aaea3a5e status: fix hg status race against file deletion Differential Revision: https://phab.mercurial-scm.org/D12202 diff -r 2d6940811067 -r dcec16e799dd rust/hg-core/src/dirstate_tree/status.rs --- a/rust/hg-core/src/dirstate_tree/status.rs Wed Aug 25 19:55:20 2021 -0700 +++ b/rust/hg-core/src/dirstate_tree/status.rs Thu Feb 17 20:50:04 2022 +0000 @@ -713,7 +713,17 @@ let mut results = Vec::new(); for entry in path.read_dir()? { let entry = entry?; - let metadata = entry.metadata()?; + let metadata = match entry.metadata() { + Ok(v) => v, + Err(e) => { + // race with file deletion? + if e.kind() == std::io::ErrorKind::NotFound { + continue; + } else { + return Err(e); + } + } + }; let name = get_bytes_from_os_string(entry.file_name()); // FIXME don't do this when cached if name == b".hg" {