diff --git a/etcdserver/cluster.go b/etcdserver/cluster.go index 1cee2683f..1a12831bf 100644 --- a/etcdserver/cluster.go +++ b/etcdserver/cluster.go @@ -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 { if !reflect.DeepEqual(ems[i].PeerURLs, lms[i].PeerURLs) { diff --git a/etcdserver/etcdhttp/http_test.go b/etcdserver/etcdhttp/http_test.go index 9dbc08674..f6d760c43 100644 --- a/etcdserver/etcdhttp/http_test.go +++ b/etcdserver/etcdhttp/http_test.go @@ -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 } diff --git a/etcdserver/member.go b/etcdserver/member.go index aa125163f..2aee85aa1 100644 --- a/etcdserver/member.go +++ b/etcdserver/member.go @@ -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] } diff --git a/etcdserver/server.go b/etcdserver/server.go index 32086fa3d..4ed40cb78 100644 --- a/etcdserver/server.go +++ b/etcdserver/server.go @@ -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)) )