randomize based on self address

fix #851
This commit is contained in:
Chris Lu 2019-01-28 11:55:33 -08:00
parent 221105eea3
commit 6230eb28a6
2 changed files with 11 additions and 0 deletions

View file

@ -14,6 +14,7 @@ import (
"github.com/chrislusf/raft"
"github.com/chrislusf/seaweedfs/weed/glog"
"github.com/chrislusf/seaweedfs/weed/topology"
"github.com/chrislusf/seaweedfs/weed/util"
"github.com/gorilla/mux"
)
@ -71,6 +72,7 @@ func NewRaftServer(r *mux.Router, peers []string, httpAddr string, dataDir strin
for _, peer := range s.peers {
s.raftServer.AddPeer(peer, "http://"+peer)
}
rand.Seed(util.HashBytesToInt64([]byte(httpAddr)))
time.Sleep(time.Duration(1000+rand.Int31n(3000)) * time.Millisecond)
if s.raftServer.IsLogEmpty() {
// Initialize the server by joining itself.

9
weed/util/randomizer.go Normal file
View file

@ -0,0 +1,9 @@
package util
import "hash/fnv"
func HashBytesToInt64(x []byte) int64 {
hash := fnv.New64()
hash.Write(x)
return int64(hash.Sum64())
}