diff --git a/src/blocks/tipset.rs b/src/blocks/tipset.rs index b01964dfdfc0..efb685ace365 100644 --- a/src/blocks/tipset.rs +++ b/src/blocks/tipset.rs @@ -241,7 +241,7 @@ impl Tipset { pub fn new>( headers: impl IntoIterator, ) -> Result { - let headers = NonEmpty::new( + let mut headers = NonEmpty::new( headers .into_iter() .map(Into::::into) @@ -249,7 +249,7 @@ impl Tipset { .collect(), ) .map_err(|_| CreateTipsetError::Empty)?; - + headers.shrink_to_fit(); verify_block_headers(&headers)?; Ok(Self { diff --git a/src/chain/store/chain_store.rs b/src/chain/store/chain_store.rs index 34b7636ce3d5..381d65128621 100644 --- a/src/chain/store/chain_store.rs +++ b/src/chain/store/chain_store.rs @@ -583,7 +583,8 @@ impl MsgsInTipsetCache { } } - pub fn insert(&self, key: TipsetKey, value: Vec) { + pub fn insert(&self, key: TipsetKey, mut value: Vec) { + value.shrink_to_fit(); self.cache.push(key, value); } diff --git a/src/state_manager/cache.rs b/src/state_manager/cache.rs index 9c1a7c1609d3..83dd2f89ba27 100644 --- a/src/state_manager/cache.rs +++ b/src/state_manager/cache.rs @@ -203,14 +203,17 @@ impl EnabledTipsetDataCache { } impl TipsetReceiptEventCacheHandler for EnabledTipsetDataCache { - fn insert_receipt(&self, key: &TipsetKey, receipts: Vec) { + fn insert_receipt(&self, key: &TipsetKey, mut receipts: Vec) { if !receipts.is_empty() { + receipts.shrink_to_fit(); self.receipt_cache.insert(key.clone(), receipts); } } - fn insert_events(&self, key: &TipsetKey, events_data: StateEvents) { + fn insert_events(&self, key: &TipsetKey, mut events_data: StateEvents) { if !events_data.events.is_empty() { + events_data.events.shrink_to_fit(); + events_data.roots.shrink_to_fit(); self.events_cache.insert(key.clone(), events_data); } }