aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/server/raft_server.go2
-rw-r--r--weed/util/randomizer.go9
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())
+}