Browse Source

etcdserver: refactore member.go

Xiang Li 10 years ago
parent
commit
4a72d3a8bb
4 changed files with 24 additions and 22 deletions
  1. 6 6
      etcdserver/cluster.go
  2. 4 4
      etcdserver/etcdhttp/http_test.go
  3. 14 9
      etcdserver/member.go
  4. 0 3
      etcdserver/server.go

+ 6 - 6
etcdserver/cluster.go

@@ -109,12 +109,12 @@ func (c *cluster) ID() types.ID { return c.id }
 func (c *cluster) Members() []*Member {
 func (c *cluster) Members() []*Member {
 	c.Lock()
 	c.Lock()
 	defer c.Unlock()
 	defer c.Unlock()
-	var sms SortableMemberSlice
+	var ms MembersByID
 	for _, m := range c.members {
 	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 {
 func (c *cluster) Member(id types.ID) *Member {
@@ -409,8 +409,8 @@ func ValidateClusterAndAssignIDs(local *cluster, existing *cluster) error {
 	if len(ems) != len(lms) {
 	if len(ems) != len(lms) {
 		return fmt.Errorf("member count is unequal")
 		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 {
 	for i := range ems {
 		// TODO: Remove URLStringsEqual after improvement of using hostnames #2150 #2123
 		// TODO: Remove URLStringsEqual after improvement of using hostnames #2150 #2123

+ 4 - 4
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) ID() types.ID         { return types.ID(c.id) }
 func (c *fakeCluster) ClientURLs() []string { return c.clientURLs }
 func (c *fakeCluster) ClientURLs() []string { return c.clientURLs }
 func (c *fakeCluster) Members() []*etcdserver.Member {
 func (c *fakeCluster) Members() []*etcdserver.Member {
-	var sms etcdserver.SortableMemberSlice
+	var ms etcdserver.MembersByID
 	for _, m := range c.members {
 	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) Member(id types.ID) *etcdserver.Member { return c.members[uint64(id)] }
 func (c *fakeCluster) IsIDRemoved(id types.ID) bool          { return false }
 func (c *fakeCluster) IsIDRemoved(id types.ID) bool          { return false }

+ 14 - 9
etcdserver/member.go

@@ -29,6 +29,11 @@ import (
 	"github.com/coreos/etcd/store"
 	"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.
 // RaftAttributes represents the raft related attributes of an etcd member.
 type RaftAttributes struct {
 type RaftAttributes struct {
 	// TODO(philips): ensure these are URLs
 	// TODO(philips): ensure these are URLs
@@ -150,17 +155,17 @@ func nodeToMember(n *store.NodeExtern) (*Member, error) {
 }
 }
 
 
 // implement sort by ID interface
 // 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
 // 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] }

+ 0 - 3
etcdserver/server.go

@@ -66,9 +66,6 @@ const (
 )
 )
 
 
 var (
 var (
-	storeMembersPrefix        = path.Join(StoreClusterPrefix, "members")
-	storeRemovedMembersPrefix = path.Join(StoreClusterPrefix, "removed_members")
-
 	storeMemberAttributeRegexp = regexp.MustCompile(path.Join(storeMembersPrefix, "[[:xdigit:]]{1,16}", attributesSuffix))
 	storeMemberAttributeRegexp = regexp.MustCompile(path.Join(storeMembersPrefix, "[[:xdigit:]]{1,16}", attributesSuffix))
 )
 )