diff options
| author | Chris Lu <chris.lu@gmail.com> | 2019-01-28 11:55:33 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2019-01-28 11:55:33 -0800 |
| commit | 6230eb28a61e289eeb2eb7ef579c7d1716cbc016 (patch) | |
| tree | 47f38c4c5ed58ab50c15964cb78028471a6da947 | |
| parent | 221105eea3cb2cfb587870df0fe0e62c640c4b99 (diff) | |
| download | seaweedfs-6230eb28a61e289eeb2eb7ef579c7d1716cbc016.tar.xz seaweedfs-6230eb28a61e289eeb2eb7ef579c7d1716cbc016.zip | |
randomize based on self address
fix #851
| -rw-r--r-- | weed/server/raft_server.go | 2 | ||||
| -rw-r--r-- | weed/util/randomizer.go | 9 |
2 files changed, 11 insertions, 0 deletions
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()) +} |
