better error message handling
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Alex 2022-12-14 16:11:19 +01:00
parent 510b620108
commit e6f14ab5cf
Signed by: lx
GPG Key ID: 0E496D15096376BE
1 changed files with 12 additions and 11 deletions

View File

@ -436,16 +436,13 @@ impl System {
})?;
let mut errors = vec![];
for addr in addrs.iter() {
match self
.netapp
.clone()
.try_connect(*addr, pubkey)
.await
.err_context(connect_error_message(*addr, pubkey))
{
match self.netapp.clone().try_connect(*addr, pubkey).await {
Ok(()) => return Ok(()),
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();
tokio::spawn(async move {
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
}
fn connect_error_message(addr: SocketAddr, pubkey: ed25519::PublicKey) -> 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", hex::encode(pubkey), addr)
fn connect_error_message(
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)
}