From a51f671d86109da2b1ab99f3e0e2a515f551b38b Mon Sep 17 00:00:00 2001 From: Trinity Pointard Date: Tue, 14 Dec 2021 18:20:32 +0100 Subject: [PATCH] delete old block when receiving a compressed one --- src/model/block.rs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/model/block.rs b/src/model/block.rs index c040a0b2..b1f2a3fa 100644 --- a/src/model/block.rs +++ b/src/model/block.rs @@ -764,15 +764,21 @@ impl BlockManagerLocked { fs::create_dir_all(&path).await?; path.push(hex::encode(hash)); - match mgr.is_block_compressed(hash).await { - Ok(true) => return Ok(BlockRpc::Ok), - Ok(false) if !compressed => return Ok(BlockRpc::Ok), - _ => { + let to_delete = match (mgr.is_block_compressed(hash).await, compressed) { + (Ok(true), _) => return Ok(BlockRpc::Ok), + (Ok(false), false) => return Ok(BlockRpc::Ok), + (Ok(false), true) => { + let path_to_delete = path.clone(); + path.set_extension("zst"); + Some(path_to_delete) + } + (Err(_), compressed) => { if compressed { path.set_extension("zst"); } + None } - } + }; let mut path2 = path.clone(); path2.set_extension("tmp"); @@ -781,6 +787,9 @@ impl BlockManagerLocked { drop(f); fs::rename(path2, path).await?; + if let Some(to_delete) = to_delete { + fs::remove_file(to_delete).await?; + } Ok(BlockRpc::Ok) } @@ -793,7 +802,6 @@ impl BlockManagerLocked { let mut path = mgr.block_path(hash); let mut path2 = path.clone(); if mgr.is_block_compressed(hash).await? { - // block marked as corrupted, and absent? That should not happen path.set_extension("zst"); path2.set_extension("zst.corrupted"); } else {