diff --git a/etcd_server.go b/etcd_server.go index 2cef01558..0139b03c2 100644 --- a/etcd_server.go +++ b/etcd_server.go @@ -31,7 +31,7 @@ func newEtcdServer(name string, urlStr string, listenHost string, tlsConf *TLSCo // Start to listen and response etcd client command func (e *etcdServer) ListenAndServe() { - infof("etcd server [%s:%s]", e.name, e.url) + infof("etcd server [name %s, listen on %s, advertised url %s]", e.name, e.Server.Addr, e.url) if e.tlsConf.Scheme == "http" { fatal(e.Server.ListenAndServe()) diff --git a/raft_server.go b/raft_server.go index 262ffc972..a159e9020 100644 --- a/raft_server.go +++ b/raft_server.go @@ -45,6 +45,7 @@ func newRaftServer(name string, url string, listenHost string, tlsConf *TLSConfi version: raftVersion, name: name, url: url, + listenHost: listenHost, tlsConf: tlsConf, tlsInfo: tlsInfo, peersStats: make(map[string]*raftPeerStats), @@ -148,7 +149,7 @@ func startAsFollower() { // Start to listen and response raft command func (r *raftServer) startTransport(scheme string, tlsConf tls.Config) { - infof("raft server [%s:%s]", r.name, r.listenHost) + infof("raft server [name %s, listen on %s, advertised url %s]", r.name, r.listenHost, r.url) raftMux := http.NewServeMux() @@ -298,11 +299,14 @@ func (r *raftServer) Stats() []byte { warn(err) } - pBytes, _ := json.Marshal(r.peersStats) + if r.State() == raft.Leader { + pBytes, _ := json.Marshal(r.peersStats) - b := append(sBytes, pBytes...) + b := append(sBytes, pBytes...) + return b + } - return b + return sBytes } // Register commands to raft server diff --git a/raft_stats.go b/raft_stats.go index 06687d89f..cf8fb1d6c 100644 --- a/raft_stats.go +++ b/raft_stats.go @@ -1,7 +1,6 @@ package main import ( - "fmt" "math" "sync" "time" @@ -13,14 +12,14 @@ const ( queueCapacity = 200 ) -type runtimeStats struct { -} - +// packageStats represent the stats we need for a package. +// It has sending time and the size of the package. type packageStats struct { sendingTime time.Time size int } +// NewPackageStats creates a pacakgeStats and return the pointer to it. func NewPackageStats(now time.Time, size int) *packageStats { return &packageStats{ sendingTime: now, @@ -28,6 +27,7 @@ func NewPackageStats(now time.Time, size int) *packageStats { } } +// Time return the sending time of the package. func (ps *packageStats) Time() time.Time { return ps.sendingTime } @@ -38,13 +38,13 @@ type raftServerStats struct { Leader string `json:"leader"` LeaderUptime string `json:"leaderUptime"` - RecvAppendRequestCnt uint64 `json:"recvAppendRequestCnt"` - RecvingPkgRate float64 `json:"recvPkgRate"` - RecvingBandwidthRate float64 `json:"recvBandwidthRate"` + RecvAppendRequestCnt uint64 `json:"recvAppendRequestCnt,"` + RecvingPkgRate float64 `json:"recvPkgRate,omitempty"` + RecvingBandwidthRate float64 `json:"recvBandwidthRate,omitempty"` SendAppendRequestCnt uint64 `json:"sendAppendRequestCnt"` - SendingPkgRate float64 `json:"sendPkgRate"` - SendingBandwidthRate float64 `json:"sendBandwidthRate"` + SendingPkgRate float64 `json:"sendPkgRate,omitempty"` + SendingBandwidthRate float64 `json:"sendBandwidthRate,omitempty"` leaderStartTime time.Time sendRateQueue *statsQueue @@ -158,7 +158,6 @@ func (q *statsQueue) Insert(p *packageStats) { q.items[q.back] = p q.totalPkgSize += q.items[q.back].size - fmt.Println(q.front, q.back, q.size) } func (q *statsQueue) Rate() (float64, float64) {