From 4f3b25e92d90365eb1683e34b4019986f71221d3 Mon Sep 17 00:00:00 2001 From: Razvan Barbascu Date: Wed, 9 Oct 2024 16:14:58 +0100 Subject: [PATCH] feat(state-sync): drop old state parts at the end of epoch --- chain/chain/src/chain.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/chain/chain/src/chain.rs b/chain/chain/src/chain.rs index aa6e24b9581..8b6d3102b93 100644 --- a/chain/chain/src/chain.rs +++ b/chain/chain/src/chain.rs @@ -1797,6 +1797,15 @@ impl Chain { }; let (apply_chunk_work, block_preprocess_info) = preprocess_res; + // Delete state sync files if needed. + if self.epoch_manager.is_next_block_epoch_start(block.header().prev_hash())? { + // This is the end of the epoch. Next epoch we will generate new state parts. We can drop the old ones. + let mut store_update = self.chain_store.store().store_update(); + store_update.delete_all(DBCol::StateParts); + store_update.delete_all(DBCol::StateHeaders); + store_update.commit()?; + } + // 2) Start creating snapshot if needed. if let Err(err) = self.process_snapshot() { tracing::error!(target: "state_snapshot", ?err, "Failed to make a state snapshot");