From e45f1df5ddfd83fc9dbcb8cc62c3efbb796f227c Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 8 Sep 2020 20:02:46 +0000 Subject: [PATCH] Reduce cap by rent's leftover as temporary measure (#12111) (#12118) * Reduce cap by rent's leftover as temporary measure * Reset testnet cap. on start and more logs (cherry picked from commit 5b2442d54e64151405e42e27831f10df503e9835) Co-authored-by: Ryo Onodera --- runtime/src/bank.rs | 10 ++++++++-- runtime/src/snapshot_utils.rs | 18 +++++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index 3e8649fe48..f4ce470ea1 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -2026,7 +2026,7 @@ impl Bank { &self, vote_account_hashmap: &HashMap, rent_to_be_distributed: u64, - ) { + ) -> u64 { let mut total_staked = 0; let mut rent_distributed_in_initial_round = 0; @@ -2082,6 +2082,7 @@ impl Bank { account.lamports += rent_to_be_paid; self.store_account(&pubkey, &account); }); + leftover_lamports } fn distribute_rent(&self) { @@ -2099,7 +2100,12 @@ impl Bank { return; } - self.distribute_rent_to_validators(&self.vote_accounts(), rent_to_be_distributed); + let leftover = + self.distribute_rent_to_validators(&self.vote_accounts(), rent_to_be_distributed); + if leftover != 0 { + warn!("There was leftover from rent distribution: {}", leftover); + self.capitalization.fetch_sub(leftover, Ordering::Relaxed); + } } fn collect_rent( diff --git a/runtime/src/snapshot_utils.rs b/runtime/src/snapshot_utils.rs index aad8ac36c4..c7b4736b3d 100644 --- a/runtime/src/snapshot_utils.rs +++ b/runtime/src/snapshot_utils.rs @@ -14,7 +14,12 @@ use fs_extra::dir::CopyOptions; use log::*; use regex::Regex; use solana_measure::measure::Measure; -use solana_sdk::{clock::Slot, genesis_config::GenesisConfig, hash::Hash, pubkey::Pubkey}; +use solana_sdk::{ + clock::Slot, + genesis_config::{ClusterType, GenesisConfig}, + hash::Hash, + pubkey::Pubkey, +}; use std::{ cmp::Ordering, fmt, @@ -585,6 +590,17 @@ pub fn bank_from_archive>( if !bank.verify_snapshot_bank() { panic!("Snapshot bank for slot {} failed to verify", bank.slot()); } + if genesis_config.cluster_type == ClusterType::Testnet { + let old = bank.set_capitalization(); + if old != bank.capitalization() { + warn!( + "Capitalization was recalculated: {} => {}", + old, + bank.capitalization() + ) + } + } + measure.stop(); info!("{}", measure);