From c63d6b6a25be81d179cfa2065cd065dd4a5b6527 Mon Sep 17 00:00:00 2001 From: Gyu-Ho Lee Date: Tue, 26 Sep 2017 01:15:10 +0900 Subject: [PATCH 1/2] ctlv3: print envs, configure grpc logger with debug flag Signed-off-by: Gyu-Ho Lee --- etcdctl/ctlv3/command/global.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/etcdctl/ctlv3/command/global.go b/etcdctl/ctlv3/command/global.go index eeef3ddb3..7af63615a 100644 --- a/etcdctl/ctlv3/command/global.go +++ b/etcdctl/ctlv3/command/global.go @@ -30,6 +30,7 @@ import ( "github.com/coreos/etcd/pkg/srv" "github.com/coreos/etcd/pkg/transport" "github.com/spf13/cobra" + "github.com/spf13/pflag" "google.golang.org/grpc/grpclog" ) @@ -90,14 +91,18 @@ func initDisplayFromCmd(cmd *cobra.Command) { } func mustClientFromCmd(cmd *cobra.Command) *clientv3.Client { - flags.SetPflagsFromEnv("ETCDCTL", cmd.InheritedFlags()) + fs := cmd.InheritedFlags() + flags.SetPflagsFromEnv("ETCDCTL", fs) debug, derr := cmd.Flags().GetBool("debug") if derr != nil { ExitWithError(ExitError, derr) } if debug { - clientv3.SetLogger(grpclog.NewLoggerV2(os.Stderr, os.Stderr, os.Stderr)) + clientv3.SetLogger(grpclog.NewLoggerV2WithVerbosity(os.Stderr, os.Stderr, os.Stderr, 4)) + fs.VisitAll(func(f *pflag.Flag) { + fmt.Fprintf(os.Stderr, "%s=%v\n", flags.FlagToEnv("ETCDCTL", f.Name), f.Value) + }) } endpoints, err := endpointsFromCmd(cmd) From 090c19251758390b6d787278291d4696b7c56f3e Mon Sep 17 00:00:00 2001 From: Gyu-Ho Lee Date: Tue, 26 Sep 2017 01:15:54 +0900 Subject: [PATCH 2/2] clientv3: add debugging logs, warnings Signed-off-by: Gyu-Ho Lee --- clientv3/balancer.go | 6 ++++++ clientv3/health_balancer.go | 3 +++ 2 files changed, 9 insertions(+) diff --git a/clientv3/balancer.go b/clientv3/balancer.go index 75c5cd438..56b1150e6 100644 --- a/clientv3/balancer.go +++ b/clientv3/balancer.go @@ -309,6 +309,9 @@ func (b *simpleBalancer) up(addr grpc.Address) (func(error), bool) { close(b.upc) b.downc = make(chan struct{}) b.pinAddr = addr.Addr + if logger.V(4) { + logger.Infof("clientv3: balancer pins endpoint to %s", addr.Addr) + } // notify client that a connection is up b.readyOnce.Do(func() { close(b.readyc) }) return func(err error) { @@ -317,6 +320,9 @@ func (b *simpleBalancer) up(addr grpc.Address) (func(error), bool) { close(b.downc) b.pinAddr = "" b.mu.Unlock() + if logger.V(4) { + logger.Infof("clientv3: unpin %s (%v)", addr.Addr, err) + } }, true } diff --git a/clientv3/health_balancer.go b/clientv3/health_balancer.go index 25c2b1c6b..0cbbbd1a7 100644 --- a/clientv3/health_balancer.go +++ b/clientv3/health_balancer.go @@ -186,6 +186,9 @@ func (hb *healthBalancer) mayPin(addr grpc.Address) bool { hb.mu.Lock() hb.unhealthy[addr.Addr] = time.Now() hb.mu.Unlock() + if logger.V(4) { + logger.Infof("clientv3: %s becomes unhealthy", addr.Addr) + } return false }