Skip to content

Commit d2d155d

Browse files
committed
Improve: Use Unreachable error in examples/raft-kv-rocksdb
1 parent 768dfdc commit d2d155d

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

examples/raft-kv-memstore/src/network/raft_network_impl.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ impl Network {
4343
tracing::debug!("client is created for: {}", url);
4444

4545
let resp = client.post(url).json(&req).send().await.map_err(|e| {
46-
// If the error is a connection error, we return Unreachable so that connection isn't retried
46+
// If the error is a connection error, we return `Unreachable` so that connection isn't retried
4747
// immediately.
4848
if e.is_connect() {
4949
return openraft::error::RPCError::Unreachable(Unreachable::new(&e));

examples/raft-kv-rocksdb/src/client.rs

+8-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use std::sync::Mutex;
55
use openraft::error::NetworkError;
66
use openraft::error::RPCError;
77
use openraft::error::RemoteError;
8+
use openraft::error::Unreachable;
89
use openraft::RaftMetrics;
910
use openraft::TryAsRef;
1011
use reqwest::Client;
@@ -142,7 +143,13 @@ impl ExampleClient {
142143
}
143144
.send()
144145
.await
145-
.map_err(|e| RPCError::Network(NetworkError::new(&e)))?;
146+
.map_err(|e| {
147+
if e.is_connect() {
148+
// `Unreachable` informs the caller to backoff for a short while to avoid error log flush.
149+
return RPCError::Unreachable(Unreachable::new(&e));
150+
}
151+
RPCError::Network(NetworkError::new(&e))
152+
})?;
146153

147154
let res: Result<Resp, Err> = resp.json().await.map_err(|e| RPCError::Network(NetworkError::new(&e)))?;
148155
println!(

0 commit comments

Comments
 (0)