Show last vote/root behind distance in `solana validators` output

This commit is contained in:
Michael Vines 2021-04-23 13:29:07 -07:00 committed by mergify[bot]
parent 2420b280a9
commit c1829dd00b
1 changed files with 27 additions and 8 deletions

View File

@ -343,18 +343,24 @@ impl fmt::Display for CliValidators {
validator: &CliValidator,
total_active_stake: u64,
use_lamports_unit: bool,
highest_last_vote: u64,
highest_root: u64,
) -> fmt::Result {
fn non_zero_or_dash(v: u64) -> String {
fn non_zero_or_dash(v: u64, max_v: u64) -> String {
if v == 0 {
"-".into()
"- ".into()
} else if v == max_v {
format!("{:>8} ( 0)", v)
} else if v > max_v.saturating_sub(100) {
format!("{:>8} ({:>3})", v, -(max_v.saturating_sub(v) as isize))
} else {
format!("{}", v)
format!("{:>8} ", v)
}
}
writeln!(
f,
"{} {:<44} {:<44} {:>3}% {:>8} {:>10} {:>13} {:>7} {}",
"{} {:<44} {:<44} {:>3}% {:>14} {:>14} {:>13} {:>7} {}",
if validator.delinquent {
WARNING.to_string()
} else {
@ -363,8 +369,8 @@ impl fmt::Display for CliValidators {
validator.identity_pubkey,
validator.vote_account_pubkey,
validator.commission,
non_zero_or_dash(validator.last_vote),
non_zero_or_dash(validator.root_slot),
non_zero_or_dash(validator.last_vote, highest_last_vote),
non_zero_or_dash(validator.root_slot, highest_root),
validator.epoch_credits,
validator.version,
if validator.activated_stake > 0 {
@ -390,8 +396,8 @@ impl fmt::Display for CliValidators {
"Identity",
"Vote Account",
"Commission",
"Last Vote",
"Root Block",
"Last Vote ",
"Root Slot ",
"Epoch Credits",
"Version",
"Active Stake",
@ -432,6 +438,17 @@ impl fmt::Display for CliValidators {
sorted_validators.reverse();
}
let highest_root = sorted_validators
.iter()
.map(|v| v.root_slot)
.max()
.unwrap_or_default();
let highest_last_vote = sorted_validators
.iter()
.map(|v| v.last_vote)
.max()
.unwrap_or_default();
for (i, validator) in sorted_validators.iter().enumerate() {
if padding > 0 {
write!(f, "{:padding$}", i + 1, padding = padding)?;
@ -441,6 +458,8 @@ impl fmt::Display for CliValidators {
validator,
self.total_active_stake,
self.use_lamports_unit,
highest_last_vote,
highest_root,
)?;
}