diff --git a/server/raft_server_stats.go b/server/raft_server_stats.go index 5db3886e2..5f880d196 100644 --- a/server/raft_server_stats.go +++ b/server/raft_server_stats.go @@ -1,6 +1,7 @@ package server import ( + "sync" "time" "github.com/coreos/etcd/third_party/github.com/goraft/raft" @@ -27,6 +28,8 @@ type raftServerStats struct { sendRateQueue *statsQueue recvRateQueue *statsQueue + + sync.Mutex } func NewRaftServerStats(name string) *raftServerStats { @@ -43,6 +46,9 @@ func NewRaftServerStats(name string) *raftServerStats { } func (ss *raftServerStats) RecvAppendReq(leaderName string, pkgSize int) { + ss.Lock() + defer ss.Unlock() + ss.State = raft.Follower if leaderName != ss.LeaderInfo.Name { ss.LeaderInfo.Name = leaderName @@ -54,6 +60,9 @@ func (ss *raftServerStats) RecvAppendReq(leaderName string, pkgSize int) { } func (ss *raftServerStats) SendAppendReq(pkgSize int) { + ss.Lock() + defer ss.Unlock() + now := time.Now() if ss.State != raft.Leader {