From ca55a8bba82abac2ee56468fbb28d0bb3d51401f Mon Sep 17 00:00:00 2001 From: GroovieGermanikus Date: Thu, 18 Jan 2024 13:38:15 +0100 Subject: [PATCH] handle connect problems --- src/grpc_subscription_autoreconnect.rs | 46 ++++++++++++-------------- 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/src/grpc_subscription_autoreconnect.rs b/src/grpc_subscription_autoreconnect.rs index 1dfe9f5..28cc2ed 100644 --- a/src/grpc_subscription_autoreconnect.rs +++ b/src/grpc_subscription_autoreconnect.rs @@ -355,35 +355,31 @@ pub fn create_geyser_reconnecting_task( client.subscribe_once2(subscribe_filter)) .await; - let subscribe_result; - match subscribe_result_timeout.map_err(|_| Status::unknown("unspecific subscribe timeout")) { - Ok(fooo) => { - subscribe_result = fooo; + match subscribe_result_timeout { + Ok(subscribe_result) => { + match subscribe_result { + Ok(geyser_stream) => { + Ready(attempt, geyser_stream) + } + Err(GeyserGrpcClientError::TonicError(_)) => { + warn!("! subscribe failed on {} - retrying", grpc_source); + RecoverableConnectionError(attempt) + } + Err(GeyserGrpcClientError::TonicStatus(_)) => { + warn!("! subscribe failed on {} - retrying", grpc_source); + RecoverableConnectionError(attempt) + } + // non-recoverable + Err(unrecoverable_error) => { + error!("! subscribe to {} failed with unrecoverable error: {}", grpc_source, unrecoverable_error); + FatalError(attempt) + } + } } Err(_elapsed) => { - todo!() - } - } - // maybe not optimal - // let subscribe_result = subscribe_result_timeout.map_err(|_| Status::unknown("unspecific subscribe timeout")); - - match subscribe_result { - Ok(geyser_stream) => { - Ready(attempt, geyser_stream) - } - Err(GeyserGrpcClientError::TonicError(_)) => { - warn!("! subscribe failed on {} - retrying", grpc_source); + warn!("! subscribe failed with timeout on {} - retrying", grpc_source); RecoverableConnectionError(attempt) } - Err(GeyserGrpcClientError::TonicStatus(_)) => { - warn!("! subscribe failed on {} - retrying", grpc_source); - RecoverableConnectionError(attempt) - } - // non-recoverable - Err(unrecoverable_error) => { - error!("! subscribe to {} failed with unrecoverable error: {}", grpc_source, unrecoverable_error); - FatalError(attempt) - } } } RecoverableConnectionError(attempt) => {