diff --git a/polkadot/node/network/bridge/src/validator_discovery.rs b/polkadot/node/network/bridge/src/validator_discovery.rs index 8aef5141fb..87ff378fd6 100644 --- a/polkadot/node/network/bridge/src/validator_discovery.rs +++ b/polkadot/node/network/bridge/src/validator_discovery.rs @@ -264,6 +264,8 @@ impl Service { if let Some(addresses) = result { // We might have several `PeerId`s per `AuthorityId` multiaddr_to_add.extend(addresses.into_iter().take(MAX_ADDR_PER_PEER)); + } else { + tracing::debug!(target: LOG_TARGET, "Authority Discovery couldn't resolve {:?}", authority); } } @@ -282,6 +284,9 @@ impl Service { } // clean up revoked requests states + // + // note that the `.rev()` here is important to guarantee `swap_remove` + // doesn't invalidate unprocessed `revoked_indices` for to_revoke in revoked_indices.into_iter().rev() { drop(state.non_revoked_discovery_requests.swap_remove(to_revoke)); } @@ -289,9 +294,15 @@ impl Service { // multiaddresses to remove let mut multiaddr_to_remove = HashSet::new(); for id in revoked_validators.into_iter() { - let result = authority_discovery_service.get_addresses_by_authority_id(id).await; + let result = authority_discovery_service.get_addresses_by_authority_id(id.clone()).await; if let Some(addresses) = result { multiaddr_to_remove.extend(addresses.into_iter()); + } else { + tracing::debug!( + target: LOG_TARGET, + "Authority Discovery couldn't resolve {:?} on cleanup, a leak is possible", + id, + ); } }