@@ -200,19 +200,17 @@ trait FastSync {
200
200
case SyncRequestHandler .Done =>
201
201
context unwatch sender()
202
202
assignedHandlers -= sender()
203
- requestedMptNodes = requestedMptNodes - sender()
204
- requestedNonMptNodes = requestedNonMptNodes - sender()
205
- requestedBlockBodies = requestedBlockBodies - sender()
206
- requestedReceipts = requestedReceipts - sender()
203
+ cleanupRequestedMaps(sender())
207
204
processSyncing()
208
205
209
206
case Terminated (ref) if assignedHandlers.contains(ref) =>
210
207
context unwatch ref
211
208
assignedHandlers -= ref
212
- requestedMptNodes = requestedMptNodes - ref
213
- requestedNonMptNodes = requestedNonMptNodes - ref
214
- requestedBlockBodies = requestedBlockBodies - ref
215
- requestedReceipts = requestedReceipts - ref
209
+ mptNodesQueue ++= requestedMptNodes.getOrElse(ref, Nil )
210
+ nonMptNodesQueue ++= requestedNonMptNodes.getOrElse(ref, Nil )
211
+ blockBodiesQueue ++= requestedBlockBodies.getOrElse(ref, Nil )
212
+ receiptsQueue ++= requestedReceipts.getOrElse(ref, Nil )
213
+ cleanupRequestedMaps(ref)
216
214
217
215
case PrintStatus =>
218
216
val totalNodesCount = downloadedNodesCount + mptNodesQueue.size + nonMptNodesQueue.size
@@ -222,6 +220,13 @@ trait FastSync {
222
220
|State: $downloadedNodesCount/ $totalNodesCount known nodes. """ .stripMargin.replace(" \n " , " " ))
223
221
}
224
222
223
+ private def cleanupRequestedMaps (handler : ActorRef ): Unit = {
224
+ requestedMptNodes = requestedMptNodes - handler
225
+ requestedNonMptNodes = requestedNonMptNodes - handler
226
+ requestedBlockBodies = requestedBlockBodies - handler
227
+ requestedReceipts = requestedReceipts - handler
228
+ }
229
+
225
230
private def insertBlocks (requestedHashes : Seq [ByteString ], blockBodies : Seq [BlockBody ]): Unit = {
226
231
// todo this is moved from FastSyncBlockBodiesRequestHandler.scala we should add block validation here
227
232
// load header from chain by hash and check consistency with BlockValidator.validateHeaderAndBody
0 commit comments