mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdserver: copy stats instead of marshaling with lock
This commit is contained in:
parent
c28907ba95
commit
233e940410
@ -40,11 +40,12 @@ type ServerStats struct {
|
||||
|
||||
func (ss *ServerStats) JSON() []byte {
|
||||
ss.Lock()
|
||||
defer ss.Unlock()
|
||||
ss.LeaderInfo.Uptime = time.Now().Sub(ss.LeaderInfo.StartTime).String()
|
||||
ss.SendingPkgRate, ss.SendingBandwidthRate = ss.SendRates()
|
||||
ss.RecvingPkgRate, ss.RecvingBandwidthRate = ss.RecvRates()
|
||||
b, err := json.Marshal(ss)
|
||||
stats := *ss
|
||||
ss.Unlock()
|
||||
stats.LeaderInfo.Uptime = time.Now().Sub(stats.LeaderInfo.StartTime).String()
|
||||
stats.SendingPkgRate, stats.SendingBandwidthRate = stats.SendRates()
|
||||
stats.RecvingPkgRate, stats.RecvingBandwidthRate = stats.RecvRates()
|
||||
b, err := json.Marshal(stats)
|
||||
// TODO(jonboulle): appropriate error handling?
|
||||
if err != nil {
|
||||
log.Printf("error marshalling server stats: %v", err)
|
||||
|
Loading…
x
Reference in New Issue
Block a user