From 6230eb28a61e289eeb2eb7ef579c7d1716cbc016 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Mon, 28 Jan 2019 11:55:33 -0800 Subject: [PATCH] randomize based on self address fix #851 --- weed/server/raft_server.go | 2 ++ weed/util/randomizer.go | 9 +++++++++ 2 files changed, 11 insertions(+) create mode 100644 weed/util/randomizer.go diff --git a/weed/server/raft_server.go b/weed/server/raft_server.go index ca1792ac6..17b1f51b2 100644 --- a/weed/server/raft_server.go +++ b/weed/server/raft_server.go @@ -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. diff --git a/weed/util/randomizer.go b/weed/util/randomizer.go new file mode 100644 index 000000000..e5ccd3fb3 --- /dev/null +++ b/weed/util/randomizer.go @@ -0,0 +1,9 @@ +package util + +import "hash/fnv" + +func HashBytesToInt64(x []byte) int64 { + hash := fnv.New64() + hash.Write(x) + return int64(hash.Sum64()) +}