From 711425cc4757a325c5e496f4e9843b351605fccc Mon Sep 17 00:00:00 2001 From: Joonas Koivunen Date: Fri, 1 Dec 2023 18:30:51 +0200 Subject: [PATCH] fix: use create_new instead of create for mutex file (#6012) Using create_new makes the uninit marker work as a mutual exclusion primitive. Temporary hopefully. --- pageserver/src/tenant.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pageserver/src/tenant.rs b/pageserver/src/tenant.rs index 12610b1c89..422cb671fe 100644 --- a/pageserver/src/tenant.rs +++ b/pageserver/src/tenant.rs @@ -3239,7 +3239,10 @@ impl Tenant { let uninit_mark_path = self .conf .timeline_uninit_mark_file_path(tenant_shard_id, timeline_id); - fs::File::create(&uninit_mark_path) + fs::OpenOptions::new() + .write(true) + .create_new(true) + .open(&uninit_mark_path) .context("Failed to create uninit mark file") .and_then(|_| { crashsafe::fsync_file_and_parent(&uninit_mark_path)