Skip to content

Commit 323b72a

Browse files
author
Jaap van der Plas
committed
log block body validation errors
1 parent beb46af commit 323b72a

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

src/main/scala/io/iohk/ethereum/blockchain/sync/fast/SyncBlocksValidator.scala

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,37 @@
11
package io.iohk.ethereum.blockchain.sync.fast
22

3+
import akka.actor.ActorLogging
34
import akka.util.ByteString
45
import io.iohk.ethereum.consensus.validators.{BlockHeaderError, BlockHeaderValid, Validators}
56
import io.iohk.ethereum.consensus.validators.std.StdBlockValidator
67
import io.iohk.ethereum.consensus.validators.std.StdBlockValidator.BlockValid
78
import io.iohk.ethereum.domain.{BlockBody, BlockHeader, Blockchain}
89

9-
trait SyncBlocksValidator {
10+
trait SyncBlocksValidator { this: ActorLogging =>
1011

1112
import SyncBlocksValidator._
1213
import BlockBodyValidationResult._
1314

1415
def blockchain: Blockchain
1516
def validators: Validators
1617

17-
def validateBlocks(requestedHashes: Seq[ByteString], blockBodies: Seq[BlockBody]): BlockBodyValidationResult = {
18-
var result: BlockBodyValidationResult = Valid
18+
def validateBlocks(requestedHashes: Seq[ByteString], blockBodies: Seq[BlockBody]): BlockBodyValidationResult =
1919
(requestedHashes zip blockBodies)
2020
.map { case (hash, body) => (blockchain.getBlockHeaderByHash(hash), body) }
21-
.forall {
22-
case (Some(header), body) =>
23-
val validationResult: Either[StdBlockValidator.BlockError, BlockValid] =
24-
validators.blockValidator.validateHeaderAndBody(header, body)
25-
result = validationResult.fold(_ => Invalid, _ => Valid)
26-
validationResult.isRight
27-
case _ =>
28-
result = DbError
29-
false
21+
.foldLeft[BlockBodyValidationResult](Valid) {
22+
case (Valid, (Some(header), body)) =>
23+
validators.blockValidator
24+
.validateHeaderAndBody(header, body)
25+
.fold(
26+
{ error =>
27+
log.error(s"Block body validation failed with error $error")
28+
Invalid
29+
},
30+
_ => Valid
31+
)
32+
case (Valid, _) => DbError
33+
case (invalid, _) => invalid
3034
}
31-
result
32-
}
3335

3436
def validateHeaderOnly(blockHeader: BlockHeader): Either[BlockHeaderError, BlockHeaderValid] =
3537
validators.blockHeaderValidator.validateHeaderOnly(blockHeader)

0 commit comments

Comments
 (0)