mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 23:21:06 +00:00
fix delay in message_lane_loop_is_able_to_recover_from_connection_errors (#850)
This commit is contained in:
committed by
Bastian Köcher
parent
bc50fa6616
commit
b6d034afaf
@@ -221,6 +221,7 @@ pub async fn run<P: MessageLane>(
|
|||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
let exit_signal = exit_signal.shared();
|
let exit_signal = exit_signal.shared();
|
||||||
relay_utils::relay_loop(source_client, target_client)
|
relay_utils::relay_loop(source_client, target_client)
|
||||||
|
.reconnect_delay(params.reconnect_delay)
|
||||||
.with_metrics(format!(
|
.with_metrics(format!(
|
||||||
"{}_to_{}_MessageLane_{}",
|
"{}_to_{}_MessageLane_{}",
|
||||||
P::SOURCE_NAME,
|
P::SOURCE_NAME,
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ pub trait Client: Clone + Send + Sync {
|
|||||||
/// Returns generic loop that may be customized and started.
|
/// Returns generic loop that may be customized and started.
|
||||||
pub fn relay_loop<SC, TC>(source_client: SC, target_client: TC) -> Loop<SC, TC, ()> {
|
pub fn relay_loop<SC, TC>(source_client: SC, target_client: TC) -> Loop<SC, TC, ()> {
|
||||||
Loop {
|
Loop {
|
||||||
|
reconnect_delay: RECONNECT_DELAY,
|
||||||
source_client,
|
source_client,
|
||||||
target_client,
|
target_client,
|
||||||
loop_metric: None,
|
loop_metric: None,
|
||||||
@@ -45,6 +46,7 @@ pub fn relay_loop<SC, TC>(source_client: SC, target_client: TC) -> Loop<SC, TC,
|
|||||||
|
|
||||||
/// Generic relay loop.
|
/// Generic relay loop.
|
||||||
pub struct Loop<SC, TC, LM> {
|
pub struct Loop<SC, TC, LM> {
|
||||||
|
reconnect_delay: Duration,
|
||||||
source_client: SC,
|
source_client: SC,
|
||||||
target_client: TC,
|
target_client: TC,
|
||||||
loop_metric: Option<LM>,
|
loop_metric: Option<LM>,
|
||||||
@@ -58,6 +60,12 @@ pub struct LoopMetrics<SC, TC, LM> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<SC, TC, LM> Loop<SC, TC, LM> {
|
impl<SC, TC, LM> Loop<SC, TC, LM> {
|
||||||
|
/// Customize delay between reconnect attempts.
|
||||||
|
pub fn reconnect_delay(mut self, reconnect_delay: Duration) -> Self {
|
||||||
|
self.reconnect_delay = reconnect_delay;
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
/// Start building loop metrics using given prefix.
|
/// Start building loop metrics using given prefix.
|
||||||
///
|
///
|
||||||
/// Panics if `prefix` is empty.
|
/// Panics if `prefix` is empty.
|
||||||
@@ -66,6 +74,7 @@ impl<SC, TC, LM> Loop<SC, TC, LM> {
|
|||||||
|
|
||||||
LoopMetrics {
|
LoopMetrics {
|
||||||
relay_loop: Loop {
|
relay_loop: Loop {
|
||||||
|
reconnect_delay: self.reconnect_delay,
|
||||||
source_client: self.source_client,
|
source_client: self.source_client,
|
||||||
target_client: self.target_client,
|
target_client: self.target_client,
|
||||||
loop_metric: None,
|
loop_metric: None,
|
||||||
@@ -100,7 +109,7 @@ impl<SC, TC, LM> Loop<SC, TC, LM> {
|
|||||||
match result {
|
match result {
|
||||||
Ok(()) => break,
|
Ok(()) => break,
|
||||||
Err(failed_client) => loop {
|
Err(failed_client) => loop {
|
||||||
async_std::task::sleep(RECONNECT_DELAY).await;
|
async_std::task::sleep(self.reconnect_delay).await;
|
||||||
if failed_client == FailedClient::Both || failed_client == FailedClient::Source {
|
if failed_client == FailedClient::Both || failed_client == FailedClient::Source {
|
||||||
match self.source_client.reconnect().await {
|
match self.source_client.reconnect().await {
|
||||||
Ok(()) => (),
|
Ok(()) => (),
|
||||||
@@ -108,7 +117,7 @@ impl<SC, TC, LM> Loop<SC, TC, LM> {
|
|||||||
log::warn!(
|
log::warn!(
|
||||||
target: "bridge",
|
target: "bridge",
|
||||||
"Failed to reconnect to source client. Going to retry in {}s: {:?}",
|
"Failed to reconnect to source client. Going to retry in {}s: {:?}",
|
||||||
RECONNECT_DELAY.as_secs(),
|
self.reconnect_delay.as_secs(),
|
||||||
error,
|
error,
|
||||||
);
|
);
|
||||||
continue;
|
continue;
|
||||||
@@ -122,7 +131,7 @@ impl<SC, TC, LM> Loop<SC, TC, LM> {
|
|||||||
log::warn!(
|
log::warn!(
|
||||||
target: "bridge",
|
target: "bridge",
|
||||||
"Failed to reconnect to target client. Going to retry in {}s: {:?}",
|
"Failed to reconnect to target client. Going to retry in {}s: {:?}",
|
||||||
RECONNECT_DELAY.as_secs(),
|
self.reconnect_delay.as_secs(),
|
||||||
error,
|
error,
|
||||||
);
|
);
|
||||||
continue;
|
continue;
|
||||||
@@ -189,6 +198,7 @@ impl<SC, TC, LM> LoopMetrics<SC, TC, LM> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Ok(Loop {
|
Ok(Loop {
|
||||||
|
reconnect_delay: self.relay_loop.reconnect_delay,
|
||||||
source_client: self.relay_loop.source_client,
|
source_client: self.relay_loop.source_client,
|
||||||
target_client: self.relay_loop.target_client,
|
target_client: self.relay_loop.target_client,
|
||||||
loop_metric: self.loop_metric,
|
loop_metric: self.loop_metric,
|
||||||
|
|||||||
Reference in New Issue
Block a user