diff options
| author | Chris Lu <chris.lu@gmail.com> | 2019-01-28 10:35:28 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2019-01-28 10:35:28 -0800 |
| commit | 40c8725ffa02767344184fe952f7799fe4250ef9 (patch) | |
| tree | 2adbf83dac7715c63b2dab81411aaad57976e1f4 /weed/server/raft_server.go | |
| parent | adcfe660342aae71a8a0faeec2099004f558982a (diff) | |
| download | seaweedfs-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.go | 13 |
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] +} |
