@@ -547,7 +547,9 @@ func (s *syncerV2) Sync(target *types.Header, cancel chan struct{}) error {
547547
548548 // Retrieve the previous sync status from DB. If there's no persisted
549549 // status, sync is either fresh or already complete.
550- s .loadSyncStatus ()
550+ if err := s .loadSyncStatus (); err != nil {
551+ return err
552+ }
551553
552554 // isPivotChanged is true when we have prior progress against a different
553555 // pivot. That means we need to roll forward via catchUp, or wipe and
@@ -572,7 +574,9 @@ func (s *syncerV2) Sync(target *types.Header, cancel chan struct{}) error {
572574 // right after the commit just needs to recommit.
573575 if prevPivot != nil && s .getPhase () == phaseComplete && isPivotCommitted (s .db , prevPivot ) {
574576 log .Warn ("Reenabled snap sync over a completed one, restarting from scratch" , "oldpivot" , prevPivot .Number , "target" , target .Number )
575- s .resetSyncState ()
577+ if err := s .resetSyncState (); err != nil {
578+ return err
579+ }
576580 prevPivot = nil
577581 isPivotChanged = false
578582 }
@@ -614,7 +618,9 @@ func (s *syncerV2) Sync(target *types.Header, cancel chan struct{}) error {
614618 // flushed snapshot data the journal doesn't cover.
615619 if err := s .pruneStaleState (); err != nil {
616620 log .Warn ("Persisted progress unusable, restarting snap sync from scratch" , "err" , err )
617- s .resetSyncState ()
621+ if err := s .resetSyncState (); err != nil {
622+ return err
623+ }
618624 }
619625 }
620626 } else {
@@ -624,20 +630,26 @@ func (s *syncerV2) Sync(target *types.Header, cancel chan struct{}) error {
624630 switch {
625631 case isPivotReorged (s .db , prevPivot , target ):
626632 log .Warn ("Restarting snap sync from scratch" , "oldnumber" , prevPivot .Number , "oldHash" , prevPivot .Hash ())
627- s .resetSyncState ()
633+ if err := s .resetSyncState (); err != nil {
634+ return err
635+ }
628636 case catchUpExceedsRetention (prevPivot , target ):
629637 // The pivot moved further than the BAL retention window. The access
630638 // lists required for catch-up are almost certainly unavailable from
631639 // peers, so discard the stale progress and resync from scratch
632640 // instead of starting a catch-up doomed to stall.
633641 log .Warn ("Catch-up gap exceeds BAL retention, restarting snap sync from scratch" , "oldnumber" , prevPivot .Number , "newnumber" , target .Number , "gap" , new (big.Int ).Sub (target .Number , prevPivot .Number ), "limit" , maxCatchUpBlocks )
634- s .resetSyncState ()
642+ if err := s .resetSyncState (); err != nil {
643+ return err
644+ }
635645 default :
636646 // An unclean shutdown may have left flushed snapshot data the journal
637647 // doesn't cover.
638648 if err := s .pruneStaleState (); err != nil {
639649 log .Warn ("Persisted progress unusable, restarting snap sync from scratch" , "err" , err )
640- s .resetSyncState ()
650+ if err := s .resetSyncState (); err != nil {
651+ return err
652+ }
641653 break
642654 }
643655 // A canonical pivot move past a frozen pivot should be impossible:
@@ -1209,7 +1221,7 @@ func (s *syncerV2) processAccessListResponse(res *accessListResponse, headers ma
12091221// or generates a fresh one if none is available. The persisted blob is framed
12101222// as `[version byte | JSON payload]`; a missing or mismatching version byte
12111223// causes the progress to be discarded and sync to start fresh.
1212- func (s * syncerV2 ) loadSyncStatus () {
1224+ func (s * syncerV2 ) loadSyncStatus () error {
12131225 var progress syncProgressV2
12141226
12151227 if raw := rawdb .ReadSnapshotSyncStatus (s .db ); len (raw ) > 0 {
@@ -1246,11 +1258,11 @@ func (s *syncerV2) loadSyncStatus() {
12461258 // eth_syncing reports real stats during catch-up and trie generation
12471259 // after a resume, instead of the zero-valued initial snapshot.
12481260 s .refreshProgressLocked ()
1249- return
1261+ return nil
12501262 }
12511263 }
12521264 // Either we've failed to decode the previous state, or there was none.
1253- s .resetSyncState ()
1265+ return s .resetSyncState ()
12541266}
12551267
12561268// increaseKey increase the input key by one bit. Return nil if the entire
@@ -1379,14 +1391,14 @@ func (s *syncerV2) pruneStaleState() error {
13791391// resetSyncState wipes all persisted snap-sync data (sync status, account
13801392// and storage snapshots) and re-initializes in-memory state with a fresh
13811393// chunking of the account hash range.
1382- func (s * syncerV2 ) resetSyncState () {
1394+ func (s * syncerV2 ) resetSyncState () error {
13831395 batch := s .db .NewBatch ()
13841396 rawdb .DeleteSnapshotSyncStatus (batch )
13851397 deleteRange (batch , rawdb .SnapshotAccountPrefix )
13861398 deleteRange (batch , rawdb .SnapshotStoragePrefix )
13871399 s .resetTrienodes (batch )
13881400 if err := batch .Write (); err != nil {
1389- log . Crit ( "Failed to wipe snap sync state" , " err" , err )
1401+ return err
13901402 }
13911403
13921404 s .lock .Lock ()
@@ -1424,6 +1436,7 @@ func (s *syncerV2) resetSyncState() {
14241436 log .Debug ("Created account sync task" , "from" , next , "last" , last )
14251437 next = common .BigToHash (new (big.Int ).Add (last .Big (), common .Big1 ))
14261438 }
1439+ return nil
14271440}
14281441
14291442// saveSyncStatus marshals the remaining sync tasks into db.
0 commit comments