only leader will return peer stats

release-0.4
Xiang Li 2013-09-08 20:48:33 -04:00
parent 44e8c234ed
commit 43cb2a353f
3 changed files with 18 additions and 15 deletions

View File

@ -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())

View File

@ -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

View File

@ -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) {