1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Remove rpc error when shut down daemon

RPC connection closing error will be reported every time we shutdown
daemon, this error is expected, so we should remove this error to avoid
confusion to user.

Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
(cherry picked from commit a02ae66d36)
This commit is contained in:
Zhang Wei 2016-04-15 12:06:26 +08:00 committed by Kenfe-Mickael Laventure
parent 41130fb9bc
commit 044398a7ad

View file

@ -23,6 +23,7 @@ import (
"golang.org/x/net/context" "golang.org/x/net/context"
"google.golang.org/grpc" "google.golang.org/grpc"
"google.golang.org/grpc/grpclog" "google.golang.org/grpc/grpclog"
"google.golang.org/grpc/transport"
) )
const ( const (
@ -42,6 +43,7 @@ type remote struct {
stateDir string stateDir string
rpcAddr string rpcAddr string
startDaemon bool startDaemon bool
closeManually bool
debugLog bool debugLog bool
rpcConn *grpc.ClientConn rpcConn *grpc.ClientConn
clients []*client clients []*client
@ -147,6 +149,7 @@ func (r *remote) Cleanup() {
if r.daemonPid == -1 { if r.daemonPid == -1 {
return return
} }
r.closeManually = true
r.rpcConn.Close() r.rpcConn.Close()
// Ask the daemon to quit // Ask the daemon to quit
syscall.Kill(r.daemonPid, syscall.SIGTERM) syscall.Kill(r.daemonPid, syscall.SIGTERM)
@ -254,6 +257,11 @@ func (r *remote) handleEventStream(events containerd.API_EventsClient) {
for { for {
e, err := events.Recv() e, err := events.Recv()
if err != nil { if err != nil {
if grpc.ErrorDesc(err) == transport.ErrConnClosing.Desc &&
r.closeManually {
// ignore error if grpc remote connection is closed manually
return
}
logrus.Errorf("failed to receive event from containerd: %v", err) logrus.Errorf("failed to receive event from containerd: %v", err)
go r.startEventsMonitor() go r.startEventsMonitor()
return return