Selaa lähdekoodia

add retryTime

Xiang Li 12 vuotta sitten
vanhempi
commit
f072217b35
1 muutettua tiedostoa jossa 26 lisäystä ja 8 poistoa
  1. 26 8
      etcd.go

+ 26 - 8
etcd.go

@@ -54,6 +54,8 @@ var maxSize int
 
 
 var snapshot bool
 var snapshot bool
 
 
+var retryTime int
+
 func init() {
 func init() {
 	flag.BoolVar(&verbose, "v", false, "verbose logging")
 	flag.BoolVar(&verbose, "v", false, "verbose logging")
 
 
@@ -80,6 +82,8 @@ func init() {
 	flag.BoolVar(&snapshot, "snapshot", false, "open or close snapshot")
 	flag.BoolVar(&snapshot, "snapshot", false, "open or close snapshot")
 
 
 	flag.IntVar(&maxSize, "m", 1024, "the max size of result buffer")
 	flag.IntVar(&maxSize, "m", 1024, "the max size of result buffer")
+
+	flag.IntVar(&retryTime, "r", 3, "the max retry number when try to join a cluster")
 }
 }
 
 
 // CONSTANTS
 // CONSTANTS
@@ -254,19 +258,33 @@ func startRaft(securityType int) {
 		} else {
 		} else {
 			raftServer.StartFollower(false)
 			raftServer.StartFollower(false)
 
 
-			for _, machine := range cluster {
-				if len(machine) == 0 {
-					continue
+			time.Sleep(time.Millisecond * 20)
+
+			for i := 0; i < retryTime; i++ {
+
+				success := false
+				for _, machine := range cluster {
+					if len(machine) == 0 {
+						continue
+					}
+					err = joinCluster(raftServer, machine)
+					if err != nil {
+						debug("cannot join to cluster via machine %s %s", machine, err)
+					} else {
+						success = true
+						break
+					}
 				}
 				}
-				err = joinCluster(raftServer, machine)
-				if err != nil {
-					debug("cannot join to cluster via machine %s %s", machine, err)
-				} else {
+
+				if success {
 					break
 					break
 				}
 				}
+
+				warn("cannot join to cluster via all given machines, retry after 10 seconds")
+				time.Sleep(time.Second * 10)
 			}
 			}
 			if err != nil {
 			if err != nil {
-				fatal("cannot join to cluster via all given machines!")
+				fatal("cannot join to cluster via all given machines after retry!")
 			}
 			}
 			debug("%s success join to the cluster", raftServer.Name())
 			debug("%s success join to the cluster", raftServer.Name())
 		}
 		}