mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdserver: refactore member.go
This commit is contained in:
parent
0ad6d7e3ba
commit
4a72d3a8bb
@ -109,12 +109,12 @@ func (c *cluster) ID() types.ID { return c.id }
|
||||
func (c *cluster) Members() []*Member {
|
||||
c.Lock()
|
||||
defer c.Unlock()
|
||||
var sms SortableMemberSlice
|
||||
var ms MembersByID
|
||||
for _, m := range c.members {
|
||||
sms = append(sms, m.Clone())
|
||||
ms = append(ms, m.Clone())
|
||||
}
|
||||
sort.Sort(sms)
|
||||
return []*Member(sms)
|
||||
sort.Sort(ms)
|
||||
return []*Member(ms)
|
||||
}
|
||||
|
||||
func (c *cluster) Member(id types.ID) *Member {
|
||||
@ -409,8 +409,8 @@ func ValidateClusterAndAssignIDs(local *cluster, existing *cluster) error {
|
||||
if len(ems) != len(lms) {
|
||||
return fmt.Errorf("member count is unequal")
|
||||
}
|
||||
sort.Sort(SortableMemberSliceByPeerURLs(ems))
|
||||
sort.Sort(SortableMemberSliceByPeerURLs(lms))
|
||||
sort.Sort(MembersByPeerURLs(ems))
|
||||
sort.Sort(MembersByPeerURLs(lms))
|
||||
|
||||
for i := range ems {
|
||||
// TODO: Remove URLStringsEqual after improvement of using hostnames #2150 #2123
|
||||
|
@ -39,12 +39,12 @@ type fakeCluster struct {
|
||||
func (c *fakeCluster) ID() types.ID { return types.ID(c.id) }
|
||||
func (c *fakeCluster) ClientURLs() []string { return c.clientURLs }
|
||||
func (c *fakeCluster) Members() []*etcdserver.Member {
|
||||
var sms etcdserver.SortableMemberSlice
|
||||
var ms etcdserver.MembersByID
|
||||
for _, m := range c.members {
|
||||
sms = append(sms, m)
|
||||
ms = append(ms, m)
|
||||
}
|
||||
sort.Sort(sms)
|
||||
return []*etcdserver.Member(sms)
|
||||
sort.Sort(ms)
|
||||
return []*etcdserver.Member(ms)
|
||||
}
|
||||
func (c *fakeCluster) Member(id types.ID) *etcdserver.Member { return c.members[uint64(id)] }
|
||||
func (c *fakeCluster) IsIDRemoved(id types.ID) bool { return false }
|
||||
|
@ -29,6 +29,11 @@ import (
|
||||
"github.com/coreos/etcd/store"
|
||||
)
|
||||
|
||||
var (
|
||||
storeMembersPrefix = path.Join(StoreClusterPrefix, "members")
|
||||
storeRemovedMembersPrefix = path.Join(StoreClusterPrefix, "removed_members")
|
||||
)
|
||||
|
||||
// RaftAttributes represents the raft related attributes of an etcd member.
|
||||
type RaftAttributes struct {
|
||||
// TODO(philips): ensure these are URLs
|
||||
@ -150,17 +155,17 @@ func nodeToMember(n *store.NodeExtern) (*Member, error) {
|
||||
}
|
||||
|
||||
// implement sort by ID interface
|
||||
type SortableMemberSlice []*Member
|
||||
type MembersByID []*Member
|
||||
|
||||
func (s SortableMemberSlice) Len() int { return len(s) }
|
||||
func (s SortableMemberSlice) Less(i, j int) bool { return s[i].ID < s[j].ID }
|
||||
func (s SortableMemberSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
||||
func (ms MembersByID) Len() int { return len(ms) }
|
||||
func (ms MembersByID) Less(i, j int) bool { return ms[i].ID < ms[j].ID }
|
||||
func (ms MembersByID) Swap(i, j int) { ms[i], ms[j] = ms[j], ms[i] }
|
||||
|
||||
// implement sort by peer urls interface
|
||||
type SortableMemberSliceByPeerURLs []*Member
|
||||
type MembersByPeerURLs []*Member
|
||||
|
||||
func (p SortableMemberSliceByPeerURLs) Len() int { return len(p) }
|
||||
func (p SortableMemberSliceByPeerURLs) Less(i, j int) bool {
|
||||
return p[i].PeerURLs[0] < p[j].PeerURLs[0]
|
||||
func (ms MembersByPeerURLs) Len() int { return len(ms) }
|
||||
func (ms MembersByPeerURLs) Less(i, j int) bool {
|
||||
return ms[i].PeerURLs[0] < ms[j].PeerURLs[0]
|
||||
}
|
||||
func (p SortableMemberSliceByPeerURLs) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
|
||||
func (ms MembersByPeerURLs) Swap(i, j int) { ms[i], ms[j] = ms[j], ms[i] }
|
||||
|
@ -66,9 +66,6 @@ const (
|
||||
)
|
||||
|
||||
var (
|
||||
storeMembersPrefix = path.Join(StoreClusterPrefix, "members")
|
||||
storeRemovedMembersPrefix = path.Join(StoreClusterPrefix, "removed_members")
|
||||
|
||||
storeMemberAttributeRegexp = regexp.MustCompile(path.Join(storeMembersPrefix, "[[:xdigit:]]{1,16}", attributesSuffix))
|
||||
)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user