cmd/blockstore/yaml: accept --slots=all
Adds option to dump all slots
This commit is contained in:
parent
d7cd878bc9
commit
0773c47d05
|
@ -33,7 +33,13 @@ func init() {
|
||||||
Cmd.Run = run
|
Cmd.Run = run
|
||||||
}
|
}
|
||||||
|
|
||||||
func run(_ *cobra.Command, args []string) {
|
func run(c *cobra.Command, args []string) {
|
||||||
|
go func() {
|
||||||
|
// No need for clean shutdown, exit quickly
|
||||||
|
<-c.Context().Done()
|
||||||
|
os.Exit(0)
|
||||||
|
}()
|
||||||
|
|
||||||
rocksDB := args[0]
|
rocksDB := args[0]
|
||||||
|
|
||||||
printColumnFamilies(rocksDB)
|
printColumnFamilies(rocksDB)
|
||||||
|
@ -46,12 +52,16 @@ func run(_ *cobra.Command, args []string) {
|
||||||
|
|
||||||
printRoot(db)
|
printRoot(db)
|
||||||
|
|
||||||
slots, ok := util.ParseInts(*flagSlots)
|
if *flagSlots == "all" {
|
||||||
if !ok {
|
dumpAllSlots(db)
|
||||||
klog.Exitf("Invalid slots specifier: %s", *flagSlots)
|
} else {
|
||||||
}
|
slots, ok := util.ParseInts(*flagSlots)
|
||||||
if len(slots) > 0 {
|
if !ok {
|
||||||
dumpSlots(db, slots)
|
klog.Exitf("Invalid slots specifier: %s", *flagSlots)
|
||||||
|
}
|
||||||
|
if len(slots) > 0 {
|
||||||
|
dumpSlots(db, slots)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if klog.Stats.Error.Lines() > 0 {
|
if klog.Stats.Error.Lines() > 0 {
|
||||||
|
@ -81,6 +91,25 @@ func printRoot(db *blockstore.DB) {
|
||||||
fmt.Println("root:", root)
|
fmt.Println("root:", root)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func dumpAllSlots(db *blockstore.DB) {
|
||||||
|
iter := db.DB.NewIteratorCF(grocksdb.NewDefaultReadOptions(), db.CfMeta)
|
||||||
|
iter.SeekToFirst()
|
||||||
|
defer iter.Close()
|
||||||
|
hasHeader := false
|
||||||
|
for iter.Valid() {
|
||||||
|
if !hasHeader {
|
||||||
|
fmt.Println("slots:")
|
||||||
|
hasHeader = true
|
||||||
|
}
|
||||||
|
slot, ok := blockstore.ParseSlotKey(iter.Key().Data())
|
||||||
|
if !ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
dumpSlot(db, slot)
|
||||||
|
iter.Next()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func dumpSlots(db *blockstore.DB, slots util.Ints) {
|
func dumpSlots(db *blockstore.DB, slots util.Ints) {
|
||||||
fmt.Println("slots:")
|
fmt.Println("slots:")
|
||||||
slots.Iter(func(slot uint64) bool {
|
slots.Iter(func(slot uint64) bool {
|
||||||
|
|
Loading…
Reference in New Issue