11package io .iohk .ethereum .blockchain .sync
22
3- import java .util .Collections .newSetFromMap
4-
53import akka .actor .Actor
64import akka .actor .ActorLogging
75import akka .actor .ActorRef
86import akka .actor .Cancellable
97import akka .actor .Props
108import akka .actor .Scheduler
119
12- import scala .collection .mutable
1310import scala .concurrent .ExecutionContext
14- import scala .jdk .CollectionConverters ._
1511import scala .reflect .ClassTag
1612
17- import io .iohk .ethereum .blockchain .PeerComparator
1813import io .iohk .ethereum .blockchain .sync .Blacklist .BlacklistReason
1914import io .iohk .ethereum .blockchain .sync .PeerListSupportNg .PeerWithInfo
2015import io .iohk .ethereum .network .EtcPeerManagerActor .PeerInfo
@@ -44,10 +39,6 @@ class PeersClient(
4439 val statusSchedule : Cancellable =
4540 scheduler.scheduleWithFixedDelay(syncConfig.printStatusInterval, syncConfig.printStatusInterval, self, PrintStatus )
4641
47- val numberOfPeersToFetchFrom = syncConfig.peersToFetchFrom
48-
49- val activeFetchingNodes : mutable.Set [PeerWithInfo ] = lruSet(numberOfPeersToFetchFrom)
50-
5142 def receive : Receive = running(Map ())
5243
5344 override def postStop (): Unit = {
@@ -104,8 +95,7 @@ class PeersClient(
10495
10596 private def selectPeer (peerSelector : PeerSelector ): Option [Peer ] =
10697 peerSelector match {
107- case BestPeer => bestPeer(peersToDownloadFrom)
108- case NextBestPeer => nextBestPeer(peersToDownloadFrom, activeFetchingNodes.toSet)
98+ case BestPeer => bestPeer(peersToDownloadFrom)
10999 }
110100
111101 private def responseClassTag [RequestMsg <: Message ](requestMsg : RequestMsg ): ClassTag [_ <: Message ] =
@@ -154,11 +144,6 @@ object PeersClient {
154144
155145 type Requesters = Map [ActorRef , ActorRef ]
156146
157- private def lruSet [A ](maxEntries : Int ): mutable.Set [A ] =
158- newSetFromMap[A ](new java.util.LinkedHashMap [A , java.lang.Boolean ]() {
159- override def removeEldestEntry (eldest : java.util.Map .Entry [A , java.lang.Boolean ]): Boolean = size > maxEntries
160- }).asScala
161-
162147 sealed trait PeersClientMessage
163148 case class BlacklistPeer (peerId : PeerId , reason : BlacklistReason ) extends PeersClientMessage
164149 case class Request [RequestMsg <: Message ](
@@ -192,7 +177,6 @@ object PeersClient {
192177
193178 sealed trait PeerSelector
194179 case object BestPeer extends PeerSelector
195- case object NextBestPeer extends PeerSelector
196180
197181 def bestPeer (peersToDownloadFrom : Map [PeerId , PeerWithInfo ]): Option [Peer ] = {
198182 val peersToUse = peersToDownloadFrom.values
@@ -207,26 +191,4 @@ object PeersClient {
207191 None
208192 }
209193 }
210-
211- // returns the next best peer after the one already returned previously
212- // TODO: whenever this method is called - do activeFetchingNodes.add(_) on the peer returned
213- def nextBestPeer (
214- peersToDownloadFrom : Map [PeerId , PeerWithInfo ],
215- activeFetchingNodes : Set [PeerWithInfo ]
216- ): Option [Peer ] = {
217- val peersToUse = peersToDownloadFrom.values
218- .collect { case PeerWithInfo (peer, peerInfo @ PeerInfo (_, _, true , _, _)) =>
219- (peer, peerInfo)
220- }
221-
222- val peer =
223- peersToUse
224- .filterNot { case (peer, _) => activeFetchingNodes.map(_.peer).contains(peer) }
225- .filterNot { case (_, peerInfo) =>
226- activeFetchingNodes.map(_.peerInfo).exists(PeerComparator .doPeersHaveSameBestBlock(peerInfo, _))
227- }
228- .maxByOption { case (_, peerInfo) => peerInfo.chainWeight }
229- .map { case (peer, _) => peer }
230- peer
231- }
232194}
0 commit comments