From 24077fb3f6ac4e0efb467a1e010f16894c665a67 Mon Sep 17 00:00:00 2001 From: Hitoshi Mitake Date: Fri, 22 Apr 2016 23:39:08 +0900 Subject: [PATCH] etcdserver: remove a data race of ServerStat It seems that ServerStats.BecomeLeader() is missing a lock. Fix https://github.com/coreos/etcd/issues/5155 --- etcdserver/stats/server.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/etcdserver/stats/server.go b/etcdserver/stats/server.go index 8e2e7701d..7ef7de4e5 100644 --- a/etcdserver/stats/server.go +++ b/etcdserver/stats/server.go @@ -142,6 +142,9 @@ func (ss *ServerStats) SendAppendReq(reqSize int) { } func (ss *ServerStats) BecomeLeader() { + ss.Lock() + defer ss.Unlock() + if ss.State != raft.StateLeader { ss.State = raft.StateLeader ss.LeaderInfo.Name = ss.ID