Add validator catchup command (#6935)

This commit is contained in:
Michael Vines
2019-11-13 15:58:22 -07:00
committed by GitHub
parent b340f3a67f
commit 1f1c287c6c
9 changed files with 175 additions and 44 deletions

View File

@@ -2,7 +2,7 @@ use crate::client_error::ClientError;
use crate::generic_rpc_client_request::GenericRpcClientRequest;
use crate::mock_rpc_client_request::MockRpcClientRequest;
use crate::rpc_client_request::RpcClientRequest;
use crate::rpc_request::{RpcEpochInfo, RpcRequest, RpcVoteAccountStatus};
use crate::rpc_request::{RpcContactInfo, RpcEpochInfo, RpcRequest, RpcVoteAccountStatus};
use bincode::serialize;
use log::*;
use serde_json::{json, Value};
@@ -120,6 +120,25 @@ impl RpcClient {
})
}
pub fn get_cluster_nodes(&self) -> io::Result<Vec<RpcContactInfo>> {
let response = self
.client
.send(&RpcRequest::GetClusterNodes, None, 0)
.map_err(|err| {
io::Error::new(
io::ErrorKind::Other,
format!("GetClusterNodes request failure: {:?}", err),
)
})?;
serde_json::from_value(response).map_err(|err| {
io::Error::new(
io::ErrorKind::Other,
format!("GetClusterNodes parse failure: {}", err),
)
})
}
pub fn get_epoch_info(&self) -> io::Result<RpcEpochInfo> {
let response = self
.client

View File

@@ -1,5 +1,5 @@
use serde_json::{json, Value};
use std::{error, fmt};
use std::{error, fmt, net::SocketAddr};
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
@@ -49,6 +49,18 @@ pub struct RpcVoteAccountInfo {
pub root_slot: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct RpcContactInfo {
/// Pubkey of the node as a base-58 string
pub pubkey: String,
/// Gossip port
pub gossip: Option<SocketAddr>,
/// Tpu port
pub tpu: Option<SocketAddr>,
/// JSON RPC port
pub rpc: Option<SocketAddr>,
}
#[derive(Debug, PartialEq)]
pub enum RpcRequest {
ConfirmTransaction,