node/wire: manage logs for error establishing connection

Instead of logging all IO errors as an error, match on the kind of the
error, logging an info message, otherwise an error.

These errors are informational, and cannot necessarily be resolved by
the node operator – since it is a matter of not being able to connect
to another end.
This commit is contained in:
Fintan Halpenny 2025-12-17 13:23:27 +00:00 committed by Lorenz Leutgeb
parent 47dc2c562c
commit 75b665ff3a
1 changed files with 16 additions and 1 deletions

View File

@ -990,7 +990,7 @@ where
.push_back(reactor::Action::RegisterTransport(token, transport));
}
Err(err) => {
log::error!(target: "wire", "Error establishing connection to {addr}: {err}");
logger::establish_connection(&addr, &err);
self.service.disconnected(
node_id,
@ -1221,6 +1221,21 @@ fn session<G: Ecdh<Pk = NodeId>>(
WireSession::new(proxy, noise)
}
mod logger {
use radicle::node::Address;
pub fn establish_connection(addr: &Address, err: &std::io::Error) {
use std::io::ErrorKind::*;
match err.kind() {
ConnectionRefused | ConnectionReset | HostUnreachable | ConnectionAborted
| NotConnected => {
log::info!(target: "wire", "Could not establish connection to {addr}: {err}")
}
_ => log::error!(target: "wire", "Error establishing connection to {addr}: {err}"),
}
}
}
#[cfg(test)]
mod test {
use super::*;