solana-validator set-identity no longer writes a tower file unnecessarily

This commit is contained in:
Michael Vines
2022-03-06 17:56:12 +01:00
parent 8438366d1b
commit b719d6a2ad
2 changed files with 13 additions and 34 deletions

View File

@ -257,40 +257,14 @@ impl AdminRpc for AdminRpcImpl {
})?;
meta.with_post_init(|post_init| {
// Ensure a Tower exists for the new identity and exit gracefully.
// ReplayStage will be less forgiving if it fails to load the new tower.
if let Err(err) =
Tower::restore(meta.tower_storage.as_ref(), &identity_keypair.pubkey()).map_err(
|err| {
if require_tower {
let _ = Tower::restore(meta.tower_storage.as_ref(), &identity_keypair.pubkey())
.map_err(|err| {
jsonrpc_core::error::Error::invalid_params(format!(
"Unable to load tower file for identity {}: {}",
identity_keypair.pubkey(),
err
))
},
)
{
if require_tower {
return Err(err);
}
let root_bank = post_init.bank_forks.read().unwrap().root_bank();
let mut tower = Tower::new(
&identity_keypair.pubkey(),
&post_init.vote_account,
root_bank.slot(),
&root_bank,
);
// Forge a single vote to pacify `Tower::adjust_lockouts_after_replay` when its called
// by replay_stage
tower.record_bank_vote(&root_bank, &post_init.vote_account);
tower
.save(meta.tower_storage.as_ref(), &identity_keypair)
.map_err(|err| {
jsonrpc_core::error::Error::invalid_params(format!(
"Unable to create default tower file for ephemeral identity: {}",
err
))
})?;
}