@@ -5,7 +5,7 @@ import scala.concurrent.ExecutionContext.Implicits.global
5
5
import akka .actor ._
6
6
import akka .util .ByteString
7
7
import io .iohk .ethereum .domain .BlockHeader
8
- import io .iohk .ethereum .network .{EtcPeerManagerActor , Peer }
8
+ import io .iohk .ethereum .network .{EtcPeerManagerActor , Peer , PeerActor }
9
9
import io .iohk .ethereum .network .PeerEventBusActor .PeerEvent .MessageFromPeer
10
10
import io .iohk .ethereum .network .PeerEventBusActor .{PeerSelector , Subscribe , Unsubscribe }
11
11
import io .iohk .ethereum .network .PeerEventBusActor .SubscriptionClassifier .MessageClassifier
@@ -20,7 +20,7 @@ trait FastSync {
20
20
import SyncController ._
21
21
22
22
def startFastSync (): Unit = {
23
- log.info(" Starting fast sync " )
23
+ log.info(" Trying to start block synchronization ( fast mode) " )
24
24
fastSyncStateStorage.getSyncState() match {
25
25
case Some (syncState) => startFastSync(syncState)
26
26
case None => startFastSyncFromScratch()
@@ -44,11 +44,12 @@ trait FastSync {
44
44
peerEventBus ! Subscribe (MessageClassifier (Set (BlockHeaders .code), PeerSelector .WithId (peer.id)))
45
45
etcPeerManager ! EtcPeerManagerActor .SendMessage (GetBlockHeaders (Right (status.bestHash), 1 , 0 , reverse = false ), peer.id)
46
46
}
47
- log.info (" Asking {} peers for block headers" , peersUsedToChooseTarget.size)
47
+ log.debug (" Asking {} peers for block headers" , peersUsedToChooseTarget.size)
48
48
val timeout = scheduler.scheduleOnce(peerResponseTimeout, self, BlockHeadersTimeout )
49
49
context become waitingForBlockHeaders(peersUsedToChooseTarget.keySet, Map .empty, timeout)
50
50
} else {
51
- log.warning(" Cannot start fast sync, not enough peers to download from. Scheduling retry in {}" , startRetryInterval)
51
+ log.info(" Block synchronization (fast mode) not started. Need at least {} peers, but there are only {} available at the moment. Retrying in {}" ,
52
+ minPeersToChooseTargetBlock, peersUsedToChooseTarget.size, startRetryInterval)
52
53
scheduleStartRetry(startRetryInterval)
53
54
context become startingFastSync
54
55
}
@@ -87,18 +88,18 @@ trait FastSync {
87
88
}
88
89
89
90
private def tryStartFastSync (receivedHeaders : Map [Peer , BlockHeader ]): Unit = {
90
- log.info (" Trying to start fast sync. Received {} block headers" , receivedHeaders.size)
91
+ log.debug (" Trying to start fast sync. Received {} block headers" , receivedHeaders.size)
91
92
if (receivedHeaders.size >= minPeersToChooseTargetBlock) {
92
93
val (mostUpToDatePeer, mostUpToDateBlockHeader) = receivedHeaders.maxBy(_._2.number)
93
94
val targetBlock = mostUpToDateBlockHeader.number - targetBlockOffset
94
95
95
96
if (targetBlock < 1 ) {
96
- log.info (" Target block is less than 1, starting regular sync" )
97
+ log.debug (" Target block is less than 1, starting regular sync" )
97
98
appStateStorage.fastSyncDone()
98
99
context become idle
99
100
self ! FastSyncDone
100
101
} else {
101
- log.info (" Starting fast sync. Asking peer {} for target block header ({})" , mostUpToDatePeer.id, targetBlock)
102
+ log.debug (" Starting fast sync. Asking peer {} for target block header ({})" , mostUpToDatePeer.id, targetBlock)
102
103
103
104
peerEventBus ! Subscribe (MessageClassifier (Set (BlockHeaders .code), PeerSelector .WithId (mostUpToDatePeer.id)))
104
105
etcPeerManager ! EtcPeerManagerActor .SendMessage (GetBlockHeaders (Left (targetBlock), 1 , 0 , reverse = false ), mostUpToDatePeer.id)
@@ -107,7 +108,8 @@ trait FastSync {
107
108
}
108
109
109
110
} else {
110
- log.info(" Did not receive enough status block headers to start fast sync. Retry in {}" , startRetryInterval)
111
+ log.info(" Block synchronization (fast mode) not started. Need to receive block headers from at least {} peers, but received only from {}. Retrying in {}" ,
112
+ minPeersToChooseTargetBlock, receivedHeaders.size, startRetryInterval)
111
113
scheduleStartRetry(startRetryInterval)
112
114
context become startingFastSync
113
115
}
@@ -123,19 +125,21 @@ trait FastSync {
123
125
val targetBlockHeaderOpt = blockHeaders.headers.find(header => header.number == targetBlockNumber)
124
126
targetBlockHeaderOpt match {
125
127
case Some (targetBlockHeader) =>
126
- log.info(" Received target block from peer, starting fast sync " )
128
+ log.info(" Starting block synchronization ( fast mode) " )
127
129
val initialSyncState = SyncState (targetBlockHeader,
128
130
mptNodesQueue = Seq (StateMptNodeHash (targetBlockHeader.stateRoot)))
129
131
startFastSync(initialSyncState)
130
132
131
133
case None =>
132
- blacklist(peer.id, blacklistDuration,s " did not respond with target block header, blacklisting and scheduling retry in $startRetryInterval" )
134
+ blacklist(peer.id, blacklistDuration, s " did not respond with target block header, blacklisting and scheduling retry in $startRetryInterval" )
135
+ log.info(" Block synchronization (fast mode) not started. Target block header not received. Retrying in {}" , startRetryInterval)
133
136
scheduleStartRetry(startRetryInterval)
134
137
context become startingFastSync
135
138
}
136
139
137
140
case TargetBlockTimeout =>
138
141
blacklist(peer.id, blacklistDuration, s " did not respond with target block header (timeout), blacklisting and scheduling retry in $startRetryInterval" )
142
+ log.info(" Block synchronization (fast mode) not started. Target block header receive timeout. Retrying in {}" , startRetryInterval)
139
143
peerEventBus ! Unsubscribe (MessageClassifier (Set (BlockHeaders .code), PeerSelector .WithId (peer.id)))
140
144
scheduleStartRetry(startRetryInterval)
141
145
context become startingFastSync
@@ -288,12 +292,12 @@ trait FastSync {
288
292
finishFastSync()
289
293
} else {
290
294
if (anythingToDownload) processDownloads()
291
- else log.info (" No more items to request, waiting for {} responses" , assignedHandlers.size)
295
+ else log.debug (" No more items to request, waiting for {} responses" , assignedHandlers.size)
292
296
}
293
297
}
294
298
295
299
def finishFastSync (): Unit = {
296
- log.info(" Fast sync finished" )
300
+ log.info(" Block synchronization in fast mode finished, switching to regular mode " )
297
301
cleanup()
298
302
appStateStorage.fastSyncDone()
299
303
context become idle
@@ -310,9 +314,9 @@ trait FastSync {
310
314
def processDownloads (): Unit = {
311
315
if (unassignedPeers.isEmpty) {
312
316
if (assignedHandlers.nonEmpty) {
313
- log.warning (" There are no available peers, waiting for responses" )
317
+ log.debug (" There are no available peers, waiting for responses" )
314
318
} else {
315
- log.warning (" There are no peers to download from, scheduling a retry in {}" , syncRetryInterval)
319
+ log.debug (" There are no peers to download from, scheduling a retry in {}" , syncRetryInterval)
316
320
scheduler.scheduleOnce(syncRetryInterval, self, ProcessSyncing )
317
321
}
318
322
} else {
0 commit comments