aboutsummaryrefslogtreecommitdiff
path: root/weed/server/raft_server.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2019-02-09 12:52:09 -0800
committerChris Lu <chris.lu@gmail.com>2019-02-09 12:52:09 -0800
commit8afc63248449ee681dc964e07ab687a0f4cb8a9b (patch)
tree361d72431af260bf88bf8774a1232623705e875b /weed/server/raft_server.go
parent744abc2690a551f1e76e4e12690754b322f383de (diff)
downloadseaweedfs-8afc63248449ee681dc964e07ab687a0f4cb8a9b.tar.xz
seaweedfs-8afc63248449ee681dc964e07ab687a0f4cb8a9b.zip
raft: use the first master to bootstrap the election
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]
+}