diff --git a/etcdserver/server.go b/etcdserver/server.go index ee4b48ee5..da629f36a 100644 --- a/etcdserver/server.go +++ b/etcdserver/server.go @@ -385,6 +385,11 @@ func (s *EtcdServer) run() { atomic.StoreUint64(&s.raftLead, rd.SoftState.Lead) if rd.RaftState == raft.StateLeader { syncC = s.SyncTicker + // TODO: remove the nil checking + // current test utility does not provide the stats + if s.stats != nil { + s.stats.BecomeLeader() + } } else { syncC = nil } diff --git a/etcdserver/stats/server.go b/etcdserver/stats/server.go index 90772486e..deae201bb 100644 --- a/etcdserver/stats/server.go +++ b/etcdserver/stats/server.go @@ -141,3 +141,11 @@ func (ss *ServerStats) SendAppendReq(reqSize int) { ss.SendAppendRequestCnt++ } + +func (ss *ServerStats) BecomeLeader() { + if ss.State != raft.StateLeader { + ss.State = raft.StateLeader + ss.LeaderInfo.Name = ss.ID + ss.LeaderInfo.StartTime = time.Now() + } +}