fix(raft_server_stats.go) protect raft stats by a lock

release-0.4
Xiang Li 2014-04-10 22:50:44 -04:00
parent 11525d357f
commit 6d08976cbe
1 changed files with 9 additions and 0 deletions

View File

@ -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 {