Skip to content

Commit c10ac4f

Browse files
authored
Revert "core/state/snapshot: tiny fixes" (#30039)
Revert "core/state/snapshot: tiny fixes (#29995)" This reverts commit e0e45db.
1 parent e0e45db commit c10ac4f

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

core/state/snapshot/generate.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -631,10 +631,16 @@ func generateAccounts(ctx *generatorContext, dl *diskLayer, accMarker []byte) er
631631
accMarker = nil
632632
return nil
633633
}
634+
// Always reset the initial account range as 1 whenever recover from the
635+
// interruption. TODO(rjl493456442) can we remove it?
636+
var accountRange = accountCheckRange
637+
if len(accMarker) > 0 {
638+
accountRange = 1
639+
}
634640
origin := common.CopyBytes(accMarker)
635641
for {
636642
id := trie.StateTrieID(dl.root)
637-
exhausted, last, err := dl.generateRange(ctx, id, rawdb.SnapshotAccountPrefix, snapAccount, origin, accountCheckRange, onAccount, types.FullAccountRLP)
643+
exhausted, last, err := dl.generateRange(ctx, id, rawdb.SnapshotAccountPrefix, snapAccount, origin, accountRange, onAccount, types.FullAccountRLP)
638644
if err != nil {
639645
return err // The procedure it aborted, either by external signal or internal error.
640646
}
@@ -646,6 +652,7 @@ func generateAccounts(ctx *generatorContext, dl *diskLayer, accMarker []byte) er
646652
ctx.removeStorageLeft()
647653
break
648654
}
655+
accountRange = accountCheckRange
649656
}
650657
return nil
651658
}

core/state/snapshot/snapshot.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,14 @@ func (t *Tree) Disable() {
258258
for _, layer := range t.layers {
259259
switch layer := layer.(type) {
260260
case *diskLayer:
261+
262+
layer.lock.RLock()
263+
generating := layer.genMarker != nil
264+
layer.lock.RUnlock()
265+
if !generating {
266+
// Generator is already aborted or finished
267+
break
268+
}
261269
// If the base layer is generating, abort it
262270
if layer.genAbort != nil {
263271
abort := make(chan *generatorStats)
@@ -268,7 +276,6 @@ func (t *Tree) Disable() {
268276
layer.lock.Lock()
269277
layer.stale = true
270278
layer.lock.Unlock()
271-
layer.Release()
272279

273280
case *diffLayer:
274281
// If the layer is a simple diff, simply mark as stale
@@ -733,7 +740,6 @@ func (t *Tree) Rebuild(root common.Hash) {
733740
layer.lock.Lock()
734741
layer.stale = true
735742
layer.lock.Unlock()
736-
layer.Release()
737743

738744
case *diffLayer:
739745
// If the layer is a simple diff, simply mark as stale

0 commit comments

Comments
 (0)