From 83b88f5b7af6c2723daed890b4bafcbe0a1d14ad Mon Sep 17 00:00:00 2001 From: teor Date: Fri, 2 Apr 2021 12:50:17 +1000 Subject: [PATCH] Merge pull request #1972 from ZcashFoundation/peer-set-demand-deadlock-doc Document peer set deadlock resistance --- zebra-network/src/peer_set/set.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/zebra-network/src/peer_set/set.rs b/zebra-network/src/peer_set/set.rs index 95d2b57cc..8413635bd 100644 --- a/zebra-network/src/peer_set/set.rs +++ b/zebra-network/src/peer_set/set.rs @@ -462,8 +462,14 @@ where self.update_metrics(); if self.preselected_p2c_index.is_none() { + // CORRECTNESS + // + // If the channel is full, drop the demand signal rather than waiting. + // If we waited here, the crawler could deadlock sending a request to + // fetch more peers, because it also empties the channel. trace!("no ready services, sending demand signal"); let _ = self.demand_signal.try_send(()); + // CORRECTNESS // // The current task must be scheduled for wakeup every time we