mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
raft: use the first master to bootstrap the election
This commit is contained in:
parent
744abc2690
commit
8afc632484
|
@ -3,7 +3,6 @@ package weed_server
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"math/rand"
|
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
@ -71,8 +70,8 @@ func NewRaftServer(r *mux.Router, peers []string, httpAddr string, dataDir strin
|
||||||
for _, peer := range s.peers {
|
for _, peer := range s.peers {
|
||||||
s.raftServer.AddPeer(peer, "http://"+peer)
|
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.
|
// Initialize the server by joining itself.
|
||||||
glog.V(0).Infoln("Initializing new cluster")
|
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)
|
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]
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue