Remove support to monitor all validators in a cluster for delinquency
This feature is no longer useful with hundreds of validators
This commit is contained in:
parent
ec167aead9
commit
f936ce02f8
|
@ -91,7 +91,7 @@ fn get_config() -> Config {
|
|||
.takes_value(true)
|
||||
.validator(is_pubkey_or_keypair)
|
||||
.multiple(true)
|
||||
.help("Monitor a specific validator only instead of the entire cluster"),
|
||||
.help("Validator identities to monitor for delinquency")
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("no_duplicate_notifications")
|
||||
|
@ -135,12 +135,10 @@ fn get_config() -> Config {
|
|||
};
|
||||
|
||||
info!("RPC URL: {}", config.json_rpc_url);
|
||||
if !config.validator_identity_pubkeys.is_empty() {
|
||||
info!(
|
||||
"Monitored validators: {:?}",
|
||||
config.validator_identity_pubkeys
|
||||
);
|
||||
}
|
||||
info!(
|
||||
"Monitored validators: {:?}",
|
||||
config.validator_identity_pubkeys
|
||||
);
|
||||
config
|
||||
}
|
||||
|
||||
|
@ -152,11 +150,11 @@ fn get_cluster_info(rpc_client: &RpcClient) -> ClientResult<(u64, Hash, RpcVoteA
|
|||
}
|
||||
|
||||
fn main() -> Result<(), Box<dyn error::Error>> {
|
||||
let config = get_config();
|
||||
|
||||
solana_logger::setup_with_default("solana=info");
|
||||
solana_metrics::set_panic_hook("watchtower");
|
||||
|
||||
let config = get_config();
|
||||
|
||||
let rpc_client = RpcClient::new(config.json_rpc_url.clone());
|
||||
let notifier = Notifier::default();
|
||||
let mut last_transaction_count = 0;
|
||||
|
@ -226,59 +224,47 @@ fn main() -> Result<(), Box<dyn error::Error>> {
|
|||
));
|
||||
}
|
||||
|
||||
if config.validator_identity_pubkeys.is_empty() {
|
||||
if !vote_accounts.delinquent.is_empty() {
|
||||
failures.push((
|
||||
"delinquent",
|
||||
format!("{} delinquent validators", vote_accounts.delinquent.len()),
|
||||
));
|
||||
}
|
||||
} else {
|
||||
let mut errors = vec![];
|
||||
for validator_identity in config.validator_identity_pubkeys.iter() {
|
||||
let formatted_validator_identity =
|
||||
format_labeled_address(&validator_identity, &config.address_labels);
|
||||
if vote_accounts
|
||||
.delinquent
|
||||
.iter()
|
||||
.any(|vai| vai.node_pubkey == *validator_identity)
|
||||
{
|
||||
errors.push(format!("{} delinquent", formatted_validator_identity));
|
||||
} else if !vote_accounts
|
||||
.current
|
||||
.iter()
|
||||
.any(|vai| vai.node_pubkey == *validator_identity)
|
||||
{
|
||||
errors.push(format!("{} missing", formatted_validator_identity));
|
||||
}
|
||||
|
||||
rpc_client
|
||||
.get_balance(&Pubkey::from_str(&validator_identity).unwrap_or_default())
|
||||
.map(lamports_to_sol)
|
||||
.map(|balance| {
|
||||
if balance < 10.0 {
|
||||
// At 1 SOL/day for validator voting fees, this gives over a week to
|
||||
// find some more SOL
|
||||
failures.push((
|
||||
"balance",
|
||||
format!(
|
||||
"{} has {} SOL",
|
||||
formatted_validator_identity, balance
|
||||
),
|
||||
));
|
||||
}
|
||||
})
|
||||
.unwrap_or_else(|err| {
|
||||
warn!(
|
||||
"Failed to get balance of {}: {:?}",
|
||||
formatted_validator_identity, err
|
||||
);
|
||||
});
|
||||
let mut errors = vec![];
|
||||
for validator_identity in config.validator_identity_pubkeys.iter() {
|
||||
let formatted_validator_identity =
|
||||
format_labeled_address(&validator_identity, &config.address_labels);
|
||||
if vote_accounts
|
||||
.delinquent
|
||||
.iter()
|
||||
.any(|vai| vai.node_pubkey == *validator_identity)
|
||||
{
|
||||
errors.push(format!("{} delinquent", formatted_validator_identity));
|
||||
} else if !vote_accounts
|
||||
.current
|
||||
.iter()
|
||||
.any(|vai| vai.node_pubkey == *validator_identity)
|
||||
{
|
||||
errors.push(format!("{} missing", formatted_validator_identity));
|
||||
}
|
||||
|
||||
if !errors.is_empty() {
|
||||
failures.push(("delinquent", errors.join(",")));
|
||||
}
|
||||
rpc_client
|
||||
.get_balance(&Pubkey::from_str(&validator_identity).unwrap_or_default())
|
||||
.map(lamports_to_sol)
|
||||
.map(|balance| {
|
||||
if balance < 10.0 {
|
||||
// At 1 SOL/day for validator voting fees, this gives over a week to
|
||||
// find some more SOL
|
||||
failures.push((
|
||||
"balance",
|
||||
format!("{} has {} SOL", formatted_validator_identity, balance),
|
||||
));
|
||||
}
|
||||
})
|
||||
.unwrap_or_else(|err| {
|
||||
warn!(
|
||||
"Failed to get balance of {}: {:?}",
|
||||
formatted_validator_identity, err
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
if !errors.is_empty() {
|
||||
failures.push(("delinquent", errors.join(",")));
|
||||
}
|
||||
|
||||
for failure in failures.iter() {
|
||||
|
|
Loading…
Reference in New Issue