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"
thiserror = "1.0.40"
yellowstone-grpc-client = { path = "../../yellowstone-grpc/yellowstone-grpc-client" }
yellowstone-grpc-proto = { path = "../../yellowstone-grpc/yellowstone-grpc-proto" }
#yellowstone-grpc-client = { path = "../../yellowstone-grpc/yellowstone-grpc-client" }
#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-proto = "1.8.0+solana.1.16.1"
#yellowstone-grpc-client = "1.11.0+solana.1.16.14"
#yellowstone-grpc-proto = "1.10.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"
solana-sdk = "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(
rpc_url: String,
event: LeaderScheduleEvent,
bootstrap_tasks: &mut FuturesUnordered<JoinHandle<LeaderScheduleEvent>>,
stakestore: &mut StakeStore,
@ -163,7 +162,7 @@ pub fn run_leader_schedule_events(
None
}
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),
}
@ -344,10 +343,37 @@ fn calculate_epoch_stakes(
)
});
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"),
};
//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.
let delegated_stakes: HashMap<Pubkey, u64> =
stake_map

View File

@ -195,7 +195,7 @@ async fn run_loop<F: Interceptor>(mut client: GeyserGrpcClient<F>) -> anyhow::Re
owner: vec![
solana_sdk::stake::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(),
],
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) {
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
Some(Ok(event)) = spawned_leader_schedule_task.next() => {
let new_leader_schedule = crate::leader_schedule::run_leader_schedule_events(
RPC_URL.to_string(),
event,
&mut spawned_leader_schedule_task,
&mut stakestore,
@ -401,7 +400,6 @@ async fn run_loop<F: Interceptor>(mut client: GeyserGrpcClient<F>) -> anyhow::Re
if bootstrap_data.done {
if let Some(init_event) = schedule_event {
crate::leader_schedule::run_leader_schedule_events(
RPC_URL.to_string(),
init_event,
&mut spawned_leader_schedule_task,
&mut stakestore,