std.Build.Cache: handle ENOENT on createFile race

Companion commit to 628fec41593a2d2eca8b504e4fe90de9823aeded
This commit is contained in:
Andrew Kelley 2023-03-14 11:42:00 -07:00
parent 63bd0fe58e
commit 11de55d0dd

View File

@ -422,7 +422,11 @@ pub const Manifest = struct {
self.have_exclusive_lock = true;
return false; // cache miss; exclusive lock already held
} else |err| switch (err) {
error.WouldBlock => continue,
// There are no dir components, so you would think
// that this was unreachable, however we have
// observed on macOS two processes racing to do
// openat() with O_CREAT manifest in ENOENT.
error.WouldBlock, error.FileNotFound => continue,
else => |e| return e,
}
},