mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
*: add learner field in endpoint status
Added learner field to endpoint status API.
This commit is contained in:
@@ -693,3 +693,22 @@ func mustDetectDowngrade(lg *zap.Logger, cv *semver.Version) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// IsLearner returns if the local member is raft learner
|
||||
func (c *RaftCluster) IsLearner() bool {
|
||||
c.Lock()
|
||||
defer c.Unlock()
|
||||
localMember, ok := c.members[c.localID]
|
||||
if !ok {
|
||||
if c.lg != nil {
|
||||
c.lg.Panic(
|
||||
"failed to find local ID in cluster members",
|
||||
zap.String("cluster-id", c.cid.String()),
|
||||
zap.String("local-member-id", c.localID.String()),
|
||||
)
|
||||
} else {
|
||||
plog.Panicf("failed to find local ID %s in cluster %s", c.localID.String(), c.cid.String())
|
||||
}
|
||||
}
|
||||
return localMember.IsLearner
|
||||
}
|
||||
|
||||
@@ -55,6 +55,10 @@ type AuthGetter interface {
|
||||
AuthStore() auth.AuthStore
|
||||
}
|
||||
|
||||
type ClusterStatusGetter interface {
|
||||
IsLearner() bool
|
||||
}
|
||||
|
||||
type maintenanceServer struct {
|
||||
lg *zap.Logger
|
||||
rg etcdserver.RaftStatusGetter
|
||||
@@ -63,10 +67,11 @@ type maintenanceServer struct {
|
||||
a Alarmer
|
||||
lt LeaderTransferrer
|
||||
hdr header
|
||||
cs ClusterStatusGetter
|
||||
}
|
||||
|
||||
func NewMaintenanceServer(s *etcdserver.EtcdServer) pb.MaintenanceServer {
|
||||
srv := &maintenanceServer{lg: s.Cfg.Logger, rg: s, kg: s, bg: s, a: s, lt: s, hdr: newHeader(s)}
|
||||
srv := &maintenanceServer{lg: s.Cfg.Logger, rg: s, kg: s, bg: s, a: s, lt: s, hdr: newHeader(s), cs: s}
|
||||
return &authMaintenanceServer{srv, s}
|
||||
}
|
||||
|
||||
@@ -179,6 +184,7 @@ func (ms *maintenanceServer) Status(ctx context.Context, ar *pb.StatusRequest) (
|
||||
RaftTerm: ms.rg.Term(),
|
||||
DbSize: ms.bg.Backend().Size(),
|
||||
DbSizeInUse: ms.bg.Backend().SizeInUse(),
|
||||
IsLearner: ms.cs.IsLearner(),
|
||||
}
|
||||
if resp.Leader == raft.None {
|
||||
resp.Errors = append(resp.Errors, etcdserver.ErrNoLeader.Error())
|
||||
|
||||
@@ -2440,3 +2440,8 @@ func (s *EtcdServer) Alarms() []*pb.AlarmMember {
|
||||
func (s *EtcdServer) Logger() *zap.Logger {
|
||||
return s.lg
|
||||
}
|
||||
|
||||
// IsLearner returns if the local member is raft learner
|
||||
func (s *EtcdServer) IsLearner() bool {
|
||||
return s.cluster.IsLearner()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user