mirror of https://github.com/ethereum/go-ethereum
cmd, core, ethdb, node: move chain freezer one folder deeper (#25487)
* cmd, core, ethdb, node: create chain freezer in a sub folder * core/rawdb: remove unused code * core, ethdb, node: add AncientDatadir API back * cmd, core: extend freezer info dump for sub-ancient-store * core/rawdb: rework freezer inspector * core/rawdb: address comments from Peter * core/rawdb: fix build issuepull/25493/head
parent
f67e54c92f
commit
e44d6551c3
@ -0,0 +1,86 @@ |
|||||||
|
// Copyright 2022 The go-ethereum Authors
|
||||||
|
// This file is part of the go-ethereum library.
|
||||||
|
//
|
||||||
|
// The go-ethereum library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The go-ethereum library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
package rawdb |
||||||
|
|
||||||
|
import "fmt" |
||||||
|
|
||||||
|
// The list of table names of chain freezer.
|
||||||
|
const ( |
||||||
|
// chainFreezerHeaderTable indicates the name of the freezer header table.
|
||||||
|
chainFreezerHeaderTable = "headers" |
||||||
|
|
||||||
|
// chainFreezerHashTable indicates the name of the freezer canonical hash table.
|
||||||
|
chainFreezerHashTable = "hashes" |
||||||
|
|
||||||
|
// chainFreezerBodiesTable indicates the name of the freezer block body table.
|
||||||
|
chainFreezerBodiesTable = "bodies" |
||||||
|
|
||||||
|
// chainFreezerReceiptTable indicates the name of the freezer receipts table.
|
||||||
|
chainFreezerReceiptTable = "receipts" |
||||||
|
|
||||||
|
// chainFreezerDifficultyTable indicates the name of the freezer total difficulty table.
|
||||||
|
chainFreezerDifficultyTable = "diffs" |
||||||
|
) |
||||||
|
|
||||||
|
// chainFreezerNoSnappy configures whether compression is disabled for the ancient-tables.
|
||||||
|
// Hashes and difficulties don't compress well.
|
||||||
|
var chainFreezerNoSnappy = map[string]bool{ |
||||||
|
chainFreezerHeaderTable: false, |
||||||
|
chainFreezerHashTable: true, |
||||||
|
chainFreezerBodiesTable: false, |
||||||
|
chainFreezerReceiptTable: false, |
||||||
|
chainFreezerDifficultyTable: true, |
||||||
|
} |
||||||
|
|
||||||
|
// The list of identifiers of ancient stores.
|
||||||
|
var ( |
||||||
|
chainFreezerName = "chain" // the folder name of chain segment ancient store.
|
||||||
|
) |
||||||
|
|
||||||
|
// freezers the collections of all builtin freezers.
|
||||||
|
var freezers = []string{chainFreezerName} |
||||||
|
|
||||||
|
// InspectFreezerTable dumps out the index of a specific freezer table. The passed
|
||||||
|
// ancient indicates the path of root ancient directory where the chain freezer can
|
||||||
|
// be opened. Start and end specify the range for dumping out indexes.
|
||||||
|
// Note this function can only be used for debugging purposes.
|
||||||
|
func InspectFreezerTable(ancient string, freezerName string, tableName string, start, end int64) error { |
||||||
|
var ( |
||||||
|
path string |
||||||
|
tables map[string]bool |
||||||
|
) |
||||||
|
switch freezerName { |
||||||
|
case chainFreezerName: |
||||||
|
path, tables = resolveChainFreezerDir(ancient), chainFreezerNoSnappy |
||||||
|
default: |
||||||
|
return fmt.Errorf("unknown freezer, supported ones: %v", freezers) |
||||||
|
} |
||||||
|
noSnappy, exist := tables[tableName] |
||||||
|
if !exist { |
||||||
|
var names []string |
||||||
|
for name := range tables { |
||||||
|
names = append(names, name) |
||||||
|
} |
||||||
|
return fmt.Errorf("unknown table, supported ones: %v", names) |
||||||
|
} |
||||||
|
table, err := newFreezerTable(path, tableName, noSnappy, true) |
||||||
|
if err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
table.dumpIndexStdout(start, end) |
||||||
|
return nil |
||||||
|
} |
Loading…
Reference in new issue