From 3da4b3165ef4056f72e0fb84bd4fd24669526c15 Mon Sep 17 00:00:00 2001 From: Anastasia Lubennikova Date: Wed, 18 May 2022 18:06:33 +0300 Subject: [PATCH] Fsync layer files before rename --- pageserver/src/layered_repository/delta_layer.rs | 7 ++++--- pageserver/src/layered_repository/image_layer.rs | 3 +++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pageserver/src/layered_repository/delta_layer.rs b/pageserver/src/layered_repository/delta_layer.rs index 855e2a9172..3484e6bd0f 100644 --- a/pageserver/src/layered_repository/delta_layer.rs +++ b/pageserver/src/layered_repository/delta_layer.rs @@ -425,7 +425,7 @@ impl DeltaLayer { timelineid: ZTimelineId, tenantid: ZTenantId, key_start: Key, - lsn_range: Range, + lsn_range: &Range, ) -> PathBuf { conf.timeline_path(&timelineid, &tenantid).join(format!( "{}-XXX__{:016X}-{:016X}.temp", @@ -622,8 +622,7 @@ impl DeltaLayerWriter { // // Note: This overwrites any existing file. There shouldn't be any. // FIXME: throw an error instead? - let path = - DeltaLayer::temp_path_for(conf, timelineid, tenantid, key_start, lsn_range.clone()); + let path = DeltaLayer::temp_path_for(conf, timelineid, tenantid, key_start, &lsn_range); let mut file = VirtualFile::create(&path)?; // make room for the header block @@ -717,6 +716,8 @@ impl DeltaLayerWriter { }), }; + // fsync the file + file.sync_all()?; // Rename the file to its final name // // Note: This overwrites any existing file. There shouldn't be any. diff --git a/pageserver/src/layered_repository/image_layer.rs b/pageserver/src/layered_repository/image_layer.rs index 0a7cd2cdba..5e97366da9 100644 --- a/pageserver/src/layered_repository/image_layer.rs +++ b/pageserver/src/layered_repository/image_layer.rs @@ -525,6 +525,9 @@ impl ImageLayerWriter { }), }; + // fsync the file + file.sync_all()?; + // Rename the file to its final name // // Note: This overwrites any existing file. There shouldn't be any.