Skip to content

Commit 814ed23

Browse files
committed
refactoring
1 parent 8d16f2c commit 814ed23

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

src/main/scala/io/iohk/ethereum/blockchain/sync/FastSync.scala

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ trait FastSync {
171171

172172
syncStateStorageActor ! fastSyncStateStorage
173173

174-
private var blockChainOnlyPeers = Set.empty[Peer]
174+
private var blockChainOnlyPeers = Seq.empty[Peer]
175175

176176
private val syncStatePersistCancellable = scheduler.schedule(persistStateSnapshotInterval, persistStateSnapshotInterval, self, PersistSyncState)
177177
private val heartBeat = scheduler.schedule(syncRetryInterval, syncRetryInterval * 2, self, ProcessSyncing)
@@ -237,9 +237,10 @@ trait FastSync {
237237
bestBlockHeaderNumber)
238238
}
239239

240-
private def handleFailingMptPeers: Receive ={
241-
case BlockChainOnlyDownload(peer) =>
242-
blockChainOnlyPeers = (blockChainOnlyPeers + peer).take(blockChainOnlyPeersPoolSize)
240+
private def handleFailingMptPeers: Receive = {
241+
case MarkPeerBlockchainOnly(peer) => if (!blockChainOnlyPeers.contains(peer)) {
242+
blockChainOnlyPeers = peer +: blockChainOnlyPeers.dropRight(1)
243+
}
243244
}
244245

245246
private def printStatus() = {
@@ -312,7 +313,7 @@ trait FastSync {
312313
cleanup()
313314
appStateStorage.fastSyncDone()
314315
context become idle
315-
blockChainOnlyPeers = Set.empty
316+
blockChainOnlyPeers = Seq.empty
316317
self ! FastSyncDone
317318
}
318319

@@ -333,12 +334,13 @@ trait FastSync {
333334
}
334335
} else {
335336
val peers = unassignedPeers
336-
(peers -- blockChainOnlyPeers)
337+
val blockChainPeers = blockChainOnlyPeers.toSet
338+
(peers -- blockChainPeers)
337339
.take(maxConcurrentRequests - assignedHandlers.size)
338340
.toSeq.sortBy(_.ref.toString())
339341
.foreach(assignWork)
340342
peers
341-
.intersect(blockChainOnlyPeers)
343+
.intersect(blockChainPeers)
342344
.take(maxConcurrentRequests - assignedHandlers.size)
343345
.toSeq.sortBy(_.ref.toString())
344346
.foreach(assignBlockChainWork)
@@ -453,7 +455,7 @@ object FastSync {
453455

454456
private case object ProcessSyncing
455457
private case object PersistSyncState
456-
case class BlockChainOnlyDownload(peer: Peer)
458+
case class MarkPeerBlockchainOnly(peer: Peer)
457459

458460
case class SyncState(
459461
targetBlock: BlockHeader,

src/main/scala/io/iohk/ethereum/blockchain/sync/FastSyncNodesRequestHandler.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class FastSyncNodesRequestHandler(
2525
override def handleResponseMsg(nodeData: NodeData): Unit = {
2626
if (nodeData.values.isEmpty) {
2727
log.debug(s"got empty mpt node response for known hashes switching to blockchain only: ${requestedHashes.map(h => Hex.toHexString(h.v.toArray[Byte]))}")
28-
syncController ! BlockChainOnlyDownload(peer)
28+
syncController ! MarkPeerBlockchainOnly(peer)
2929
}
3030

3131
val receivedHashes = nodeData.values.map(v => ByteString(kec256(v.toArray[Byte])))

0 commit comments

Comments
 (0)