| ... | @@ -439,7 +439,10 @@ pub const Manifest = struct { | ... | @@ -439,7 +439,10 @@ pub const Manifest = struct { |
| 439 | self.manifest_file = manifest_file; | 439 | self.manifest_file = manifest_file; |
| 440 | self.have_exclusive_lock = true; | 440 | self.have_exclusive_lock = true; |
| 441 | } else |err| switch (err) { | 441 | } else |err| switch (err) { |
| 442 | error.WouldBlock => { | 442 | // There are no dir components, so you would think that this was |
| | 443 | // unreachable, however we have observed on macOS two processes racing |
| | 444 | // to do openat() with O_CREAT manifest in ENOENT. |
| | 445 | error.WouldBlock, error.FileNotFound => { |
| 443 | self.manifest_file = try self.cache.manifest_dir.openFile(&manifest_file_path, .{ | 446 | self.manifest_file = try self.cache.manifest_dir.openFile(&manifest_file_path, .{ |
| 444 | .lock = .Shared, | 447 | .lock = .Shared, |
| 445 | }); | 448 | }); |