RPCTester should test rpc and not self

This commit is contained in:
Godmode Galactus 2023-09-07 16:46:14 +02:00
parent aa6f4371d6
commit d16bd5bd0d
No known key found for this signature in database
GPG Key ID: A04142C71ABB0DEA
3 changed files with 16 additions and 20 deletions

View File

@ -12,7 +12,7 @@ pub async fn poll_commitment_slots(
commitment_config: CommitmentConfig,
slot_tx: tokio::sync::mpsc::UnboundedSender<Slot>,
) -> anyhow::Result<()> {
let mut poll_frequency = tokio::time::interval(Duration::from_millis(10));
let mut poll_frequency = tokio::time::interval(Duration::from_millis(50));
let mut last_slot = 0;
let mut errors = 0;
loop {

View File

@ -74,9 +74,8 @@ pub async fn start_postgres(
Ok((Some(postgres_send), postgres))
}
pub async fn start_lite_rpc(args: Args) -> anyhow::Result<()> {
pub async fn start_lite_rpc(args: Args, rpc_client: Arc<RpcClient>) -> anyhow::Result<()> {
let Args {
rpc_addr,
lite_rpc_ws_addr,
lite_rpc_http_addr,
fanout_size,
@ -101,8 +100,6 @@ pub async fn start_lite_rpc(args: Args) -> anyhow::Result<()> {
let tpu_connection_path = configure_tpu_connection_path(quic_proxy_addr);
// rpc client
let rpc_client = Arc::new(RpcClient::new(rpc_addr.clone()));
let (subscriptions, cluster_endpoint_tasks) = if use_grpc {
create_grpc_subscription(rpc_client.clone(), grpc_addr, GRPC_VERSION.to_string())?
} else {
@ -239,9 +236,12 @@ pub async fn main() -> anyhow::Result<()> {
let args = get_args();
let ctrl_c_signal = tokio::signal::ctrl_c();
let rpc_tester = RpcTester::from(&args).start();
let Args { rpc_addr, .. } = &args;
// rpc client
let rpc_client = Arc::new(RpcClient::new(rpc_addr.clone()));
let rpc_tester = tokio::spawn(RpcTester::new(rpc_client.clone()).start());
let main = start_lite_rpc(args.clone());
let main = start_lite_rpc(args.clone(), rpc_client);
tokio::select! {
err = rpc_tester => {

View File

@ -1,25 +1,20 @@
use std::net::SocketAddr;
use anyhow::bail;
use lite_rpc::cli::Args;
use prometheus::{opts, register_gauge, Gauge};
use solana_rpc_client::nonblocking::rpc_client::RpcClient;
use std::sync::Arc;
lazy_static::lazy_static! {
static ref RPC_RESPONDING: Gauge =
register_gauge!(opts!("literpc_rpc_responding", "If LiteRpc is responding")).unwrap();
}
pub struct RpcTester(RpcClient);
pub struct RpcTester {
rpc_client: Arc<RpcClient>,
}
impl From<&Args> for RpcTester {
fn from(value: &Args) -> Self {
let addr: SocketAddr = value
.lite_rpc_http_addr
.parse()
.expect("Invalid literpc http address");
RpcTester(RpcClient::new(format!("http://0.0.0.0:{}", addr.port())))
impl RpcTester {
pub fn new(rpc_client: Arc<RpcClient>) -> Self {
Self { rpc_client }
}
}
@ -27,11 +22,12 @@ impl RpcTester {
/// Starts a loop that checks if the rpc is responding every 5 seconds
pub async fn start(self) -> anyhow::Result<()> {
let mut error_counter = 0;
let rpc_client = self.rpc_client;
loop {
// sleep for 5 seconds
tokio::time::sleep(tokio::time::Duration::from_secs(5)).await;
// do a simple request to self for getVersion
let Err(err) = self.0.get_version().await else {
let Err(err) = rpc_client.get_version().await else {
RPC_RESPONDING.set(1.0);
continue;
};