diff --git a/core/store/src/adapter/trie_store.rs b/core/store/src/adapter/trie_store.rs index e188cddc4f1..b87345f7ce8 100644 --- a/core/store/src/adapter/trie_store.rs +++ b/core/store/src/adapter/trie_store.rs @@ -140,6 +140,10 @@ impl<'a> TrieStoreUpdateAdapter<'a> { ) } + pub fn delete_state_parts(&mut self) { + self.store_update.delete_all(DBCol::StateParts) + } + pub fn delete_all_state(&mut self) { self.store_update.delete_all(DBCol::State) } diff --git a/core/store/src/trie/state_snapshot.rs b/core/store/src/trie/state_snapshot.rs index 0a723464e9d..15ec03c509a 100644 --- a/core/store/src/trie/state_snapshot.rs +++ b/core/store/src/trie/state_snapshot.rs @@ -282,6 +282,18 @@ impl ShardTries { } } + // this will delete any state snapshot parts from db. Will retry 3 times + for _ in 0..3 { + let mut store_update = self.store_update(); + store_update.delete_state_parts(); + match store_update.commit() { + Ok(_) => break, + Err(err) => { + tracing::error!(target: "state_snapshot", ?err, "Failed to clear StatePart column in rocksdb"); + } + } + } + metrics::HAS_STATE_SNAPSHOT.set(0); }