Merge pull request #2307 from xiang90/refactor_cluster

etcdserver: getOtherPeerURLs -> getRemotePeerURLs
release-2.0
Xiang Li 2015-02-14 20:59:38 -08:00
commit 29f05bb217
4 changed files with 11 additions and 13 deletions

View File

@ -249,7 +249,7 @@ func startProxy(cfg *config) error {
}
uf := func() []string {
gcls, err := etcdserver.GetClusterFromPeers(peerURLs, tr)
gcls, err := etcdserver.GetClusterFromRemotePeers(peerURLs, tr)
// TODO: remove the 2nd check when we fix GetClusterFromPeers
// GetClusterFromPeers should not return nil error with an invaild empty cluster
if err != nil {

View File

@ -29,8 +29,7 @@ import (
// isMemberBootstrapped tries to check if the given member has been bootstrapped
// in the given cluster.
func isMemberBootstrapped(cl *Cluster, member string, tr *http.Transport) bool {
us := getOtherPeerURLs(cl, member)
rcl, err := getClusterFromPeers(us, false, tr)
rcl, err := getClusterFromRemotePeers(getRemotePeerURLs(cl, member), false, tr)
if err != nil {
return false
}
@ -45,17 +44,17 @@ func isMemberBootstrapped(cl *Cluster, member string, tr *http.Transport) bool {
return false
}
// GetClusterFromPeers takes a set of URLs representing etcd peers, and
// GetClusterFromRemotePeers takes a set of URLs representing etcd peers, and
// attempts to construct a Cluster by accessing the members endpoint on one of
// these URLs. The first URL to provide a response is used. If no URLs provide
// a response, or a Cluster cannot be successfully created from a received
// response, an error is returned.
func GetClusterFromPeers(urls []string, tr *http.Transport) (*Cluster, error) {
return getClusterFromPeers(urls, true, tr)
func GetClusterFromRemotePeers(urls []string, tr *http.Transport) (*Cluster, error) {
return getClusterFromRemotePeers(urls, true, tr)
}
// If logerr is true, it prints out more error messages.
func getClusterFromPeers(urls []string, logerr bool, tr *http.Transport) (*Cluster, error) {
func getClusterFromRemotePeers(urls []string, logerr bool, tr *http.Transport) (*Cluster, error) {
cc := &http.Client{
Transport: tr,
Timeout: time.Second,
@ -94,12 +93,12 @@ func getClusterFromPeers(urls []string, logerr bool, tr *http.Transport) (*Clust
return nil, fmt.Errorf("etcdserver: could not retrieve cluster information from the given urls")
}
// getOtherPeerURLs returns peer urls of other members in the cluster. The
// getRemotePeerURLs returns peer urls of remote members in the cluster. The
// returned list is sorted in ascending lexicographical order.
func getOtherPeerURLs(cl ClusterInfo, self string) []string {
func getRemotePeerURLs(cl ClusterInfo, local string) []string {
us := make([]string, 0)
for _, m := range cl.Members() {
if m.Name == self {
if m.Name == local {
continue
}
us = append(us, m.PeerURLs...)

View File

@ -157,8 +157,7 @@ func NewServer(cfg *ServerConfig) (*EtcdServer, error) {
switch {
case !haveWAL && !cfg.NewCluster:
us := getOtherPeerURLs(cfg.Cluster, cfg.Name)
existingCluster, err := GetClusterFromPeers(us, cfg.Transport)
existingCluster, err := GetClusterFromRemotePeers(getRemotePeerURLs(cfg.Cluster, cfg.Name), cfg.Transport)
if err != nil {
return nil, fmt.Errorf("cannot fetch cluster info from peer urls: %v", err)
}

View File

@ -1135,7 +1135,7 @@ func TestGetOtherPeerURLs(t *testing.T) {
}
for i, tt := range tests {
cl := NewClusterFromMembers("", types.ID(0), tt.membs)
urls := getOtherPeerURLs(cl, tt.self)
urls := getRemotePeerURLs(cl, tt.self)
if !reflect.DeepEqual(urls, tt.wurls) {
t.Errorf("#%d: urls = %+v, want %+v", i, urls, tt.wurls)
}