From ae2441a9f9d335d3c918376f6a0fe555fbad95ab Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Thu, 16 Feb 2023 21:45:32 +0100 Subject: [PATCH] perf(disc): evict after processing incoming packets (#1400) --- crates/net/discv4/src/lib.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/crates/net/discv4/src/lib.rs b/crates/net/discv4/src/lib.rs index 7bb9cb8b99..1f9f474a8a 100644 --- a/crates/net/discv4/src/lib.rs +++ b/crates/net/discv4/src/lib.rs @@ -1256,6 +1256,8 @@ impl Discv4Service { true }); + debug!(target: "discv4", num=%failed_neighbours.len(), "processing failed neighbours"); + for node_id in failed_neighbours { let key = kad_key(node_id); let failures = match self.kbuckets.entry(&key) { @@ -1369,11 +1371,6 @@ impl Discv4Service { self.lookup_with(target, None); } - // evict expired nodes - if self.evict_expired_requests_interval.poll_tick(cx).is_ready() { - self.evict_expired_requests(Instant::now()) - } - // re-ping some peers if self.ping_interval.poll_tick(cx).is_ready() { self.re_ping_oldest(); @@ -1486,6 +1483,11 @@ impl Discv4Service { // try resending buffered pings self.ping_buffered(); + // evict expired nodes + if self.evict_expired_requests_interval.poll_tick(cx).is_ready() { + self.evict_expired_requests(Instant::now()) + } + if self.queued_events.is_empty() { return Poll::Pending }