cmd/geth: add db-command to inspect freezer index (#22633)
This PR makes it easier to inspect the freezer index, which could be useful to investigate things like #22111
This commit is contained in:
committed by
GitHub
parent
6c27d8f996
commit
271e5b7fc9
@ -118,7 +118,7 @@ func newFreezer(datadir string, namespace string, readonly bool) (*freezer, erro
|
||||
trigger: make(chan chan struct{}),
|
||||
quit: make(chan struct{}),
|
||||
}
|
||||
for name, disableSnappy := range freezerNoSnappy {
|
||||
for name, disableSnappy := range FreezerNoSnappy {
|
||||
table, err := newTable(datadir, name, readMeter, writeMeter, sizeGauge, disableSnappy)
|
||||
if err != nil {
|
||||
for _, table := range freezer.tables {
|
||||
|
@ -636,25 +636,24 @@ func (t *freezerTable) Sync() error {
|
||||
return t.head.Sync()
|
||||
}
|
||||
|
||||
// printIndex is a debug print utility function for testing
|
||||
func (t *freezerTable) printIndex() {
|
||||
// DumpIndex is a debug print utility function, mainly for testing. It can also
|
||||
// be used to analyse a live freezer table index.
|
||||
func (t *freezerTable) DumpIndex(start, stop int64) {
|
||||
buf := make([]byte, indexEntrySize)
|
||||
|
||||
fmt.Printf("|-----------------|\n")
|
||||
fmt.Printf("| fileno | offset |\n")
|
||||
fmt.Printf("|--------+--------|\n")
|
||||
fmt.Printf("| number | fileno | offset |\n")
|
||||
fmt.Printf("|--------|--------|--------|\n")
|
||||
|
||||
for i := uint64(0); ; i++ {
|
||||
for i := uint64(start); ; i++ {
|
||||
if _, err := t.index.ReadAt(buf, int64(i*indexEntrySize)); err != nil {
|
||||
break
|
||||
}
|
||||
var entry indexEntry
|
||||
entry.unmarshalBinary(buf)
|
||||
fmt.Printf("| %03d | %03d | \n", entry.filenum, entry.offset)
|
||||
if i > 100 {
|
||||
fmt.Printf(" ... \n")
|
||||
fmt.Printf("| %03d | %03d | %03d | \n", i, entry.filenum, entry.offset)
|
||||
if stop > 0 && i >= uint64(stop) {
|
||||
break
|
||||
}
|
||||
}
|
||||
fmt.Printf("|-----------------|\n")
|
||||
fmt.Printf("|--------------------------|\n")
|
||||
}
|
||||
|
@ -525,7 +525,7 @@ func TestOffset(t *testing.T) {
|
||||
|
||||
f.Append(4, getChunk(20, 0xbb))
|
||||
f.Append(5, getChunk(20, 0xaa))
|
||||
f.printIndex()
|
||||
f.DumpIndex(0, 100)
|
||||
f.Close()
|
||||
}
|
||||
// Now crop it.
|
||||
@ -572,7 +572,7 @@ func TestOffset(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
f.printIndex()
|
||||
f.DumpIndex(0, 100)
|
||||
// It should allow writing item 6
|
||||
f.Append(numDeleted+2, getChunk(20, 0x99))
|
||||
|
||||
|
@ -114,9 +114,9 @@ const (
|
||||
freezerDifficultyTable = "diffs"
|
||||
)
|
||||
|
||||
// freezerNoSnappy configures whether compression is disabled for the ancient-tables.
|
||||
// FreezerNoSnappy configures whether compression is disabled for the ancient-tables.
|
||||
// Hashes and difficulties don't compress well.
|
||||
var freezerNoSnappy = map[string]bool{
|
||||
var FreezerNoSnappy = map[string]bool{
|
||||
freezerHeaderTable: false,
|
||||
freezerHashTable: true,
|
||||
freezerBodiesTable: false,
|
||||
|
Reference in New Issue
Block a user