Adding CLI argument to set the max number of connections with the leader (#317)
* Adding CLI argument to set the max number of connections with the leader * Fixing env variable name
This commit is contained in:
parent
9e031902e3
commit
4d5a21530c
|
@ -67,6 +67,8 @@ pub struct Config {
|
||||||
/// postgres config
|
/// postgres config
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub postgres: Option<PostgresSessionConfig>,
|
pub postgres: Option<PostgresSessionConfig>,
|
||||||
|
|
||||||
|
pub max_number_of_connection: Option<usize>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Config {
|
impl Config {
|
||||||
|
@ -173,6 +175,10 @@ impl Config {
|
||||||
.map(Some)
|
.map(Some)
|
||||||
.unwrap_or(config.grpc_x_token4);
|
.unwrap_or(config.grpc_x_token4);
|
||||||
|
|
||||||
|
config.max_number_of_connection = env::var("MAX_NB_OF_CONNECTIONS_WITH_LEADERS")
|
||||||
|
.map(|x| x.parse().ok())
|
||||||
|
.unwrap_or(config.max_number_of_connection);
|
||||||
|
|
||||||
config.postgres = PostgresSessionConfig::new_from_env()?.or(config.postgres);
|
config.postgres = PostgresSessionConfig::new_from_env()?.or(config.postgres);
|
||||||
|
|
||||||
Ok(config)
|
Ok(config)
|
||||||
|
|
|
@ -41,3 +41,6 @@ pub const GRPC_VERSION: &str = "1.16.1";
|
||||||
// cache transactions of 1000 slots by default
|
// cache transactions of 1000 slots by default
|
||||||
#[from_env]
|
#[from_env]
|
||||||
pub const NB_SLOTS_TRANSACTIONS_TO_CACHE: u64 = 1000;
|
pub const NB_SLOTS_TRANSACTIONS_TO_CACHE: u64 = 1000;
|
||||||
|
|
||||||
|
#[from_env]
|
||||||
|
pub const MAX_NB_OF_CONNECTIONS_WITH_LEADERS: usize = 8;
|
||||||
|
|
|
@ -7,7 +7,7 @@ use lite_rpc::bridge::LiteBridge;
|
||||||
use lite_rpc::cli::Config;
|
use lite_rpc::cli::Config;
|
||||||
use lite_rpc::postgres_logger::PostgresLogger;
|
use lite_rpc::postgres_logger::PostgresLogger;
|
||||||
use lite_rpc::service_spawner::ServiceSpawner;
|
use lite_rpc::service_spawner::ServiceSpawner;
|
||||||
use lite_rpc::DEFAULT_MAX_NUMBER_OF_TXS_IN_QUEUE;
|
use lite_rpc::{DEFAULT_MAX_NUMBER_OF_TXS_IN_QUEUE, MAX_NB_OF_CONNECTIONS_WITH_LEADERS};
|
||||||
use log::{debug, info};
|
use log::{debug, info};
|
||||||
use solana_lite_rpc_cluster_endpoints::endpoint_stremers::EndpointStreaming;
|
use solana_lite_rpc_cluster_endpoints::endpoint_stremers::EndpointStreaming;
|
||||||
use solana_lite_rpc_cluster_endpoints::grpc_subscription::create_grpc_subscription;
|
use solana_lite_rpc_cluster_endpoints::grpc_subscription::create_grpc_subscription;
|
||||||
|
@ -216,7 +216,9 @@ pub async fn start_lite_rpc(args: Config, rpc_client: Arc<RpcClient>) -> anyhow:
|
||||||
connection_timeout: Duration::from_secs(1),
|
connection_timeout: Duration::from_secs(1),
|
||||||
connection_retry_count: 10,
|
connection_retry_count: 10,
|
||||||
finalize_timeout: Duration::from_millis(1000),
|
finalize_timeout: Duration::from_millis(1000),
|
||||||
max_number_of_connections: 8,
|
max_number_of_connections: args
|
||||||
|
.max_number_of_connection
|
||||||
|
.unwrap_or(MAX_NB_OF_CONNECTIONS_WITH_LEADERS),
|
||||||
unistream_timeout: Duration::from_millis(500),
|
unistream_timeout: Duration::from_millis(500),
|
||||||
write_timeout: Duration::from_secs(1),
|
write_timeout: Duration::from_secs(1),
|
||||||
number_of_transactions_per_unistream: 1,
|
number_of_transactions_per_unistream: 1,
|
||||||
|
@ -247,7 +249,7 @@ pub async fn start_lite_rpc(args: Config, rpc_client: Arc<RpcClient>) -> anyhow:
|
||||||
DEFAULT_MAX_NUMBER_OF_TXS_IN_QUEUE,
|
DEFAULT_MAX_NUMBER_OF_TXS_IN_QUEUE,
|
||||||
notification_channel.clone(),
|
notification_channel.clone(),
|
||||||
maximum_retries_per_tx,
|
maximum_retries_per_tx,
|
||||||
slot_notifier,
|
slot_notifier.resubscribe(),
|
||||||
);
|
);
|
||||||
|
|
||||||
let support_service = tokio::spawn(async move { spawner.spawn_support_services().await });
|
let support_service = tokio::spawn(async move { spawner.spawn_support_services().await });
|
||||||
|
@ -262,10 +264,12 @@ pub async fn start_lite_rpc(args: Config, rpc_client: Arc<RpcClient>) -> anyhow:
|
||||||
history,
|
history,
|
||||||
block_priofees_service,
|
block_priofees_service,
|
||||||
account_priofees_service,
|
account_priofees_service,
|
||||||
blocks_notifier,
|
blocks_notifier.resubscribe(),
|
||||||
)
|
)
|
||||||
.start(lite_rpc_http_addr, lite_rpc_ws_addr),
|
.start(lite_rpc_http_addr, lite_rpc_ws_addr),
|
||||||
);
|
);
|
||||||
|
drop(slot_notifier);
|
||||||
|
drop(blocks_notifier);
|
||||||
|
|
||||||
tokio::select! {
|
tokio::select! {
|
||||||
res = tx_service_jh => {
|
res = tx_service_jh => {
|
||||||
|
|
Loading…
Reference in New Issue