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

This commit is contained in:
rjl493456442 2024-05-28 20:41:11 +08:00 committed by GitHub
parent 61932e4710
commit b88051ec83
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 13 additions and 8 deletions

@ -33,6 +33,7 @@ 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 {
readOnly bool
freezer *Freezer freezer *Freezer
opener freezerOpenFunc opener freezerOpenFunc
datadir string datadir string
@ -60,6 +61,7 @@ func newResettableFreezer(datadir string, namespace string, readonly bool, maxTa
return nil, err return nil, err
} }
return &resettableFreezer{ return &resettableFreezer{
readOnly: readonly,
freezer: freezer, freezer: freezer,
opener: opener, opener: opener,
datadir: datadir, datadir: datadir,
@ -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)
} }