Skip to content

Commit

Permalink
feat: check latest block if no arg in q block and q block-results
Browse files Browse the repository at this point in the history
… (backport #21084) (#21111)

Co-authored-by: Julien Robert <julien@rbrt.fr>
Co-authored-by: sontrinh16 <trinhleson2000@gmail.com>
  • Loading branch information
3 people authored Jul 30, 2024
1 parent e135030 commit 91d412c
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 30 deletions.
60 changes: 32 additions & 28 deletions server/cmt_cmds.go
Original file line number Diff line number Diff line change
Expand Up @@ -226,32 +226,45 @@ $ %s query block --%s=%s <hash>
`,
version.AppName, auth.FlagType, auth.TypeHeight,
version.AppName, auth.FlagType, auth.TypeHash)),
Args: cobra.ExactArgs(1),
Args: cobra.MaximumNArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}

typ, _ := cmd.Flags().GetString(auth.FlagType)
if len(args) == 0 {
// do not break default v0.50 behavior of block hash
// if no args are provided, set the type to height
typ = auth.TypeHeight
}

switch typ {
case auth.TypeHeight:

if args[0] == "" {
return fmt.Errorf("argument should be a block height")
var (
err error
height int64
)
heightStr := ""
if len(args) > 0 {
heightStr = args[0]
}

// optional height
var height *int64
if len(args) > 0 {
height, err = parseOptionalHeight(args[0])
if heightStr == "" {
cmd.Println("Falling back to latest block height:")
height, err = rpc.GetChainHeight(clientCtx)
if err != nil {
return fmt.Errorf("failed to get chain height: %w", err)
}
} else {
height, err = strconv.ParseInt(heightStr, 10, 64)
if err != nil {
return err
return fmt.Errorf("failed to parse block height: %w", err)
}
}

output, err := rpc.GetBlockByHeight(clientCtx, height)
output, err := rpc.GetBlockByHeight(clientCtx, &height)
if err != nil {
return err
}
Expand Down Expand Up @@ -311,15 +324,21 @@ func QueryBlockResultsCmd() *cobra.Command {
}

// optional height
var height *int64
var height int64
if len(args) > 0 {
height, err = parseOptionalHeight(args[0])
height, err = strconv.ParseInt(args[0], 10, 64)
if err != nil {
return err
}
} else {
cmd.Println("Falling back to latest block height:")
height, err = rpc.GetChainHeight(clientCtx)
if err != nil {
return fmt.Errorf("failed to get chain height: %w", err)
}
}

blockRes, err := node.BlockResults(context.Background(), height)
blockRes, err := node.BlockResults(context.Background(), &height)
if err != nil {
return err
}
Expand All @@ -341,21 +360,6 @@ func QueryBlockResultsCmd() *cobra.Command {
return cmd
}

func parseOptionalHeight(heightStr string) (*int64, error) {
h, err := strconv.Atoi(heightStr)
if err != nil {
return nil, err
}

if h == 0 {
return nil, nil
}

tmp := int64(h)

return &tmp, nil
}

func BootstrapStateCmd(appCreator types.AppCreator) *cobra.Command {
cmd := &cobra.Command{
Use: "bootstrap-state",
Expand Down
2 changes: 1 addition & 1 deletion server/grpc/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func (s *IntegrationTestSuite) SetupSuite() {
s.Require().NoError(err)

val0 := s.network.Validators[0]
s.conn, err = grpc.Dial(
s.conn, err = grpc.Dial( //nolint:staticcheck // ignore this line for this linter
val0.AppConfig.GRPC.Address,
grpc.WithInsecure(), //nolint:staticcheck // ignore SA1019, we don't need to use a secure connection for tests
grpc.WithDefaultCallOptions(grpc.ForceCodec(codec.NewProtoCodec(s.cfg.InterfaceRegistry).GRPCCodec())),
Expand Down
2 changes: 1 addition & 1 deletion server/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@ func startGrpcServer(
}

// if gRPC is enabled, configure gRPC client for gRPC gateway
grpcClient, err := grpc.Dial(
grpcClient, err := grpc.Dial( //nolint: staticcheck // ignore this line for this linter
config.Address,
grpc.WithTransportCredentials(insecure.NewCredentials()),
grpc.WithDefaultCallOptions(
Expand Down

0 comments on commit 91d412c

Please sign in to comment.