Browse Source

etcdserver: update stats when become leader

Xiang Li 11 years ago
parent
commit
c27c288bef
2 changed files with 13 additions and 0 deletions
  1. 5 0
      etcdserver/server.go
  2. 8 0
      etcdserver/stats/server.go

+ 5 - 0
etcdserver/server.go

@@ -385,6 +385,11 @@ func (s *EtcdServer) run() {
 				atomic.StoreUint64(&s.raftLead, rd.SoftState.Lead)
 				atomic.StoreUint64(&s.raftLead, rd.SoftState.Lead)
 				if rd.RaftState == raft.StateLeader {
 				if rd.RaftState == raft.StateLeader {
 					syncC = s.SyncTicker
 					syncC = s.SyncTicker
+					// TODO: remove the nil checking
+					// current test utility does not provide the stats
+					if s.stats != nil {
+						s.stats.BecomeLeader()
+					}
 				} else {
 				} else {
 					syncC = nil
 					syncC = nil
 				}
 				}

+ 8 - 0
etcdserver/stats/server.go

@@ -141,3 +141,11 @@ func (ss *ServerStats) SendAppendReq(reqSize int) {
 
 
 	ss.SendAppendRequestCnt++
 	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()
+	}
+}