diff --git a/etcdctl/command/cluster_health.go b/etcdctl/command/cluster_health.go index 303e06f37..d9015afbe 100644 --- a/etcdctl/command/cluster_health.go +++ b/etcdctl/command/cluster_health.go @@ -3,6 +3,7 @@ package command import ( "encoding/json" "fmt" + "io/ioutil" "net/http" "os" "os/signal" @@ -70,9 +71,18 @@ func handleClusterHealth(c *cli.Context) { } result := struct{ Health string }{} - d := json.NewDecoder(resp.Body) - err = d.Decode(&result) + nresult := struct{ Health bool }{} + bytes, err := ioutil.ReadAll(resp.Body) + if err != nil { + fmt.Printf("failed to check the health of member %s on %s: %v\n", m.ID, url, err) + continue + } resp.Body.Close() + + err = json.Unmarshal(bytes, &result) + if err != nil { + err = json.Unmarshal(bytes, &nresult) + } if err != nil { fmt.Printf("failed to check the health of member %s on %s: %v\n", m.ID, url, err) continue