mirror of
https://github.com/sigp/lighthouse.git
synced 2026-05-08 09:16:00 +00:00
Add custom http timeout to validator
This commit is contained in:
@@ -35,9 +35,14 @@ pub struct RemoteBeaconNode<E: EthSpec> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<E: EthSpec> RemoteBeaconNode<E> {
|
impl<E: EthSpec> RemoteBeaconNode<E> {
|
||||||
|
/// Uses the default HTTP timeout.
|
||||||
pub fn new(http_endpoint: String) -> Result<Self, String> {
|
pub fn new(http_endpoint: String) -> Result<Self, String> {
|
||||||
|
Self::new_with_timeout(http_endpoint, Duration::from_secs(REQUEST_TIMEOUT_SECONDS))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn new_with_timeout(http_endpoint: String, timeout: Duration) -> Result<Self, String> {
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
http: HttpClient::new(http_endpoint)
|
http: HttpClient::new(http_endpoint, timeout)
|
||||||
.map_err(|e| format!("Unable to create http client: {:?}", e))?,
|
.map_err(|e| format!("Unable to create http client: {:?}", e))?,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -65,12 +70,10 @@ pub struct HttpClient<E> {
|
|||||||
|
|
||||||
impl<E: EthSpec> HttpClient<E> {
|
impl<E: EthSpec> HttpClient<E> {
|
||||||
/// Creates a new instance (without connecting to the node).
|
/// Creates a new instance (without connecting to the node).
|
||||||
///
|
pub fn new(server_url: String, timeout: Duration) -> Result<Self, Error> {
|
||||||
/// The `timeout` is set to 15 seconds.
|
|
||||||
pub fn new(server_url: String) -> Result<Self, Error> {
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
client: ClientBuilder::new()
|
client: ClientBuilder::new()
|
||||||
.timeout(Duration::from_secs(REQUEST_TIMEOUT_SECONDS))
|
.timeout(timeout)
|
||||||
.build()
|
.build()
|
||||||
.expect("should build from static configuration"),
|
.expect("should build from static configuration"),
|
||||||
url: Url::parse(&server_url)?,
|
url: Url::parse(&server_url)?,
|
||||||
|
|||||||
@@ -34,8 +34,12 @@ use tokio::timer::Delay;
|
|||||||
use types::EthSpec;
|
use types::EthSpec;
|
||||||
use validator_store::ValidatorStore;
|
use validator_store::ValidatorStore;
|
||||||
|
|
||||||
|
/// The interval between attempts to contact the beacon node during startup.
|
||||||
const RETRY_DELAY: Duration = Duration::from_secs(2);
|
const RETRY_DELAY: Duration = Duration::from_secs(2);
|
||||||
|
|
||||||
|
/// The global timeout for HTTP events.
|
||||||
|
const HTTP_TIMEOUT: Duration = Duration::from_secs(12);
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct ProductionValidatorClient<T: EthSpec> {
|
pub struct ProductionValidatorClient<T: EthSpec> {
|
||||||
context: RuntimeContext<T>,
|
context: RuntimeContext<T>,
|
||||||
@@ -76,7 +80,7 @@ impl<T: EthSpec> ProductionValidatorClient<T> {
|
|||||||
"datadir" => format!("{:?}", config.data_dir),
|
"datadir" => format!("{:?}", config.data_dir),
|
||||||
);
|
);
|
||||||
|
|
||||||
RemoteBeaconNode::new(config.http_server.clone())
|
RemoteBeaconNode::new_with_timeout(config.http_server.clone(), HTTP_TIMEOUT)
|
||||||
.map_err(|e| format!("Unable to init beacon node http client: {}", e))
|
.map_err(|e| format!("Unable to init beacon node http client: {}", e))
|
||||||
.into_future()
|
.into_future()
|
||||||
.and_then(move |beacon_node| wait_for_node(beacon_node, log_2))
|
.and_then(move |beacon_node| wait_for_node(beacon_node, log_2))
|
||||||
|
|||||||
Reference in New Issue
Block a user