Browse Source

etcdserver/stats: lock on leaderstats too

Jonathan Boulle 11 years ago
parent
commit
da64e7509c
1 changed files with 4 additions and 1 deletions
  1. 4 1
      etcdserver/stats/leader.go

+ 4 - 1
etcdserver/stats/leader.go

@@ -27,7 +27,10 @@ func NewLeaderStats(id string) *LeaderStats {
 }
 }
 
 
 func (ls *LeaderStats) JSON() []byte {
 func (ls *LeaderStats) JSON() []byte {
-	b, err := json.Marshal(ls)
+	ls.Lock()
+	stats := *ls
+	ls.Unlock()
+	b, err := json.Marshal(stats)
 	// TODO(jonboulle): appropriate error handling?
 	// TODO(jonboulle): appropriate error handling?
 	if err != nil {
 	if err != nil {
 		log.Printf("error marshalling leader stats: %v", err)
 		log.Printf("error marshalling leader stats: %v", err)