diff --git a/crates/protos/src/lib.rs b/crates/protos/src/lib.rs index 2433eca2..396976c5 100644 --- a/crates/protos/src/lib.rs +++ b/crates/protos/src/lib.rs @@ -39,14 +39,21 @@ pub async fn node_service_time_out_client( Box, > { let token: MetadataValue<_> = "rustfs rpc".parse()?; - let channel = match GLOBAL_Conn_Map.read().await.get(addr) { - Some(channel) => channel.clone(), + + let channel = { GLOBAL_Conn_Map.read().await.get(addr).cloned() }; + + let channel = match channel { + Some(channel) => channel, None => { let connector = Endpoint::from_shared(addr.to_string())?.connect_timeout(Duration::from_secs(60)); - connector.connect().await? + let channel = connector.connect().await?; + + { + GLOBAL_Conn_Map.write().await.insert(addr.to_string(), channel.clone()); + } + channel } }; - GLOBAL_Conn_Map.write().await.insert(addr.to_string(), channel.clone()); // let timeout_channel = Timeout::new(channel, Duration::from_secs(60)); Ok(NodeServiceClient::with_interceptor(