From 6ededa5170e97c7de71b0c6e0496761b33452ea8 Mon Sep 17 00:00:00 2001 From: Shreyan Gupta Date: Wed, 15 Nov 2023 15:09:39 +0530 Subject: [PATCH 1/4] quick traceing info --- chain/chain/src/store.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/chain/chain/src/store.rs b/chain/chain/src/store.rs index 9906643df44..f17dc10f321 100644 --- a/chain/chain/src/store.rs +++ b/chain/chain/src/store.rs @@ -2344,6 +2344,7 @@ impl<'a> ChainStoreUpdate<'a> { // Now we can proceed to removing the trie state and flat state let mut store_update = self.store().store_update(); for shard_uid in prev_shard_layout.get_shard_uids() { + tracing::info!("GC resharding, block_hash {}, shard_uid {}", block_hash, shard_uid); runtime.get_tries().delete_trie_for_shard(shard_uid, &mut store_update); runtime .get_flat_storage_manager() From 7bc080bf81dbfa130fff704bf1c245ad75576507 Mon Sep 17 00:00:00 2001 From: Shreyan Gupta Date: Wed, 15 Nov 2023 15:34:40 +0530 Subject: [PATCH 2/4] resolve comment --- chain/chain/src/store.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chain/chain/src/store.rs b/chain/chain/src/store.rs index f17dc10f321..8fde74f3ccd 100644 --- a/chain/chain/src/store.rs +++ b/chain/chain/src/store.rs @@ -2344,7 +2344,7 @@ impl<'a> ChainStoreUpdate<'a> { // Now we can proceed to removing the trie state and flat state let mut store_update = self.store().store_update(); for shard_uid in prev_shard_layout.get_shard_uids() { - tracing::info!("GC resharding, block_hash {}, shard_uid {}", block_hash, shard_uid); + tracing::info!(target: "chain", ?block_hash, ?shard_uid, "GC resharding"); runtime.get_tries().delete_trie_for_shard(shard_uid, &mut store_update); runtime .get_flat_storage_manager() From 4a95f25b4d33404565afd4a7c57b9bbb5f0683e4 Mon Sep 17 00:00:00 2001 From: Shreyan Gupta Date: Wed, 15 Nov 2023 17:17:25 +0530 Subject: [PATCH 3/4] more logging --- chain/chain/src/chain.rs | 2 +- chain/chain/src/store.rs | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/chain/chain/src/chain.rs b/chain/chain/src/chain.rs index ba5f08a7355..fa6edcfe4c1 100644 --- a/chain/chain/src/chain.rs +++ b/chain/chain/src/chain.rs @@ -996,7 +996,7 @@ impl Chain { tries: ShardTries, gc_config: &near_chain_configs::GCConfig, ) -> Result<(), Error> { - let _span = tracing::debug_span!(target: "chain", "clear_data").entered(); + let _span = tracing::debug_span!(target: "garbage_collection", "clear_data").entered(); let head = self.store.head()?; let tail = self.store.tail()?; diff --git a/chain/chain/src/store.rs b/chain/chain/src/store.rs index 8fde74f3ccd..79b6eef49bd 100644 --- a/chain/chain/src/store.rs +++ b/chain/chain/src/store.rs @@ -1,6 +1,6 @@ use std::collections::hash_map::Entry; use std::collections::{HashMap, HashSet}; -use std::io; +use std::{fmt, io}; use borsh::{BorshDeserialize, BorshSerialize}; use chrono::Utc; @@ -74,6 +74,16 @@ pub enum GCMode { StateSync { clear_block_info: bool }, } +impl fmt::Debug for GCMode { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self { + GCMode::Fork(_) => write!(f, "GCMode::Fork"), + GCMode::Canonical(_) => write!(f, "GCMode::Canonical"), + GCMode::StateSync { .. } => write!(f, "GCMode::StateSync"), + } + } +} + /// Accesses the chain store. Used to create atomic editable views that can be reverted. pub trait ChainStoreAccess { /// Returns underlaying store. @@ -2344,7 +2354,7 @@ impl<'a> ChainStoreUpdate<'a> { // Now we can proceed to removing the trie state and flat state let mut store_update = self.store().store_update(); for shard_uid in prev_shard_layout.get_shard_uids() { - tracing::info!(target: "chain", ?block_hash, ?shard_uid, "GC resharding"); + tracing::info!(target: "garbage_collection", ?block_hash, ?shard_uid, "GC resharding"); runtime.get_tries().delete_trie_for_shard(shard_uid, &mut store_update); runtime .get_flat_storage_manager() @@ -2365,6 +2375,8 @@ impl<'a> ChainStoreUpdate<'a> { ) -> Result<(), Error> { let mut store_update = self.store().store_update(); + tracing::info!(target: "garbage_collection", ?gc_mode, ?block_hash, "GC block_hash"); + // 1. Apply revert insertions or deletions from DBCol::TrieChanges for Trie { let shard_uids_to_gc: Vec<_> = self.get_shard_uids_to_gc(epoch_manager, &block_hash); From aa08c716cb5a9b289117b2e3773a51048eb6da76 Mon Sep 17 00:00:00 2001 From: Shreyan Gupta Date: Wed, 15 Nov 2023 17:46:57 +0530 Subject: [PATCH 4/4] remove_flat_storage_for_shard log --- core/store/src/flat/manager.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/core/store/src/flat/manager.rs b/core/store/src/flat/manager.rs index ab574b4ca32..77ffc57b203 100644 --- a/core/store/src/flat/manager.rs +++ b/core/store/src/flat/manager.rs @@ -226,6 +226,7 @@ impl FlatStorageManager { let mut flat_storages = self.0.flat_storages.lock().expect(POISONED_LOCK_ERR); if let Some(flat_store) = flat_storages.remove(&shard_uid) { flat_store.clear_state(store_update)?; + tracing::info!(target: "store", ?shard_uid, "remove_flat_storage_for_shard successful"); Ok(true) } else { Ok(false)