Reduce cap by rent's leftover as temporary measure (#12111)

* Reduce cap by rent's leftover as temporary measure

* Reset testnet cap. on start and more logs
This commit is contained in:
Ryo Onodera
2020-09-09 03:53:48 +09:00
committed by GitHub
parent 9e96180ce4
commit 5b2442d54e
2 changed files with 25 additions and 3 deletions

View File

@ -2027,7 +2027,7 @@ impl Bank {
&self, &self,
vote_account_hashmap: &HashMap<Pubkey, (u64, Account)>, vote_account_hashmap: &HashMap<Pubkey, (u64, Account)>,
rent_to_be_distributed: u64, rent_to_be_distributed: u64,
) { ) -> u64 {
let mut total_staked = 0; let mut total_staked = 0;
let mut rent_distributed_in_initial_round = 0; let mut rent_distributed_in_initial_round = 0;
@ -2083,6 +2083,7 @@ impl Bank {
account.lamports += rent_to_be_paid; account.lamports += rent_to_be_paid;
self.store_account(&pubkey, &account); self.store_account(&pubkey, &account);
}); });
leftover_lamports
} }
fn distribute_rent(&self) { fn distribute_rent(&self) {
@ -2100,7 +2101,12 @@ impl Bank {
return; 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( fn collect_rent(

View File

@ -14,7 +14,12 @@ use fs_extra::dir::CopyOptions;
use log::*; use log::*;
use regex::Regex; use regex::Regex;
use solana_measure::measure::Measure; 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::{ use std::{
cmp::Ordering, cmp::Ordering,
fmt, fmt,
@ -591,6 +596,17 @@ pub fn bank_from_archive<P: AsRef<Path>>(
if !bank.verify_snapshot_bank() { if !bank.verify_snapshot_bank() {
panic!("Snapshot bank for slot {} failed to verify", bank.slot()); 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(); measure.stop();
info!("{}", measure); info!("{}", measure);