diff --git a/examples/raft-kv-memstore/src/client.rs b/examples/raft-kv-memstore/src/client.rs index 36250f676..83216d25d 100644 --- a/examples/raft-kv-memstore/src/client.rs +++ b/examples/raft-kv-memstore/src/client.rs @@ -1,6 +1,7 @@ use std::collections::BTreeSet; use std::sync::Arc; use std::sync::Mutex; +use std::time::Duration; use openraft::error::AddLearnerError; use openraft::error::CheckIsLeaderError; @@ -16,9 +17,13 @@ use openraft::raft::ClientWriteResponse; use openraft::BasicNode; use openraft::RaftMetrics; use reqwest::Client; +use reqwest::Error; +use reqwest::Response; use serde::de::DeserializeOwned; use serde::Deserialize; use serde::Serialize; +use tokio::time::error::Elapsed; +use tokio::time::timeout; use crate::ExampleNodeId; use crate::ExampleRequest; @@ -155,23 +160,33 @@ impl ExampleClient { (t.0, format!("http://{}/{}", target_addr, uri)) }; - let resp = if let Some(r) = req { - println!( + let fu = if let Some(r) = req { + tracing::debug!( ">>> client send request to {}: {}", url, serde_json::to_string_pretty(&r).unwrap() ); self.inner.post(url.clone()).json(r) } else { - println!(">>> client send request to {}", url,); + tracing::debug!(">>> client send request to {}", url,); self.inner.get(url.clone()) } - .send() - .await - .map_err(|e| RPCError::Network(NetworkError::new(&e)))?; + .send(); + + let res = timeout(Duration::from_millis(500), fu).await; + let resp = match res { + Ok(x) => { + let resp = x.map_err(|e| RPCError::Network(NetworkError::new(&e)))?; + resp + } + Err(timeout_err) => { + tracing::error!("timeout {} to url: {}", timeout_err, url); + return Err(RPCError::Network(NetworkError::new(&timeout_err))); + } + }; let res: Result = resp.json().await.map_err(|e| RPCError::Network(NetworkError::new(&e)))?; - println!( + tracing::debug!( "<<< client recv reply from {}: {}", url, serde_json::to_string_pretty(&res).unwrap() diff --git a/examples/raft-kv-memstore/src/network/raft_network_impl.rs b/examples/raft-kv-memstore/src/network/raft_network_impl.rs index e4fd496fb..0ec54f27b 100644 --- a/examples/raft-kv-memstore/src/network/raft_network_impl.rs +++ b/examples/raft-kv-memstore/src/network/raft_network_impl.rs @@ -38,10 +38,15 @@ impl ExampleNetwork { let addr = &target_node.addr; let url = format!("http://{}/{}", addr, uri); + tracing::debug!("send_rpc to url: {}", url); let client = reqwest::Client::new(); + tracing::debug!("client is created for: {}", url); + let resp = client.post(url).json(&req).send().await.map_err(|e| RPCError::Network(NetworkError::new(&e)))?; + tracing::debug!("client.post() is sent"); + let res: Result = resp.json().await.map_err(|e| RPCError::Network(NetworkError::new(&e)))?; res.map_err(|e| RPCError::RemoteError(RemoteError::new(target, e)))