@@ -64,18 +64,18 @@ class FastSync(
64
64
}
65
65
66
66
def startWithState (syncState : SyncState ): Unit = {
67
- if (syncState.updatingTargetBlock ) {
68
- log.info(s " FastSync interrupted during targetBlock update, choosing new target block " )
67
+ if (syncState.updatingPivotBlock ) {
68
+ log.info(s " FastSync interrupted during pivot block update, choosing new pivot block " )
69
69
val syncingHandler = new SyncingHandler (syncState)
70
- val targetBlockSelector = context.actorOf(
70
+ val pivotBlockSelector = context.actorOf(
71
71
FastSyncPivotBlockSelector .props(etcPeerManager, peerEventBus, syncConfig, scheduler),
72
72
" pivot-block-selector"
73
73
)
74
- targetBlockSelector ! FastSyncPivotBlockSelector .ChoosePivotBlock
75
- context become syncingHandler.waitingForTargetBlockUpdate (ImportedLastBlock )
74
+ pivotBlockSelector ! FastSyncPivotBlockSelector .ChoosePivotBlock
75
+ context become syncingHandler.waitingForPivotBlockUpdate (ImportedLastBlock )
76
76
} else {
77
77
log.info(
78
- s " Starting block synchronization (fast mode), target block ${syncState.pivotBlock.number}, " +
78
+ s " Starting block synchronization (fast mode), pivot block ${syncState.pivotBlock.number}, " +
79
79
s " block to download to ${syncState.safeDownloadTarget}"
80
80
)
81
81
val syncingHandler = new SyncingHandler (syncState)
@@ -85,18 +85,18 @@ class FastSync(
85
85
}
86
86
87
87
def startFromScratch (): Unit = {
88
- val targetBlockSelector = context.actorOf(
88
+ val pivotBlockSelector = context.actorOf(
89
89
FastSyncPivotBlockSelector .props(etcPeerManager, peerEventBus, syncConfig, scheduler),
90
90
" pivot-block-selector"
91
91
)
92
- targetBlockSelector ! FastSyncPivotBlockSelector .ChoosePivotBlock
93
- context become waitingForTargetBlock
92
+ pivotBlockSelector ! FastSyncPivotBlockSelector .ChoosePivotBlock
93
+ context become waitingForPivotBlock
94
94
}
95
95
96
- def waitingForTargetBlock : Receive = handleCommonMessages orElse {
96
+ def waitingForPivotBlock : Receive = handleCommonMessages orElse {
97
97
case FastSyncPivotBlockSelector .Result (pivotBlockHeader) =>
98
98
if (pivotBlockHeader.number < 1 ) {
99
- log.info(" Unable to start block synchronization in fast mode: target block is less than 1" )
99
+ log.info(" Unable to start block synchronization in fast mode: pivot block is less than 1" )
100
100
appStateStorage.fastSyncDone().commit()
101
101
context become idle
102
102
syncController ! Done
@@ -188,16 +188,16 @@ class FastSync(
188
188
handleRequestFailure(assignedHandlers(ref), ref, " Unexpected error" )
189
189
}
190
190
191
- def waitingForTargetBlockUpdate (processState : FinalBlockProcessingResult ): Receive = handleCommonMessages orElse {
191
+ def waitingForPivotBlockUpdate (processState : FinalBlockProcessingResult ): Receive = handleCommonMessages orElse {
192
192
case FastSyncPivotBlockSelector .Result (pivotBlockHeader) =>
193
193
log.info(s " New pivot block with number ${pivotBlockHeader.number} received " )
194
194
if (pivotBlockHeader.number >= syncState.pivotBlock.number) {
195
195
updatePivotSyncState(processState, pivotBlockHeader)
196
- syncState = syncState.copy(updatingTargetBlock = false )
196
+ syncState = syncState.copy(updatingPivotBlock = false )
197
197
context become this .receive
198
198
processSyncing()
199
199
} else {
200
- syncState = syncState.copy(targetBlockUpdateFailures = syncState.targetBlockUpdateFailures + 1 )
200
+ syncState = syncState.copy(pivotBlockUpdateFailures = syncState.pivotBlockUpdateFailures + 1 )
201
201
scheduler.scheduleOnce(syncRetryInterval, self, UpdatePivotBlock (processState))
202
202
}
203
203
@@ -207,51 +207,51 @@ class FastSync(
207
207
}
208
208
209
209
private def updatePivotBlock (state : FinalBlockProcessingResult ): Unit = {
210
- syncState = syncState.copy(updatingTargetBlock = true )
211
- if (syncState.targetBlockUpdateFailures <= syncConfig.maximumTargetUpdateFailures) {
210
+ syncState = syncState.copy(updatingPivotBlock = true )
211
+ if (syncState.pivotBlockUpdateFailures <= syncConfig.maximumTargetUpdateFailures) {
212
212
if (assignedHandlers.nonEmpty) {
213
- log.info(s " Still waiting for some responses, rescheduling target block update " )
213
+ log.info(s " Still waiting for some responses, rescheduling pivot block update " )
214
214
scheduler.scheduleOnce(syncRetryInterval, self, UpdatePivotBlock (state))
215
215
} else {
216
216
log.info(" Asking for new pivot block" )
217
217
val pivotBlockSelector =
218
218
context.actorOf(FastSyncPivotBlockSelector .props(etcPeerManager, peerEventBus, syncConfig, scheduler))
219
219
pivotBlockSelector ! FastSyncPivotBlockSelector .ChoosePivotBlock
220
- context become waitingForTargetBlockUpdate (state)
220
+ context become waitingForPivotBlockUpdate (state)
221
221
}
222
222
} else {
223
- log.warning(s " Sync failure! Number of targetBlock Failures reached maximum. " )
223
+ log.warning(s " Sync failure! Number of pivot block update failures reached maximum. " )
224
224
sys.exit(1 )
225
225
}
226
226
}
227
227
228
- private def updatePivotSyncState (state : FinalBlockProcessingResult , targetBlockHeader : BlockHeader ): Unit =
228
+ private def updatePivotSyncState (state : FinalBlockProcessingResult , pivotBlockHeader : BlockHeader ): Unit =
229
229
state match {
230
- case ImportedLastBlock =>
231
- if (targetBlockHeader.number - syncState.pivotBlock.number <= syncConfig.maxTargetDifference) {
232
- log.info(s " Current target block is fresh enough, starting state download " )
233
- if (syncState.pivotBlock.stateRoot == ByteString (MerklePatriciaTrie .EmptyRootHash )) {
234
- syncState = syncState.copy(pendingMptNodes = Seq ())
235
- } else {
236
- syncState = syncState.copy(pendingMptNodes = Seq (StateMptNodeHash (syncState.pivotBlock.stateRoot)))
237
- }
230
+ case ImportedLastBlock
231
+ if pivotBlockHeader.number - syncState.pivotBlock.number <= syncConfig.maxTargetDifference =>
232
+ log.info(s " Current pivot block is fresh enough, starting state download " )
233
+ if (syncState.pivotBlock.stateRoot == ByteString (MerklePatriciaTrie .EmptyRootHash )) {
234
+ syncState = syncState.copy(pendingMptNodes = Seq ())
238
235
} else {
239
- syncState = syncState.updateTargetBlock(
240
- targetBlockHeader,
241
- syncConfig.fastSyncBlockValidationX,
242
- updateFailures = false
243
- )
244
- log.info(
245
- s " Changing target block to ${targetBlockHeader.number}, new safe target is ${syncState.safeDownloadTarget}"
246
- )
236
+ syncState = syncState.copy(pendingMptNodes = Seq (StateMptNodeHash (syncState.pivotBlock.stateRoot)))
247
237
}
248
238
249
239
case LastBlockValidationFailed =>
250
240
log.info(
251
- s " Changing target block after failure, to ${targetBlockHeader .number}, new safe target is ${syncState.safeDownloadTarget}"
241
+ s " Changing pivot block after failure, to ${pivotBlockHeader .number}, new safe target is ${syncState.safeDownloadTarget}"
252
242
)
253
243
syncState =
254
- syncState.updateTargetBlock(targetBlockHeader, syncConfig.fastSyncBlockValidationX, updateFailures = true )
244
+ syncState.updatePivotBlock(pivotBlockHeader, syncConfig.fastSyncBlockValidationX, updateFailures = true )
245
+
246
+ case _ =>
247
+ log.info(
248
+ s " Changing pivot block to ${pivotBlockHeader.number}, new safe target is ${syncState.safeDownloadTarget}"
249
+ )
250
+ syncState = syncState.updatePivotBlock(
251
+ pivotBlockHeader,
252
+ syncConfig.fastSyncBlockValidationX,
253
+ updateFailures = false
254
+ )
255
255
}
256
256
257
257
private def removeRequestHandler (handler : ActorRef ): Unit = {
@@ -277,7 +277,7 @@ class FastSync(
277
277
case Right (headerAndDif) =>
278
278
updateSyncState(headerAndDif._1, headerAndDif._2)
279
279
if (header.number == syncState.safeDownloadTarget) {
280
- ImportedTargetBlock
280
+ ImportedPivotBlock
281
281
} else {
282
282
processHeaders(peer, headers.tail)
283
283
}
@@ -360,7 +360,7 @@ class FastSync(
360
360
handleRewind(header, peer, syncConfig.fastSyncBlockValidationN)
361
361
case HeadersProcessingFinished =>
362
362
processSyncing()
363
- case ImportedTargetBlock =>
363
+ case ImportedPivotBlock =>
364
364
updatePivotBlock(ImportedLastBlock )
365
365
case ValidationFailed (header, peerToBlackList) =>
366
366
log.warning(s " validation fo header ${header.idTag} failed " )
@@ -622,7 +622,7 @@ class FastSync(
622
622
if (fullySynced) {
623
623
finish()
624
624
} else {
625
- if (anythingToDownload && ! syncState.updatingTargetBlock ) processDownloads()
625
+ if (anythingToDownload && ! syncState.updatingPivotBlock ) processDownloads()
626
626
else log.info(" No more items to request, waiting for {} responses" , assignedHandlers.size)
627
627
}
628
628
}
@@ -855,8 +855,8 @@ object FastSync {
855
855
totalNodesCount : Int = 0 ,
856
856
bestBlockHeaderNumber : BigInt = 0 ,
857
857
nextBlockToFullyValidate : BigInt = 1 ,
858
- targetBlockUpdateFailures : Int = 0 ,
859
- updatingTargetBlock : Boolean = false
858
+ pivotBlockUpdateFailures : Int = 0 ,
859
+ updatingPivotBlock : Boolean = false
860
860
) {
861
861
862
862
def enqueueBlockBodies (blockBodies : Seq [ByteString ]): SyncState =
@@ -897,11 +897,11 @@ object FastSync {
897
897
nextBlockToFullyValidate = (header.number - N ) max 1
898
898
)
899
899
900
- def updateTargetBlock ( newTarget : BlockHeader , numberOfSafeBlocks : BigInt , updateFailures : Boolean ): SyncState =
900
+ def updatePivotBlock ( newPivot : BlockHeader , numberOfSafeBlocks : BigInt , updateFailures : Boolean ): SyncState =
901
901
copy(
902
- pivotBlock = newTarget ,
903
- safeDownloadTarget = newTarget .number + numberOfSafeBlocks,
904
- targetBlockUpdateFailures = if (updateFailures) targetBlockUpdateFailures + 1 else targetBlockUpdateFailures
902
+ pivotBlock = newPivot ,
903
+ safeDownloadTarget = newPivot .number + numberOfSafeBlocks,
904
+ pivotBlockUpdateFailures = if (updateFailures) pivotBlockUpdateFailures + 1 else pivotBlockUpdateFailures
905
905
)
906
906
}
907
907
@@ -921,7 +921,7 @@ object FastSync {
921
921
case object HeadersProcessingFinished extends HeaderProcessingResult
922
922
case class ParentDifficultyNotFound (header : BlockHeader ) extends HeaderProcessingResult
923
923
case class ValidationFailed (header : BlockHeader , peer : Peer ) extends HeaderProcessingResult
924
- case object ImportedTargetBlock extends HeaderProcessingResult
924
+ case object ImportedPivotBlock extends HeaderProcessingResult
925
925
926
926
sealed abstract class FinalBlockProcessingResult
927
927
case object ImportedLastBlock extends FinalBlockProcessingResult
0 commit comments