better statusq failure recording

This commit is contained in:
John Smith 2023-06-09 22:42:03 -04:00
parent 532bcf2e2a
commit 88466db03f
2 changed files with 30 additions and 3 deletions

View File

@ -603,7 +603,7 @@ impl BucketEntryInner {
} }
} }
pub(super) fn check_dead(&self, cur_ts: Timestamp) -> bool { pub(super) fn check_dead(&self, cur_ts: Timestamp) -> bool {
// If we have failured to send NEVER_REACHED_PING_COUNT times in a row, the node is dead // If we have failed to send NEVER_REACHED_PING_COUNT times in a row, the node is dead
if self.peer_stats.rpc_stats.failed_to_send >= NEVER_REACHED_PING_COUNT { if self.peer_stats.rpc_stats.failed_to_send >= NEVER_REACHED_PING_COUNT {
return true; return true;
} }

View File

@ -30,9 +30,19 @@ impl RPCProcessor {
let routing_domain = match target.best_routing_domain() { let routing_domain = match target.best_routing_domain() {
Some(rd) => rd, Some(rd) => rd,
None => { None => {
// Because this exits before calling 'question()',
// a failure to find a routing domain constitutes a send failure
let send_ts = get_aligned_timestamp();
self.record_send_failure(
RPCKind::Question,
send_ts,
target.clone(),
None,
None,
);
return Ok(NetworkResult::no_connection_other( return Ok(NetworkResult::no_connection_other(
"no routing domain for target", "no routing domain for target",
)) ));
} }
}; };
(Some(target.clone()), routing_domain) (Some(target.clone()), routing_domain)
@ -45,9 +55,26 @@ impl RPCProcessor {
let routing_domain = match relay.best_routing_domain() { let routing_domain = match relay.best_routing_domain() {
Some(rd) => rd, Some(rd) => rd,
None => { None => {
// Because this exits before calling 'question()',
// a failure to find a routing domain constitutes a send failure for both the target and its relay
let send_ts = get_aligned_timestamp();
self.record_send_failure(
RPCKind::Question,
send_ts,
relay.clone(),
None,
None,
);
self.record_send_failure(
RPCKind::Question,
send_ts,
target.clone(),
None,
None,
);
return Ok(NetworkResult::no_connection_other( return Ok(NetworkResult::no_connection_other(
"no routing domain for peer", "no routing domain for peer",
)) ));
} }
}; };
(Some(target.clone()), routing_domain) (Some(target.clone()), routing_domain)