add some logs for stake history

This commit is contained in:
musitdev 2023-10-16 12:23:53 +02:00
parent a5317d082c
commit 3efb64e469
3 changed files with 39 additions and 11 deletions

View File

@ -43,15 +43,19 @@ jsonrpsee = { version = "0.20.0", features = ["macros", "server", "full"] }
#jsonrpsee-types = "0.20.0" #jsonrpsee-types = "0.20.0"
thiserror = "1.0.40" thiserror = "1.0.40"
yellowstone-grpc-client = { path = "../../yellowstone-grpc/yellowstone-grpc-client" } #yellowstone-grpc-client = { path = "../../yellowstone-grpc/yellowstone-grpc-client" }
yellowstone-grpc-proto = { path = "../../yellowstone-grpc/yellowstone-grpc-proto" } #yellowstone-grpc-proto = { path = "../../yellowstone-grpc/yellowstone-grpc-proto" }
#yellowstone-grpc-client = { git = "http://github.com/rpcpool/yellowstone-grpc", rev = "c89b89dfc5f03f11f45ac4a6e832386a1d94cb67" }
#yellowstone-grpc-proto = { git = "http://github.com/rpcpool/yellowstone-grpc", rev = "c89b89dfc5f03f11f45ac4a6e832386a1d94cb67" }
#yellowstone-grpc-client = "1.8.0+solana.1.16.1" #yellowstone-grpc-client = "1.8.0+solana.1.16.1"
#yellowstone-grpc-proto = "1.8.0+solana.1.16.1" #yellowstone-grpc-proto = "1.8.0+solana.1.16.1"
#yellowstone-grpc-client = "1.11.0+solana.1.16.14" yellowstone-grpc-client = "1.11.0+solana.1.16.14"
#yellowstone-grpc-proto = "1.10.0+solana.1.16.14" yellowstone-grpc-proto = "1.10.0+solana.1.16.14"
solana-sdk = "1.16.14" solana-sdk = "1.16.14"
solana-client = "1.16.14" solana-client = "1.16.14"

View File

@ -150,7 +150,6 @@ InitLeaderscedule MergeStore(stakes, votes, schedule)
*/ */
pub fn run_leader_schedule_events( pub fn run_leader_schedule_events(
rpc_url: String,
event: LeaderScheduleEvent, event: LeaderScheduleEvent,
bootstrap_tasks: &mut FuturesUnordered<JoinHandle<LeaderScheduleEvent>>, bootstrap_tasks: &mut FuturesUnordered<JoinHandle<LeaderScheduleEvent>>,
stakestore: &mut StakeStore, stakestore: &mut StakeStore,
@ -163,7 +162,7 @@ pub fn run_leader_schedule_events(
None None
} }
LeaderScheduleResult::Event(event) => { LeaderScheduleResult::Event(event) => {
run_leader_schedule_events(rpc_url, event, bootstrap_tasks, stakestore, votestore) run_leader_schedule_events(event, bootstrap_tasks, stakestore, votestore)
} }
LeaderScheduleResult::End(schedule) => Some(schedule), LeaderScheduleResult::End(schedule) => Some(schedule),
} }
@ -344,10 +343,37 @@ fn calculate_epoch_stakes(
) )
}); });
match stake_history { match stake_history {
Some(ref mut stake_history) => stake_history.add(current_epoch, stake_history_entry), Some(ref mut stake_history) => {
log::info!(
"Stake_history add epoch{current_epoch} stake history:{stake_history_entry:?}"
);
stake_history.add(current_epoch, stake_history_entry)
}
None => log::warn!("Vote stake calculus without Stake History"), None => log::warn!("Vote stake calculus without Stake History"),
}; };
//get current stake history
match crate::bootstrap::get_stakehistory_account(crate::RPC_URL.to_string())
.ok()
.and_then(|rpc_history_account| {
crate::stakestore::read_historystake_from_account(rpc_history_account)
}) {
Some(rpc_history) => {
log::info!(
"Stake_history new epoch:{current_epoch} C:{:?} RPC:{:?}",
stake_history.as_ref().map(|h| h.get(current_epoch)),
rpc_history.get(current_epoch)
);
log::info!(
"Stake_history last epoch:{} C:{:?} RPC:{:?}",
current_epoch - 1,
stake_history.as_ref().map(|h| h.get(current_epoch - 1)),
rpc_history.get(current_epoch - 1)
);
}
None => log::error!("can't get rpc history from RPC"),
}
//calculate schedule stakes. //calculate schedule stakes.
let delegated_stakes: HashMap<Pubkey, u64> = let delegated_stakes: HashMap<Pubkey, u64> =
stake_map stake_map

View File

@ -195,7 +195,7 @@ async fn run_loop<F: Interceptor>(mut client: GeyserGrpcClient<F>) -> anyhow::Re
owner: vec![ owner: vec![
solana_sdk::stake::program::ID.to_string(), solana_sdk::stake::program::ID.to_string(),
solana_sdk::vote::program::ID.to_string(), solana_sdk::vote::program::ID.to_string(),
solana_sdk::sysvar::stake_history::ID.to_string(), // solana_sdk::sysvar::stake_history::ID.to_string(),
// solana_sdk::system_program::ID.to_string(), // solana_sdk::system_program::ID.to_string(),
], ],
filters: vec![], filters: vec![],
@ -280,7 +280,7 @@ async fn run_loop<F: Interceptor>(mut client: GeyserGrpcClient<F>) -> anyhow::Re
if let Err(err) = crate::leader_schedule::save_schedule_on_file("stakes", &current_stake) { if let Err(err) = crate::leader_schedule::save_schedule_on_file("stakes", &current_stake) {
log::error!("Error during current stakes saving:{err}"); log::error!("Error during current stakes saving:{err}");
} }
log::info!("RPC save_stakes END"); log::warn!("RPC save_stakes END");
} }
}); });
@ -329,7 +329,6 @@ async fn run_loop<F: Interceptor>(mut client: GeyserGrpcClient<F>) -> anyhow::Re
//Manage RPC call result execution //Manage RPC call result execution
Some(Ok(event)) = spawned_leader_schedule_task.next() => { Some(Ok(event)) = spawned_leader_schedule_task.next() => {
let new_leader_schedule = crate::leader_schedule::run_leader_schedule_events( let new_leader_schedule = crate::leader_schedule::run_leader_schedule_events(
RPC_URL.to_string(),
event, event,
&mut spawned_leader_schedule_task, &mut spawned_leader_schedule_task,
&mut stakestore, &mut stakestore,
@ -401,7 +400,6 @@ async fn run_loop<F: Interceptor>(mut client: GeyserGrpcClient<F>) -> anyhow::Re
if bootstrap_data.done { if bootstrap_data.done {
if let Some(init_event) = schedule_event { if let Some(init_event) = schedule_event {
crate::leader_schedule::run_leader_schedule_events( crate::leader_schedule::run_leader_schedule_events(
RPC_URL.to_string(),
init_event, init_event,
&mut spawned_leader_schedule_task, &mut spawned_leader_schedule_task,
&mut stakestore, &mut stakestore,