github.com/ari-anchor/sei-tendermint@v0.0.0-20230519144642-dc826b7b56bb/cmd/tendermint/commands/inspect.go (about) 1 package commands 2 3 import ( 4 "os/signal" 5 "syscall" 6 7 "github.com/spf13/cobra" 8 9 "github.com/ari-anchor/sei-tendermint/config" 10 "github.com/ari-anchor/sei-tendermint/internal/inspect" 11 "github.com/ari-anchor/sei-tendermint/libs/log" 12 ) 13 14 // InspectCmd constructs the command to start an inspect server. 15 func MakeInspectCommand(conf *config.Config, logger log.Logger) *cobra.Command { 16 cmd := &cobra.Command{ 17 Use: "inspect", 18 Short: "Run an inspect server for investigating Tendermint state", 19 Long: ` 20 inspect runs a subset of Tendermint's RPC endpoints that are useful for debugging 21 issues with Tendermint. 22 23 When the Tendermint consensus engine detects inconsistent state, it will crash the 24 tendermint process. Tendermint will not start up while in this inconsistent state. 25 The inspect command can be used to query the block and state store using Tendermint 26 RPC calls to debug issues of inconsistent state. 27 `, 28 RunE: func(cmd *cobra.Command, args []string) error { 29 ctx, cancel := signal.NotifyContext(cmd.Context(), syscall.SIGTERM, syscall.SIGINT) 30 defer cancel() 31 32 ins, err := inspect.NewFromConfig(logger, conf) 33 if err != nil { 34 return err 35 } 36 37 logger.Info("starting inspect server") 38 if err := ins.Run(ctx); err != nil { 39 return err 40 } 41 return nil 42 }, 43 } 44 cmd.Flags().String("rpc.laddr", 45 conf.RPC.ListenAddress, "RPC listenener address. Port required") 46 cmd.Flags().String("db-backend", 47 conf.DBBackend, "database backend: goleveldb | cleveldb | boltdb | rocksdb | badgerdb") 48 cmd.Flags().String("db-dir", conf.DBPath, "database directory") 49 50 return cmd 51 }