dynamic max_head_block_age
This commit is contained in:
parent
4cf3142800
commit
16caf1d0fe
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -6678,7 +6678,6 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"test-log",
|
"test-log",
|
||||||
"tokio",
|
|
||||||
"tokio-console",
|
"tokio-console",
|
||||||
"tracing",
|
"tracing",
|
||||||
"tracing-subscriber",
|
"tracing-subscriber",
|
||||||
|
@ -133,10 +133,15 @@ impl Web3Rpcs {
|
|||||||
// by_name starts empty. self.apply_server_configs will add to it
|
// by_name starts empty. self.apply_server_configs will add to it
|
||||||
let by_name = RwLock::new(HashMap::new());
|
let by_name = RwLock::new(HashMap::new());
|
||||||
|
|
||||||
let max_head_block_lag = max_head_block_lag.unwrap_or(5.into());
|
let block_interval = average_block_interval(chain_id);
|
||||||
|
|
||||||
let max_head_block_age =
|
// TODO: think about the max more for long block interval chains
|
||||||
average_block_interval(chain_id).mul_f32((max_head_block_lag.as_u64() * 10) as f32);
|
let max_head_block_lag = max_head_block_lag.unwrap_or_else(|| {
|
||||||
|
U64::from(5.max((60f32 / block_interval.as_secs_f32()).round() as u64))
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO: think about the max more for long block interval chains
|
||||||
|
let max_head_block_age = block_interval.mul_f32((max_head_block_lag.as_u64() * 10) as f32);
|
||||||
|
|
||||||
let connections = Arc::new(Self {
|
let connections = Arc::new(Self {
|
||||||
block_and_rpc_sender,
|
block_and_rpc_sender,
|
||||||
@ -600,7 +605,7 @@ impl Serialize for Web3Rpcs {
|
|||||||
where
|
where
|
||||||
S: Serializer,
|
S: Serializer,
|
||||||
{
|
{
|
||||||
let mut state = serializer.serialize_struct("Web3Rpcs", 5)?;
|
let mut state = serializer.serialize_struct("Web3Rpcs", 7)?;
|
||||||
|
|
||||||
{
|
{
|
||||||
let by_name = self.by_name.read();
|
let by_name = self.by_name.read();
|
||||||
@ -609,6 +614,13 @@ impl Serialize for Web3Rpcs {
|
|||||||
state.serialize_field("conns", &rpcs)?;
|
state.serialize_field("conns", &rpcs)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
state.serialize_field(
|
||||||
|
"max_head_block_age_ms",
|
||||||
|
&self.max_head_block_age.as_millis(),
|
||||||
|
)?;
|
||||||
|
|
||||||
|
state.serialize_field("max_head_block_lag", &self.max_head_block_lag)?;
|
||||||
|
|
||||||
{
|
{
|
||||||
let consensus_rpcs = self.watch_ranked_rpcs.borrow().clone();
|
let consensus_rpcs = self.watch_ranked_rpcs.borrow().clone();
|
||||||
// TODO: rename synced_connections to consensus_rpcs
|
// TODO: rename synced_connections to consensus_rpcs
|
||||||
|
@ -26,11 +26,8 @@ serde = { version = "1.0.189" }
|
|||||||
serde_json = { version = "1.0.107", default-features = false, features = ["raw_value"] }
|
serde_json = { version = "1.0.107", default-features = false, features = ["raw_value"] }
|
||||||
tokio-console = { version = "0.1.10", optional = true }
|
tokio-console = { version = "0.1.10", optional = true }
|
||||||
tracing = "0.1"
|
tracing = "0.1"
|
||||||
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
tracing-subscriber = { version = "0.3", default-features = false, features = ["env-filter", "fmt"] }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
env_logger = { version ="0.10", default-features = false, features = ["auto-color"] }
|
env_logger = { version ="0.10", default-features = false, features = ["auto-color"] }
|
||||||
test-log = { version ="0.2.13", default-features = false, features = ["trace"] }
|
test-log = { version ="0.2.13", default-features = false, features = ["trace"] }
|
||||||
tokio = { version = "1.33.0", default-features = false, features = ["full", "test-util"] }
|
|
||||||
tracing = {version = "0.1", default-features = false }
|
|
||||||
tracing-subscriber = {version = "0.3", default-features = false, features = ["env-filter", "fmt"] }
|
|
||||||
|
@ -3,6 +3,7 @@ use std::time::Duration;
|
|||||||
use tracing::info;
|
use tracing::info;
|
||||||
use web3_proxy::prelude::migration::sea_orm::prelude::Decimal;
|
use web3_proxy::prelude::migration::sea_orm::prelude::Decimal;
|
||||||
use web3_proxy::prelude::reqwest;
|
use web3_proxy::prelude::reqwest;
|
||||||
|
use web3_proxy::prelude::tokio;
|
||||||
use web3_proxy::test_utils::mysql::TestMysql;
|
use web3_proxy::test_utils::mysql::TestMysql;
|
||||||
use web3_proxy::test_utils::TestAnvil;
|
use web3_proxy::test_utils::TestAnvil;
|
||||||
use web3_proxy_cli::test_utils::admin_increases_balance::admin_increase_balance;
|
use web3_proxy_cli::test_utils::admin_increases_balance::admin_increase_balance;
|
||||||
|
@ -5,6 +5,7 @@ use tracing::{info, warn};
|
|||||||
use web3_proxy::prelude::futures::future::try_join_all;
|
use web3_proxy::prelude::futures::future::try_join_all;
|
||||||
use web3_proxy::prelude::reqwest;
|
use web3_proxy::prelude::reqwest;
|
||||||
use web3_proxy::prelude::rust_decimal::{Decimal, RoundingStrategy};
|
use web3_proxy::prelude::rust_decimal::{Decimal, RoundingStrategy};
|
||||||
|
use web3_proxy::prelude::tokio;
|
||||||
use web3_proxy::prelude::tokio::time::sleep;
|
use web3_proxy::prelude::tokio::time::sleep;
|
||||||
use web3_proxy::rpcs::blockchain::ArcBlock;
|
use web3_proxy::rpcs::blockchain::ArcBlock;
|
||||||
use web3_proxy::stats::FlushedStats;
|
use web3_proxy::stats::FlushedStats;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
use serde_json::Value;
|
use serde_json::Value;
|
||||||
use std::{str::FromStr, time::Duration};
|
use std::{str::FromStr, time::Duration};
|
||||||
use tokio::{task::yield_now, time::sleep};
|
|
||||||
use tracing::{info, warn};
|
use tracing::{info, warn};
|
||||||
use web3_proxy::prelude::ethers::{
|
use web3_proxy::prelude::ethers::{
|
||||||
prelude::{Block, Transaction, TxHash, H256, U256, U64},
|
prelude::{Block, Transaction, TxHash, H256, U256, U64},
|
||||||
@ -9,6 +8,7 @@ use web3_proxy::prelude::ethers::{
|
|||||||
};
|
};
|
||||||
use web3_proxy::prelude::http::StatusCode;
|
use web3_proxy::prelude::http::StatusCode;
|
||||||
use web3_proxy::prelude::reqwest;
|
use web3_proxy::prelude::reqwest;
|
||||||
|
use web3_proxy::prelude::tokio::{self, task::yield_now, time::sleep};
|
||||||
use web3_proxy::rpcs::blockchain::ArcBlock;
|
use web3_proxy::rpcs::blockchain::ArcBlock;
|
||||||
use web3_proxy_cli::test_utils::{TestAnvil, TestApp, TestMysql};
|
use web3_proxy_cli::test_utils::{TestAnvil, TestApp, TestMysql};
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ use tracing::{info, warn};
|
|||||||
use web3_proxy::prelude::futures::future::try_join_all;
|
use web3_proxy::prelude::futures::future::try_join_all;
|
||||||
use web3_proxy::prelude::reqwest;
|
use web3_proxy::prelude::reqwest;
|
||||||
use web3_proxy::prelude::rust_decimal::{Decimal, RoundingStrategy};
|
use web3_proxy::prelude::rust_decimal::{Decimal, RoundingStrategy};
|
||||||
|
use web3_proxy::prelude::tokio;
|
||||||
use web3_proxy::rpcs::blockchain::ArcBlock;
|
use web3_proxy::rpcs::blockchain::ArcBlock;
|
||||||
use web3_proxy_cli::test_utils::create_provider_with_rpc_key::create_provider_for_user;
|
use web3_proxy_cli::test_utils::create_provider_with_rpc_key::create_provider_for_user;
|
||||||
use web3_proxy_cli::test_utils::rpc_key::user_get_first_rpc_key;
|
use web3_proxy_cli::test_utils::rpc_key::user_get_first_rpc_key;
|
||||||
|
@ -4,6 +4,7 @@ use web3_proxy::balance::Balance;
|
|||||||
use web3_proxy::prelude::ethers::prelude::U64;
|
use web3_proxy::prelude::ethers::prelude::U64;
|
||||||
use web3_proxy::prelude::migration::sea_orm::prelude::Decimal;
|
use web3_proxy::prelude::migration::sea_orm::prelude::Decimal;
|
||||||
use web3_proxy::prelude::reqwest;
|
use web3_proxy::prelude::reqwest;
|
||||||
|
use web3_proxy::prelude::tokio;
|
||||||
use web3_proxy_cli::test_utils::{
|
use web3_proxy_cli::test_utils::{
|
||||||
admin_increases_balance::admin_increase_balance,
|
admin_increases_balance::admin_increase_balance,
|
||||||
create_admin::create_user_as_admin,
|
create_admin::create_user_as_admin,
|
||||||
|
@ -7,6 +7,7 @@ use web3_proxy::prelude::ethers::prelude::{Http, Provider};
|
|||||||
use web3_proxy::prelude::ethers::{signers::Signer, types::Signature};
|
use web3_proxy::prelude::ethers::{signers::Signer, types::Signature};
|
||||||
use web3_proxy::prelude::migration::sea_orm::prelude::Decimal;
|
use web3_proxy::prelude::migration::sea_orm::prelude::Decimal;
|
||||||
use web3_proxy::prelude::reqwest;
|
use web3_proxy::prelude::reqwest;
|
||||||
|
use web3_proxy::prelude::tokio;
|
||||||
use web3_proxy::prelude::ulid::Ulid;
|
use web3_proxy::prelude::ulid::Ulid;
|
||||||
use web3_proxy::rpcs::blockchain::ArcBlock;
|
use web3_proxy::rpcs::blockchain::ArcBlock;
|
||||||
use web3_proxy_cli::test_utils::admin_deposits::get_admin_deposits;
|
use web3_proxy_cli::test_utils::admin_deposits::get_admin_deposits;
|
||||||
|
Loading…
Reference in New Issue
Block a user