|
@@ -16,6 +16,7 @@ package etcdserver
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
"encoding/json"
|
|
"encoding/json"
|
|
|
|
|
+ "expvar"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"io/ioutil"
|
|
"io/ioutil"
|
|
|
"log"
|
|
"log"
|
|
@@ -33,6 +34,7 @@ import (
|
|
|
"github.com/coreos/etcd/etcdserver/stats"
|
|
"github.com/coreos/etcd/etcdserver/stats"
|
|
|
"github.com/coreos/etcd/pkg/fileutil"
|
|
"github.com/coreos/etcd/pkg/fileutil"
|
|
|
"github.com/coreos/etcd/pkg/idutil"
|
|
"github.com/coreos/etcd/pkg/idutil"
|
|
|
|
|
+ "github.com/coreos/etcd/pkg/metrics"
|
|
|
"github.com/coreos/etcd/pkg/pbutil"
|
|
"github.com/coreos/etcd/pkg/pbutil"
|
|
|
"github.com/coreos/etcd/pkg/timeutil"
|
|
"github.com/coreos/etcd/pkg/timeutil"
|
|
|
"github.com/coreos/etcd/pkg/types"
|
|
"github.com/coreos/etcd/pkg/types"
|
|
@@ -266,6 +268,7 @@ func (s *EtcdServer) Start() {
|
|
|
s.start()
|
|
s.start()
|
|
|
go s.publish(defaultPublishRetryInterval)
|
|
go s.publish(defaultPublishRetryInterval)
|
|
|
go s.purgeFile()
|
|
go s.purgeFile()
|
|
|
|
|
+ metrics.Publish("raft.status", expvar.Func(s.raftStatus))
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// start prepares and starts server in a new goroutine. It is no longer safe to
|
|
// start prepares and starts server in a new goroutine. It is no longer safe to
|
|
@@ -513,6 +516,8 @@ func (s *EtcdServer) LeaderStats() []byte {
|
|
|
|
|
|
|
|
func (s *EtcdServer) StoreStats() []byte { return s.store.JsonStats() }
|
|
func (s *EtcdServer) StoreStats() []byte { return s.store.JsonStats() }
|
|
|
|
|
|
|
|
|
|
+func (s *EtcdServer) raftStatus() interface{} { return s.r.Status() }
|
|
|
|
|
+
|
|
|
func (s *EtcdServer) AddMember(ctx context.Context, memb Member) error {
|
|
func (s *EtcdServer) AddMember(ctx context.Context, memb Member) error {
|
|
|
// TODO: move Member to protobuf type
|
|
// TODO: move Member to protobuf type
|
|
|
b, err := json.Marshal(memb)
|
|
b, err := json.Marshal(memb)
|