From 06721128f12e00716f56fc9dd5f1ad9dc0ce77f3 Mon Sep 17 00:00:00 2001 From: Max Inden Date: Wed, 13 May 2020 16:47:02 +0200 Subject: [PATCH] protocols/kad: Remove unnecessary PeerId conversion for fixed iter (#1573) `FixedPeersIter` requires the initial set of peers to be passed as `PeerId`s and not as `Key`s. This commit removes the unnecessary conversion. --- protocols/kad/src/behaviour.rs | 8 +++----- protocols/kad/src/query.rs | 4 +--- protocols/kad/src/query/peers/fixed.rs | 7 ++++++- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/protocols/kad/src/behaviour.rs b/protocols/kad/src/behaviour.rs index d243aff3..4401309e 100644 --- a/protocols/kad/src/behaviour.rs +++ b/protocols/kad/src/behaviour.rs @@ -761,7 +761,6 @@ where } QueryInfo::PrepareAddProvider { key, context } => { - let closest_peers = result.peers.map(kbucket::Key::from); let provider_id = params.local_peer_id().clone(); let external_addresses = params.external_addresses().collect(); let inner = QueryInner::new(QueryInfo::AddProvider { @@ -770,7 +769,7 @@ where external_addresses, context, }); - self.queries.add_fixed(closest_peers, inner); + self.queries.add_fixed(result.peers, inner); None } @@ -799,7 +798,7 @@ where let context = PutRecordContext::Cache; let info = QueryInfo::PutRecord { record, quorum, context, num_results: 0 }; let inner = QueryInner::new(info); - self.queries.add_fixed(iter::once(cache_key), inner); + self.queries.add_fixed(iter::once(cache_key.into_preimage()), inner); } Ok(GetRecordOk { records }) } else if records.is_empty() { @@ -814,10 +813,9 @@ where } QueryInfo::PreparePutRecord { record, quorum, context } => { - let closest_peers = result.peers.map(kbucket::Key::from); let info = QueryInfo::PutRecord { record, quorum, context, num_results: 0 }; let inner = QueryInner::new(info); - self.queries.add_fixed(closest_peers, inner); + self.queries.add_fixed(result.peers, inner); None } diff --git a/protocols/kad/src/query.rs b/protocols/kad/src/query.rs index f00879a1..71d95f0d 100644 --- a/protocols/kad/src/query.rs +++ b/protocols/kad/src/query.rs @@ -89,9 +89,8 @@ impl QueryPool { /// Adds a query to the pool that contacts a fixed set of peers. pub fn add_fixed(&mut self, peers: I, inner: TInner) -> QueryId where - I: IntoIterator> + I: IntoIterator { - let peers = peers.into_iter().map(|k| k.into_preimage()).collect::>(); let parallelism = self.config.replication_factor.get(); let peer_iter = QueryPeerIter::Fixed(FixedPeersIter::new(peers, parallelism)); self.add(peer_iter, inner) @@ -295,4 +294,3 @@ pub struct QueryResult { /// The successfully contacted peers. pub peers: TPeers } - diff --git a/protocols/kad/src/query/peers/fixed.rs b/protocols/kad/src/query/peers/fixed.rs index 8a48aea7..402a4c2b 100644 --- a/protocols/kad/src/query/peers/fixed.rs +++ b/protocols/kad/src/query/peers/fixed.rs @@ -57,7 +57,12 @@ enum PeerState { } impl FixedPeersIter { - pub fn new(peers: Vec, parallelism: usize) -> Self { + pub fn new(peers: I, parallelism: usize) -> Self + where + I: IntoIterator + { + let peers = peers.into_iter().collect::>(); + Self { parallelism, peers: FnvHashMap::default(),