better error message handling

This commit is contained in:
Alex Auvolat 2022-12-14 16:11:19 +01:00
parent 510b620108
commit e6f14ab5cf
No known key found for this signature in database
GPG key ID: 0E496D15096376BE

View file

@ -436,16 +436,13 @@ impl System {
})?; })?;
let mut errors = vec![]; let mut errors = vec![];
for addr in addrs.iter() { for addr in addrs.iter() {
match self match self.netapp.clone().try_connect(*addr, pubkey).await {
.netapp
.clone()
.try_connect(*addr, pubkey)
.await
.err_context(connect_error_message(*addr, pubkey))
{
Ok(()) => return Ok(()), Ok(()) => return Ok(()),
Err(e) => { Err(e) => {
errors.push((*addr, e)); errors.push((
*addr,
Error::Message(connect_error_message(*addr, pubkey, e)),
));
} }
} }
} }
@ -766,7 +763,7 @@ impl System {
let self2 = self.clone(); let self2 = self.clone();
tokio::spawn(async move { tokio::spawn(async move {
if let Err(e) = self2.netapp.clone().try_connect(node_addr, node_id).await { if let Err(e) = self2.netapp.clone().try_connect(node_addr, node_id).await {
error!("{}\n{}", connect_error_message(node_addr, node_id), e); error!("{}", connect_error_message(node_addr, node_id, e));
} }
}); });
} }
@ -871,6 +868,10 @@ async fn resolve_peers(peers: &[String]) -> Vec<(NodeID, SocketAddr)> {
ret ret
} }
fn connect_error_message(addr: SocketAddr, pubkey: ed25519::PublicKey) -> String { fn connect_error_message(
format!("Error establishing RPC connection to remote node: {}@{}.\nThis can happen if the remote node is not reachable on the network, but also if the two nodes are not configured with the same rpc_secret", hex::encode(pubkey), addr) addr: SocketAddr,
pubkey: ed25519::PublicKey,
e: netapp::error::Error,
) -> String {
format!("Error establishing RPC connection to remote node: {}@{}.\nThis can happen if the remote node is not reachable on the network, but also if the two nodes are not configured with the same rpc_secret.\n{}", hex::encode(pubkey), addr, e)
} }