mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
ctlv2: report unhealthy in cluster-health if any node is unavailable
Fixes #8061 and #7032
This commit is contained in:
parent
3b460506d9
commit
ad0b3cfdab
@ -70,7 +70,7 @@ func handleClusterHealth(c *cli.Context) error {
|
||||
}
|
||||
|
||||
for {
|
||||
health := false
|
||||
healthyMembers := 0
|
||||
for _, m := range ms {
|
||||
if len(m.ClientURLs) == 0 {
|
||||
fmt.Printf("member %s is unreachable: no available published client urls\n", m.ID)
|
||||
@ -105,8 +105,8 @@ func handleClusterHealth(c *cli.Context) error {
|
||||
|
||||
checked = true
|
||||
if result.Health == "true" || nresult.Health {
|
||||
health = true
|
||||
fmt.Printf("member %s is healthy: got healthy result from %s\n", m.ID, url)
|
||||
healthyMembers++
|
||||
} else {
|
||||
fmt.Printf("member %s is unhealthy: got unhealthy result from %s\n", m.ID, url)
|
||||
}
|
||||
@ -116,19 +116,20 @@ func handleClusterHealth(c *cli.Context) error {
|
||||
fmt.Printf("member %s is unreachable: %v are all unreachable\n", m.ID, m.ClientURLs)
|
||||
}
|
||||
}
|
||||
if health {
|
||||
switch healthyMembers {
|
||||
case len(ms):
|
||||
fmt.Println("cluster is healthy")
|
||||
} else {
|
||||
fmt.Println("cluster is unhealthy")
|
||||
case 0:
|
||||
fmt.Println("cluster is unavailable")
|
||||
default:
|
||||
fmt.Println("cluster is degraded")
|
||||
}
|
||||
|
||||
if !forever {
|
||||
if health {
|
||||
if healthyMembers == len(ms) {
|
||||
os.Exit(ExitSuccess)
|
||||
return nil
|
||||
}
|
||||
os.Exit(ExitClusterNotHealthy)
|
||||
return nil
|
||||
}
|
||||
|
||||
fmt.Printf("\nnext check after 10 second...\n\n")
|
||||
|
Loading…
x
Reference in New Issue
Block a user