less max lag

This commit is contained in:
Bryan Stitt 2023-05-11 17:04:33 -07:00
parent 2a242fe37f
commit fc8ca4ba4f
3 changed files with 10 additions and 3 deletions

@ -131,7 +131,7 @@ Flame graphs make a developer's join of finding slow code painless:
4
$ echo -1 | sudo tee /proc/sys/kernel/perf_event_paranoid
-1
$ CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph --bin web3_proxy --no-inline
$ CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph --bin web3_proxy_cli --no-inline -- proxyd
Be sure to use `--no-inline` or perf will be VERY slow

@ -436,6 +436,8 @@ impl Web3Rpcs {
Ok(Some(x)) => x,
};
trace!("new_synced_connections: {:?}", new_synced_connections);
let watch_consensus_head_sender = self.watch_consensus_head_sender.as_ref().unwrap();
let consensus_tier = new_synced_connections.tier;
// TODO: think more about this unwrap

@ -218,8 +218,8 @@ impl ConsensusFinder {
trace!("lowest_block_number: {}", lowest_block.number());
let max_lag_block_number = highest_block_number
.saturating_sub(self.max_block_lag.unwrap_or_else(|| U64::from(10)));
let max_lag_block_number =
highest_block_number.saturating_sub(self.max_block_lag.unwrap_or_else(|| U64::from(5)));
trace!("max_lag_block_number: {}", max_lag_block_number);
@ -231,6 +231,7 @@ impl ConsensusFinder {
if num_known < web3_rpcs.min_head_rpcs {
// this keeps us from serving requests when the proxy first starts
trace!("not enough servers known");
return Ok(None);
}
@ -250,18 +251,22 @@ impl ConsensusFinder {
.0
.tier;
trace!("first_tier: {}", current_tier);
// loop over all the rpc heads (grouped by tier) and their parents to find consensus
// TODO: i'm sure theres a lot of shortcuts that could be taken, but this is simplest to implement
for (rpc, rpc_head) in self.rpc_heads.iter() {
if current_tier != rpc.tier {
// we finished processing a tier. check for primary results
if let Some(consensus) = self.count_votes(&primary_votes, web3_rpcs) {
trace!("found enough votes on tier {}", current_tier);
return Ok(Some(consensus));
}
// only set backup consensus once. we don't want it to keep checking on worse tiers if it already found consensus
if backup_consensus.is_none() {
if let Some(consensus) = self.count_votes(&backup_votes, web3_rpcs) {
trace!("found backup votes on tier {}", current_tier);
backup_consensus = Some(consensus)
}
}