aboutsummaryrefslogtreecommitdiff
path: root/weed/server/raft_server.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2019-01-28 10:35:28 -0800
committerChris Lu <chris.lu@gmail.com>2019-01-28 10:35:28 -0800
commit40c8725ffa02767344184fe952f7799fe4250ef9 (patch)
tree2adbf83dac7715c63b2dab81411aaad57976e1f4 /weed/server/raft_server.go
parentadcfe660342aae71a8a0faeec2099004f558982a (diff)
downloadseaweedfs-40c8725ffa02767344184fe952f7799fe4250ef9.tar.xz
seaweedfs-40c8725ffa02767344184fe952f7799fe4250ef9.zip
use the first entry to bootstrap master cluster
fix https://github.com/chrislusf/seaweedfs/issues/851
Diffstat (limited to 'weed/server/raft_server.go')
-rw-r--r--weed/server/raft_server.go13
1 files changed, 10 insertions, 3 deletions
diff --git a/weed/server/raft_server.go b/weed/server/raft_server.go
index ca1792ac6..c332da38e 100644
--- a/weed/server/raft_server.go
+++ b/weed/server/raft_server.go
@@ -3,7 +3,6 @@ package weed_server
import (
"encoding/json"
"io/ioutil"
- "math/rand"
"os"
"path"
"reflect"
@@ -71,8 +70,8 @@ func NewRaftServer(r *mux.Router, peers []string, httpAddr string, dataDir strin
for _, peer := range s.peers {
s.raftServer.AddPeer(peer, "http://"+peer)
}
- time.Sleep(time.Duration(1000+rand.Int31n(3000)) * time.Millisecond)
- if s.raftServer.IsLogEmpty() {
+
+ if s.raftServer.IsLogEmpty() && isTheFirstOne(httpAddr, s.peers) {
// Initialize the server by joining itself.
glog.V(0).Infoln("Initializing new cluster")
@@ -129,3 +128,11 @@ func isPeersChanged(dir string, self string, peers []string) (oldPeers []string,
return oldPeers, !reflect.DeepEqual(peers, oldPeers)
}
+
+func isTheFirstOne(self string, peers []string) bool {
+ sort.Strings(peers)
+ if len(peers)<=0{
+ return true
+ }
+ return self == peers[0]
+}