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
import (
"context"
"fmt"
"time"
@ -10,8 +11,22 @@ import (
var WaitApiCmd = &cli.Command{
Name: "wait-api",
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 {
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)
if err != nil {
fmt.Printf("Not online yet... (%s)\n", err)
@ -20,8 +35,6 @@ var WaitApiCmd = &cli.Command{
}
defer closer()
ctx := ReqContext(cctx)
_, err = api.Version(ctx)
if err != nil {
return err
@ -29,6 +42,11 @@ var WaitApiCmd = &cli.Command{
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
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
OPTIONS:
--help, -h show help (default: false)
--timeout value duration to wait till fail (default: 30s)
--help, -h show help (default: false)
```