add timeout flag to wait-api command

This commit is contained in:
Travis Person 2021-11-02 15:49:50 +00:00
parent e0a9cae386
commit 60b3ae2ac2
3 changed files with 26 additions and 6 deletions

View File

@ -1,6 +1,7 @@
package cli package cli
import ( import (
"context"
"fmt" "fmt"
"time" "time"
@ -10,8 +11,22 @@ import (
var WaitApiCmd = &cli.Command{ var WaitApiCmd = &cli.Command{
Name: "wait-api", Name: "wait-api",
Usage: "Wait for lotus api to come online", Usage: "Wait for lotus api to come online",
Flags: []cli.Flag{
&cli.DurationFlag{
Name: "timeout",
Usage: "duration to wait till fail",
Value: time.Second * 30,
},
},
Action: func(cctx *cli.Context) error { Action: func(cctx *cli.Context) error {
for i := 0; i < 30; i++ { ctx := ReqContext(cctx)
ctx, cancel := context.WithTimeout(ctx, cctx.Duration("timeout"))
defer cancel()
for {
if ctx.Err() != nil {
break
}
api, closer, err := GetAPI(cctx) api, closer, err := GetAPI(cctx)
if err != nil { if err != nil {
fmt.Printf("Not online yet... (%s)\n", err) fmt.Printf("Not online yet... (%s)\n", err)
@ -20,8 +35,6 @@ var WaitApiCmd = &cli.Command{
} }
defer closer() defer closer()
ctx := ReqContext(cctx)
_, err = api.Version(ctx) _, err = api.Version(ctx)
if err != nil { if err != nil {
return err return err
@ -29,6 +42,11 @@ var WaitApiCmd = &cli.Command{
return nil return nil
} }
return fmt.Errorf("timed out waiting for api to come online")
if ctx.Err() == context.DeadlineExceeded {
return fmt.Errorf("timed out waiting for api to come online")
}
return ctx.Err()
}, },
} }

View File

@ -590,7 +590,8 @@ CATEGORY:
DEVELOPER DEVELOPER
OPTIONS: OPTIONS:
--help, -h show help (default: false) --timeout value duration to wait till fail (default: 30s)
--help, -h show help (default: false)
``` ```

View File

@ -2450,7 +2450,8 @@ CATEGORY:
DEVELOPER DEVELOPER
OPTIONS: OPTIONS:
--help, -h show help (default: false) --timeout value duration to wait till fail (default: 30s)
--help, -h show help (default: false)
``` ```