Merge pull request #1338 from mlaventure/client-reconnect-fix

Client reconnect fix
This commit is contained in:
Phil Estes
2017-08-11 14:30:05 -04:00
committed by GitHub
11 changed files with 300 additions and 70 deletions

View File

@@ -11,6 +11,7 @@ import (
"strings"
"time"
"github.com/containerd/containerd"
eventsapi "github.com/containerd/containerd/api/services/events/v1"
"github.com/containerd/containerd/errdefs"
"github.com/containerd/containerd/events"
@@ -80,7 +81,7 @@ func main() {
if err != nil {
return err
}
server := grpc.NewServer()
server := newServer()
e, err := connectEvents(context.GlobalString("address"))
if err != nil {
return err
@@ -171,7 +172,7 @@ func dumpStacks() {
}
func connectEvents(address string) (eventsapi.EventsClient, error) {
conn, err := connect(address, dialer)
conn, err := connect(address, containerd.Dialer)
if err != nil {
return nil, errors.Wrapf(err, "failed to dial %q", address)
}
@@ -182,26 +183,18 @@ func connect(address string, d func(string, time.Duration) (net.Conn, error)) (*
gopts := []grpc.DialOption{
grpc.WithBlock(),
grpc.WithInsecure(),
grpc.WithTimeout(100 * time.Second),
grpc.WithTimeout(60 * time.Second),
grpc.WithDialer(d),
grpc.FailOnNonTempDialError(true),
grpc.WithBackoffMaxDelay(3 * time.Second),
}
conn, err := grpc.Dial(dialAddress(address), gopts...)
conn, err := grpc.Dial(containerd.DialAddress(address), gopts...)
if err != nil {
return nil, errors.Wrapf(err, "failed to dial %q", address)
}
return conn, nil
}
func dialer(address string, timeout time.Duration) (net.Conn, error) {
address = strings.TrimPrefix(address, "unix://")
return net.DialTimeout("unix", address, timeout)
}
func dialAddress(address string) string {
return fmt.Sprintf("unix://%s", address)
}
type remoteEventsPublisher struct {
client eventsapi.EventsClient
}

View File

@@ -33,7 +33,7 @@ func setupSignals() (chan os.Signal, error) {
}
func newServer() *grpc.Server {
return grpc.NewServer(grpc.Creds(NewUnixSocketCredentils(0, 0)))
return grpc.NewServer(grpc.Creds(NewUnixSocketCredentials(0, 0)))
}
type unixSocketCredentials struct {
@@ -42,7 +42,7 @@ type unixSocketCredentials struct {
serverName string
}
func NewUnixSocketCredentils(uid, gid int) credentials.TransportCredentials {
func NewUnixSocketCredentials(uid, gid int) credentials.TransportCredentials {
return &unixSocketCredentials{uid, gid, "locahost"}
}