mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-15 10:52:43 +00:00
Add randomization in sync retry batch peer selection (#5822)
* Add randomization in sync retry batch peer selection * Use min * Apply suggestions from code review Co-authored-by: João Oliveira <hello@jxs.pt> * Merge branch 'unstable' into peer-prio
This commit is contained in:
@@ -919,24 +919,22 @@ impl<T: BeaconChainTypes> BackFillSync<T> {
|
||||
// Find a peer to request the batch
|
||||
let failed_peers = batch.failed_peers();
|
||||
|
||||
let new_peer = {
|
||||
let mut priorized_peers = self
|
||||
.network_globals
|
||||
.peers
|
||||
.read()
|
||||
.synced_peers()
|
||||
.map(|peer| {
|
||||
(
|
||||
failed_peers.contains(peer),
|
||||
self.active_requests.get(peer).map(|v| v.len()).unwrap_or(0),
|
||||
*peer,
|
||||
)
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
let new_peer = self
|
||||
.network_globals
|
||||
.peers
|
||||
.read()
|
||||
.synced_peers()
|
||||
.map(|peer| {
|
||||
(
|
||||
failed_peers.contains(peer),
|
||||
self.active_requests.get(peer).map(|v| v.len()).unwrap_or(0),
|
||||
rand::random::<u32>(),
|
||||
*peer,
|
||||
)
|
||||
})
|
||||
// Sort peers prioritizing unrelated peers with less active requests.
|
||||
priorized_peers.sort_unstable();
|
||||
priorized_peers.first().map(|&(_, _, peer)| peer)
|
||||
};
|
||||
.min()
|
||||
.map(|(_, _, _, peer)| peer);
|
||||
|
||||
if let Some(peer) = new_peer {
|
||||
self.participating_peers.insert(peer);
|
||||
|
||||
Reference in New Issue
Block a user