mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Add retry to cluster-peers
Add retry field to cluster-peers probe Signed-off-by: Flavio Crisciani <flavio.crisciani@docker.com>
This commit is contained in:
parent
6716626d32
commit
4f3fb7ee6a
1 changed files with 36 additions and 15 deletions
|
@ -310,19 +310,33 @@ func doJoin(ips []string) {
|
|||
close(doneCh)
|
||||
}
|
||||
|
||||
// cluster-peers expectedNumberPeers
|
||||
// cluster-peers expectedNumberPeers maxRetry
|
||||
func doClusterPeers(ips []string, args []string) {
|
||||
doneCh := make(chan resultTuple, len(ips))
|
||||
expectedPeers, _ := strconv.Atoi(args[0])
|
||||
// check all the nodes
|
||||
for _, ip := range ips {
|
||||
go clusterPeersNumber(ip, servicePort, doneCh)
|
||||
}
|
||||
// wait for the readiness of all nodes
|
||||
for i := len(ips); i > 0; i-- {
|
||||
node := <-doneCh
|
||||
if node.result != expectedPeers {
|
||||
log.Fatalf("Expected peers from %s missmatch %d != %d", node.id, expectedPeers, node.result)
|
||||
maxRetry, _ := strconv.Atoi(args[1])
|
||||
for retry := 0; retry < maxRetry; retry++ {
|
||||
// check all the nodes
|
||||
for _, ip := range ips {
|
||||
go clusterPeersNumber(ip, servicePort, doneCh)
|
||||
}
|
||||
var failed bool
|
||||
// wait for the readiness of all nodes
|
||||
for i := len(ips); i > 0; i-- {
|
||||
node := <-doneCh
|
||||
if node.result != expectedPeers {
|
||||
failed = true
|
||||
if retry == maxRetry-1 {
|
||||
log.Fatalf("Expected peers from %s missmatch %d != %d", node.id, expectedPeers, node.result)
|
||||
} else {
|
||||
logrus.Warnf("Expected peers from %s missmatch %d != %d", node.id, expectedPeers, node.result)
|
||||
}
|
||||
time.Sleep(1 * time.Second)
|
||||
}
|
||||
}
|
||||
// check if needs retry
|
||||
if !failed {
|
||||
break
|
||||
}
|
||||
}
|
||||
close(doneCh)
|
||||
|
@ -356,7 +370,7 @@ func doLeaveNetwork(ips []string, args []string) {
|
|||
close(doneCh)
|
||||
}
|
||||
|
||||
// cluster-peers networkName expectedNumberPeers maxRetry
|
||||
// network-peers networkName expectedNumberPeers maxRetry
|
||||
func doNetworkPeers(ips []string, args []string) {
|
||||
doneCh := make(chan resultTuple, len(ips))
|
||||
networkName := args[0]
|
||||
|
@ -367,10 +381,12 @@ func doNetworkPeers(ips []string, args []string) {
|
|||
for _, ip := range ips {
|
||||
go networkPeersNumber(ip, servicePort, networkName, doneCh)
|
||||
}
|
||||
var failed bool
|
||||
// wait for the readiness of all nodes
|
||||
for i := len(ips); i > 0; i-- {
|
||||
node := <-doneCh
|
||||
if node.result != expectedPeers {
|
||||
failed = true
|
||||
if retry == maxRetry-1 {
|
||||
log.Fatalf("Expected peers from %s missmatch %d != %d", node.id, expectedPeers, node.result)
|
||||
} else {
|
||||
|
@ -379,6 +395,10 @@ func doNetworkPeers(ips []string, args []string) {
|
|||
time.Sleep(1 * time.Second)
|
||||
}
|
||||
}
|
||||
// check if needs retry
|
||||
if !failed {
|
||||
break
|
||||
}
|
||||
}
|
||||
close(doneCh)
|
||||
}
|
||||
|
@ -618,8 +638,9 @@ var cmdArgChec = map[string]int{
|
|||
"leave": 2,
|
||||
"join-network": 3,
|
||||
"leave-network": 3,
|
||||
"cluster-peers": 3,
|
||||
"write-delete-unique-keys": 4,
|
||||
"cluster-peers": 5,
|
||||
"network-peers": 5,
|
||||
"write-delete-unique-keys": 7,
|
||||
}
|
||||
|
||||
// Client is a client
|
||||
|
@ -628,7 +649,7 @@ func Client(args []string) {
|
|||
command := args[0]
|
||||
|
||||
if len(args) < cmdArgChec[command] {
|
||||
log.Fatalf("Command %s requires %d arguments, aborting...", command, cmdArgChec[command])
|
||||
log.Fatalf("Command %s requires %d arguments, passed %d, aborting...", command, cmdArgChec[command], len(args))
|
||||
}
|
||||
|
||||
switch command {
|
||||
|
@ -656,7 +677,7 @@ func Client(args []string) {
|
|||
case "leave":
|
||||
|
||||
case "cluster-peers":
|
||||
// cluster-peers
|
||||
// cluster-peers maxRetry
|
||||
doClusterPeers(ips, commandArgs)
|
||||
|
||||
case "join-network":
|
||||
|
|
Loading…
Add table
Reference in a new issue