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  }