Add keepalive to agents

This commit is contained in:
Jacob McCann 2018-01-08 09:28:38 -06:00
parent e582c20812
commit 06fa27d937
2 changed files with 32 additions and 0 deletions

View file

@ -12,6 +12,7 @@ import (
"time" "time"
"google.golang.org/grpc" "google.golang.org/grpc"
"google.golang.org/grpc/keepalive"
"google.golang.org/grpc/metadata" "google.golang.org/grpc/metadata"
"github.com/cncd/pipeline/pipeline" "github.com/cncd/pipeline/pipeline"
@ -68,6 +69,26 @@ func loop(c *cli.Context) error {
// grpc.Dial(target, )) // grpc.Dial(target, ))
agentKeepalive := keepalive.ClientParameters{}
if c.String("keepalive-time") != "" {
d, err := time.ParseDuration(c.String("keepalive-time"))
if err != nil {
return err
}
agentKeepalive.Time = d
}
if c.String("keepalive-timeout") != "" {
d, err := time.ParseDuration(c.String("keepalive-timeout"))
if err != nil {
return err
}
agentKeepalive.Timeout = d
}
conn, err := grpc.Dial( conn, err := grpc.Dial(
c.String("server"), c.String("server"),
grpc.WithInsecure(), grpc.WithInsecure(),
@ -75,6 +96,7 @@ func loop(c *cli.Context) error {
username: c.String("username"), username: c.String("username"),
password: c.String("password"), password: c.String("password"),
}), }),
grpc.WithKeepaliveParams(agentKeepalive),
) )
if err != nil { if err != nil {

View file

@ -80,6 +80,16 @@ func main() {
Name: "healthcheck", Name: "healthcheck",
Usage: "enables the healthcheck endpoint", Usage: "enables the healthcheck endpoint",
}, },
cli.StringFlag{
EnvVar: "DRONE_KEEPALIVE_TIME",
Name: "keepalive-time",
Usage: "after a duration of this time if the agent doesn't see any activity it pings the server to see if the transport is still alive",
},
cli.StringFlag{
EnvVar: "DRONE_KEEPALIVE_TIMEOUT",
Name: "keepalive-timeout",
Usage: "after having pinged for keepalive check, the client waits for a duration of Timeout and if no activity is seen even after that the connection is closed.",
},
} }
if err := app.Run(os.Args); err != nil { if err := app.Run(os.Args); err != nil {