@@ -47,16 +47,14 @@ class BlockFetcher(
4747 peerEventBus ! Unsubscribe ()
4848 }
4949
50- private def idle (): Receive = handleCommonMessages(None ) orElse {
51- case Start (importer, blockNr) =>
52- BlockFetcherState .initial(importer, blockNr) |> fetchBlocks
53- peerEventBus ! Subscribe (MessageClassifier (Set (NewBlock .code, NewBlockHashes .code), PeerSelector .AllPeers ))
50+ private def idle (): Receive = handleCommonMessages(None ) orElse { case Start (importer, blockNr) =>
51+ BlockFetcherState .initial(importer, blockNr) |> fetchBlocks
52+ peerEventBus ! Subscribe (MessageClassifier (Set (NewBlock .code, NewBlockHashes .code), PeerSelector .AllPeers ))
5453 }
5554
56- def handleCommonMessages (state : Option [BlockFetcherState ]): Receive = {
57- case PrintStatus =>
58- log.info(" {}" , state.map(_.status))
59- log.debug(" {}" , state.map(_.statusDetailed))
55+ def handleCommonMessages (state : Option [BlockFetcherState ]): Receive = { case PrintStatus =>
56+ log.info(" {}" , state.map(_.status))
57+ log.debug(" {}" , state.map(_.statusDetailed))
6058 }
6159
6260 private def started (state : BlockFetcherState ): Receive =
@@ -83,9 +81,8 @@ class BlockFetcher(
8381 fetchBlocks(newState)
8482 case InvalidateBlocksFrom (blockNr, reason, withBlacklist) =>
8583 val (blockProvider, newState) = state.invalidateBlocksFrom(blockNr, withBlacklist)
86-
84+ log.debug( " Invalidate blocks from {} " , blockNr)
8785 blockProvider.foreach(peersClient ! BlacklistPeer (_, reason))
88-
8986 fetchBlocks(newState)
9087 }
9188
@@ -125,7 +122,8 @@ class BlockFetcher(
125122 .asRight[String ]
126123 .ensure(s " Empty response from peer $peer, blacklisting " )(_.nonEmpty)
127124 .ensure(" Fetched node state hash doesn't match requested one, blacklisting peer" )(nodes =>
128- fetcher.hash == kec256(nodes.head))
125+ fetcher.hash == kec256(nodes.head)
126+ )
129127
130128 validatedNode match {
131129 case Left (err) =>
@@ -141,6 +139,7 @@ class BlockFetcher(
141139
142140 private def handleNewBlockMessages (state : BlockFetcherState ): Receive = {
143141 case MessageFromPeer (NewBlockHashes (hashes), _) =>
142+ log.debug(" Received NewBlockHashes numbers {}" , hashes.map(_.number).mkString(" , " ))
144143 val newState = state.validatedHashes(hashes) match {
145144 case Left (_) => state
146145 case Right (validHashes) => state.withPossibleNewTopAt(validHashes.lastOption.map(_.number))
@@ -155,19 +154,23 @@ class BlockFetcher(
155154
156155 // we're on top, so we can pass block directly to importer
157156 if (newBlockNr == nextExpectedBlock && state.isOnTop) {
157+ log.debug(" Pass block directly to importer" )
158158 val newState = state.withPeerForBlocks(peerId, Seq (newBlockNr)).withKnownTopAt(newBlockNr)
159159 state.importer ! OnTop
160160 state.importer ! ImportNewBlock (block, peerId)
161161 context become started(newState)
162162 // there are some blocks waiting for import but it seems that we reached top on fetch side so we can enqueue new block for import
163163 } else if (newBlockNr == nextExpectedBlock && ! state.isFetching && state.waitingHeaders.isEmpty) {
164+ log.debug(" Enqueue new block for import" )
164165 val newState = state.appendNewBlock(block, peerId)
165166 context become started(newState)
166167 // waiting for some bodies but we don't have this header yet - at least we can use new block header
167168 } else if (newBlockNr == state.nextToLastBlock && ! state.isFetchingHeaders) {
169+ log.debug(" Waiting for bodies. Add only headers" )
168170 state.appendHeaders(List (block.header)) |> fetchBlocks
169171 // we're far from top
170172 } else if (newBlockNr > nextExpectedBlock) {
173+ log.debug(" Far from top" )
171174 val newState = state.withKnownTopAt(newBlockNr)
172175 fetchBlocks(newState)
173176 }
@@ -177,13 +180,13 @@ class BlockFetcher(
177180 fetchBlocks(newState)
178181 }
179182
180- private def handlePickedBlocks (state : BlockFetcherState )(
181- pickResult : Option [(NonEmptyList [Block ], BlockFetcherState )]): BlockFetcherState =
183+ private def handlePickedBlocks (
184+ state : BlockFetcherState
185+ )(pickResult : Option [(NonEmptyList [Block ], BlockFetcherState )]): BlockFetcherState =
182186 pickResult
183- .tap {
184- case (blocks, newState) =>
185- sender() ! PickedBlocks (blocks)
186- newState.importer ! (if (newState.isOnTop) OnTop else NotOnTop )
187+ .tap { case (blocks, newState) =>
188+ sender() ! PickedBlocks (blocks)
189+ newState.importer ! (if (newState.isOnTop) OnTop else NotOnTop )
187190 }
188191 .fold(state)(_._2)
189192
@@ -243,6 +246,7 @@ class BlockFetcher(
243246 makeRequest(Request .create(msg, BestPeer ), RetryHeadersRequest )
244247 .flatMap {
245248 case Response (_, BlockHeaders (headers)) if headers.isEmpty =>
249+ log.debug(" Empty BlockHeaders response. Retry in {}" , syncConfig.syncRetryInterval)
246250 Future .successful(RetryHeadersRequest ).delayedBy(syncConfig.syncRetryInterval)
247251 case res => Future .successful(res)
248252 }
0 commit comments