Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion core/rawdb/ancient_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (

"github.com/ava-labs/libevm/common"
"github.com/ava-labs/libevm/ethdb"
"github.com/ava-labs/libevm/libevm/options"
)

type tableSize struct {
Expand Down Expand Up @@ -77,7 +78,10 @@ func inspect(name string, order map[string]bool, reader ethdb.AncientReader) (fr
}

// inspectFreezers inspects all freezers registered in the system.
func inspectFreezers(db ethdb.Database) ([]freezerInfo, error) {
func inspectFreezers(db ethdb.Database, opts ...InspectDatabaseOption) ([]freezerInfo, error) {
if options.As[inspectDatabaseConfig](opts...).skipFreezers {
return nil, nil
}
var infos []freezerInfo
for _, freezer := range freezers {
switch freezer {
Expand Down
2 changes: 1 addition & 1 deletion core/rawdb/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -604,7 +604,7 @@ func InspectDatabase(db ethdb.Database, keyPrefix, keyStart []byte, opts ...Insp
{"Light client", "Bloom trie nodes", bloomTrieNodes.Size(), bloomTrieNodes.Count()},
}
// Inspect all registered append-only file store then.
ancients, err := inspectFreezers(db)
ancients, err := inspectFreezers(db, opts...)
if err != nil {
return err
}
Expand Down
8 changes: 8 additions & 0 deletions core/rawdb/database.libevm.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ type inspectDatabaseConfig struct {
statRecorders []func([]byte, common.StorageSize) bool
isMetas []func([]byte) bool
statsTransformers []func([][]string) [][]string
skipFreezers bool
}

func (c inspectDatabaseConfig) recordStat(key []byte, size common.StorageSize) bool {
Expand Down Expand Up @@ -91,3 +92,10 @@ func WithDatabaseStatsTransformer(transform func(rows [][]string) [][]string) In
c.statsTransformers = append(c.statsTransformers, transform)
})
}

// WithSkipFreezers returns an option that causes for freezer inspection to be skipped.
func WithSkipFreezers() InspectDatabaseOption {
return newInspectOpt(func(c *inspectDatabaseConfig) {
c.skipFreezers = true
})
}
15 changes: 15 additions & 0 deletions core/rawdb/database.libevm_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ import (
"bytes"
"fmt"
"sort"
"testing"

"github.com/stretchr/testify/require"

"github.com/ava-labs/libevm/common"
// To ensure that all methods are available to importing packages, this test
Expand All @@ -28,6 +31,18 @@ import (
"github.com/ava-labs/libevm/ethdb"
)

func TestSkipFreezers(t *testing.T) {
require := require.New(t)
db := rawdb.NewMemoryDatabase()

var (
keyPrefix []byte
keyStart []byte
)

require.NoError(rawdb.InspectDatabase(db, keyPrefix, keyStart, rawdb.WithSkipFreezers()))
}

// ExampleDatabaseStat demonstrates the method signatures of DatabaseStat, which
// exposes an otherwise unexported type that won't have its methods documented.
func ExampleDatabaseStat() {
Expand Down
Loading