Skip to content

Commit 83a02a0

Browse files
committed
refactoring
1 parent cb10fc8 commit 83a02a0

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed

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

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -198,16 +198,7 @@ trait FastSync {
198198
downloadedNodesCount += num
199199

200200
case BlockBodiesReceived(peer, requestedHashes, blockBodies) =>
201-
validateBlocks(requestedHashes, blockBodies) match{
202-
case Valid =>
203-
insertBlocks(requestedHashes, blockBodies)
204-
case Invalid =>
205-
blacklist(peer.id, blacklistDuration, s"responded with block bodies not matching block headers, blacklisting for $blacklistDuration")
206-
self ! FastSync.EnqueueBlockBodies(requestedHashes)
207-
case DbError =>
208-
log.debug("missing block header for known hash")
209-
self ! ProcessSyncing
210-
}
201+
handleBlockBodies(peer, requestedHashes, blockBodies)
211202

212203
case BlockHeadersReceived(_, headers) =>
213204
insertHeaders(headers)
@@ -231,6 +222,22 @@ trait FastSync {
231222
persistSyncState()
232223
}
233224

225+
private def handleBlockBodies(peer: Peer, requestedHashes: Seq[ByteString], blockBodies: Seq[BlockBody]) = {
226+
validateBlocks(requestedHashes, blockBodies) match {
227+
case Valid =>
228+
insertBlocks(requestedHashes, blockBodies)
229+
case Invalid =>
230+
blacklist(peer.id, blacklistDuration, s"responded with block bodies not matching block headers, blacklisting for $blacklistDuration")
231+
self ! FastSync.EnqueueBlockBodies(requestedHashes)
232+
case DbError =>
233+
blockBodiesQueue = Seq.empty
234+
receiptsQueue = Seq.empty
235+
bestBlockHeaderNumber = bestBlockHeaderNumber - 2 * blockHeadersPerRequest
236+
log.debug("missing block header for known hash")
237+
self ! ProcessSyncing
238+
}
239+
}
240+
234241
private def handleActorTerminate(ref: ActorRef) = {
235242
context unwatch ref
236243
assignedHandlers -= ref
@@ -281,8 +288,8 @@ trait FastSync {
281288
requestedReceipts = requestedReceipts - handler
282289
}
283290

284-
private def validateBlocks(requestedHashes: Seq[ByteString], blockBodies: Seq[BlockBody]): ValidationResult = {
285-
var result: ValidationResult = Valid
291+
private def validateBlocks(requestedHashes: Seq[ByteString], blockBodies: Seq[BlockBody]): BlockBodyValidationResult = {
292+
var result: BlockBodyValidationResult = Valid
286293
(requestedHashes zip blockBodies)
287294
.map { case (hash, body) => (blockchain.getBlockHeaderByHash(hash), body) }
288295
.forall {
@@ -291,9 +298,6 @@ trait FastSync {
291298
result = validationResult.fold(_ => Invalid, _ => Valid)
292299
validationResult.isRight
293300
case _ =>
294-
blockBodiesQueue = Seq.empty
295-
receiptsQueue = Seq.empty
296-
bestBlockHeaderNumber = bestBlockHeaderNumber - 2 * blockHeadersPerRequest
297301
result = DbError
298302
false
299303
}
@@ -488,10 +492,10 @@ object FastSync {
488492
private case object PersistSyncState
489493
case class MarkPeerBlockchainOnly(peer: Peer)
490494

491-
private sealed trait ValidationResult
492-
private case object Valid extends ValidationResult
493-
private case object Invalid extends ValidationResult
494-
private case object DbError extends ValidationResult
495+
private sealed trait BlockBodyValidationResult
496+
private case object Valid extends BlockBodyValidationResult
497+
private case object Invalid extends BlockBodyValidationResult
498+
private case object DbError extends BlockBodyValidationResult
495499

496500
case class SyncState(
497501
targetBlock: BlockHeader,

0 commit comments

Comments
 (0)