core/rawdb, triedb/pathdb: fix freezer read-only option (#29823)

pull/29768/head^2
rjl493456442 4 months ago committed by GitHub
parent 61932e4710
commit b88051ec83
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 19
      core/rawdb/freezer_resettable.go
  2. 2
      triedb/pathdb/database.go

@ -33,10 +33,11 @@ type freezerOpenFunc = func() (*Freezer, error)
// resettableFreezer is a wrapper of the freezer which makes the // resettableFreezer is a wrapper of the freezer which makes the
// freezer resettable. // freezer resettable.
type resettableFreezer struct { type resettableFreezer struct {
freezer *Freezer readOnly bool
opener freezerOpenFunc freezer *Freezer
datadir string opener freezerOpenFunc
lock sync.RWMutex datadir string
lock sync.RWMutex
} }
// newResettableFreezer creates a resettable freezer, note freezer is // newResettableFreezer creates a resettable freezer, note freezer is
@ -60,9 +61,10 @@ func newResettableFreezer(datadir string, namespace string, readonly bool, maxTa
return nil, err return nil, err
} }
return &resettableFreezer{ return &resettableFreezer{
freezer: freezer, readOnly: readonly,
opener: opener, freezer: freezer,
datadir: datadir, opener: opener,
datadir: datadir,
}, nil }, nil
} }
@ -74,6 +76,9 @@ func (f *resettableFreezer) Reset() error {
f.lock.Lock() f.lock.Lock()
defer f.lock.Unlock() defer f.lock.Unlock()
if f.readOnly {
return errReadOnly
}
if err := f.freezer.Close(); err != nil { if err := f.freezer.Close(); err != nil {
return err return err
} }

@ -190,7 +190,7 @@ func (db *Database) repairHistory() error {
// all of them. Fix the tests first. // all of them. Fix the tests first.
return nil return nil
} }
freezer, err := rawdb.NewStateFreezer(ancient, false) freezer, err := rawdb.NewStateFreezer(ancient, db.readOnly)
if err != nil { if err != nil {
log.Crit("Failed to open state history freezer", "err", err) log.Crit("Failed to open state history freezer", "err", err)
} }

Loading…
Cancel
Save