Browse Source

first round of comments

Conflicts:
	etcdserver/config.go
	etcdserver/config_test.go
	etcdserver/server.go
	main.go
Barak Michener 11 years ago
parent
commit
1ca7c031ff
5 changed files with 35 additions and 40 deletions
  1. 4 5
      etcdserver/config.go
  2. 1 3
      etcdserver/config_test.go
  3. 8 8
      etcdserver/server.go
  4. 3 1
      integration/cluster_test.go
  5. 19 23
      main.go

+ 4 - 5
etcdserver/config.go

@@ -27,7 +27,8 @@ import (
 
 
 // ServerConfig holds the configuration of etcd as taken from the command line or discovery.
 // ServerConfig holds the configuration of etcd as taken from the command line or discovery.
 type ServerConfig struct {
 type ServerConfig struct {
-	LocalMember  Member
+	NodeID       uint64
+	Name         string
 	DiscoveryURL string
 	DiscoveryURL string
 	ClientURLs   types.URLs
 	ClientURLs   types.URLs
 	DataDir      string
 	DataDir      string
@@ -47,14 +48,14 @@ func (c *ServerConfig) VerifyBootstrapConfig() error {
 	// Make sure the cluster at least contains the local server.
 	// Make sure the cluster at least contains the local server.
 	isOk := false
 	isOk := false
 	for _, m := range c.Cluster.members {
 	for _, m := range c.Cluster.members {
-		if m.ID == c.LocalMember.ID {
+		if m.ID == c.NodeID {
 			isOk = true
 			isOk = true
 		}
 		}
 	}
 	}
 	if !isOk {
 	if !isOk {
 		return fmt.Errorf("couldn't find local ID in cluster config")
 		return fmt.Errorf("couldn't find local ID in cluster config")
 	}
 	}
-	if c.LocalMember.ID == raft.None {
+	if c.NodeID == raft.None {
 		return fmt.Errorf("could not use %x as member id", raft.None)
 		return fmt.Errorf("could not use %x as member id", raft.None)
 	}
 	}
 
 
@@ -75,8 +76,6 @@ func (c *ServerConfig) WALDir() string { return path.Join(c.DataDir, "wal") }
 
 
 func (c *ServerConfig) SnapDir() string { return path.Join(c.DataDir, "snap") }
 func (c *ServerConfig) SnapDir() string { return path.Join(c.DataDir, "snap") }
 
 
-func (c *ServerConfig) ID() uint64 { return c.LocalMember.ID }
-
 func (c *ServerConfig) ShouldDiscover() bool {
 func (c *ServerConfig) ShouldDiscover() bool {
 	return c.DiscoveryURL != ""
 	return c.DiscoveryURL != ""
 }
 }

+ 1 - 3
etcdserver/config_test.go

@@ -51,9 +51,7 @@ func TestBootstrapConfigVerify(t *testing.T) {
 		}
 		}
 
 
 		cfg := ServerConfig{
 		cfg := ServerConfig{
-			LocalMember: Member{
-				ID: 0x7350a9cd4dc16f76,
-			},
+			NodeID:       0x7350a9cd4dc16f76,
 			DiscoveryURL: tt.disc,
 			DiscoveryURL: tt.disc,
 			Cluster:      cluster,
 			Cluster:      cluster,
 			ClusterState: tt.clst,
 			ClusterState: tt.clst,

+ 8 - 8
etcdserver/server.go

@@ -180,7 +180,7 @@ func NewServer(cfg *ServerConfig) *EtcdServer {
 			log.Fatalf("etcdserver: %v", err)
 			log.Fatalf("etcdserver: %v", err)
 		}
 		}
 		if cfg.ShouldDiscover() {
 		if cfg.ShouldDiscover() {
-			d, err := discovery.New(cfg.DiscoveryURL, cfg.ID(), cfg.Cluster.String())
+			d, err := discovery.New(cfg.DiscoveryURL, cfg.NodeID, cfg.Cluster.String())
 			if err != nil {
 			if err != nil {
 				log.Fatalf("etcdserver: cannot init discovery %v", err)
 				log.Fatalf("etcdserver: cannot init discovery %v", err)
 			}
 			}
@@ -213,17 +213,17 @@ func NewServer(cfg *ServerConfig) *EtcdServer {
 	cls := &clusterStore{Store: st, id: cid}
 	cls := &clusterStore{Store: st, id: cid}
 
 
 	sstats := &stats.ServerStats{
 	sstats := &stats.ServerStats{
-		Name: cfg.LocalMember.Attributes.Name,
-		ID:   idAsHex(cfg.ID()),
+		Name: cfg.Name,
+		ID:   idAsHex(cfg.NodeID),
 	}
 	}
-	lstats := stats.NewLeaderStats(idAsHex(cfg.ID()))
+	lstats := stats.NewLeaderStats(idAsHex(cfg.NodeID))
 
 
 	s := &EtcdServer{
 	s := &EtcdServer{
 		store:      st,
 		store:      st,
 		node:       n,
 		node:       n,
 		id:         id,
 		id:         id,
 		clusterID:  cid,
 		clusterID:  cid,
-		attributes: Attributes{Name: cfg.LocalMember.Attributes.Name, ClientURLs: cfg.ClientURLs.StringSlice()},
+		attributes: Attributes{Name: cfg.Name, ClientURLs: cfg.ClientURLs.StringSlice()},
 		storage: struct {
 		storage: struct {
 			*wal.WAL
 			*wal.WAL
 			*snap.Snapshotter
 			*snap.Snapshotter
@@ -640,7 +640,7 @@ func startNode(cfg *ServerConfig) (id, cid uint64, n raft.Node, w *wal.WAL) {
 	// TODO: remove the discoveryURL when it becomes part of the source for
 	// TODO: remove the discoveryURL when it becomes part of the source for
 	// generating nodeID.
 	// generating nodeID.
 	cfg.Cluster.GenID([]byte(cfg.DiscoveryURL))
 	cfg.Cluster.GenID([]byte(cfg.DiscoveryURL))
-	metadata := pbutil.MustMarshal(&pb.Metadata{NodeID: cfg.ID(), ClusterID: cfg.Cluster.ID()})
+	metadata := pbutil.MustMarshal(&pb.Metadata{NodeID: cfg.NodeID, ClusterID: cfg.Cluster.ID()})
 	if w, err = wal.Create(cfg.WALDir(), metadata); err != nil {
 	if w, err = wal.Create(cfg.WALDir(), metadata); err != nil {
 		log.Fatal(err)
 		log.Fatal(err)
 	}
 	}
@@ -653,9 +653,9 @@ func startNode(cfg *ServerConfig) (id, cid uint64, n raft.Node, w *wal.WAL) {
 		}
 		}
 		peers[i] = raft.Peer{ID: id, Context: ctx}
 		peers[i] = raft.Peer{ID: id, Context: ctx}
 	}
 	}
-	id, cid = cfg.ID(), cfg.Cluster.ID()
+	id, cid = cfg.NodeID, cfg.Cluster.ID()
 	log.Printf("etcdserver: start node %d in cluster %d", id, cid)
 	log.Printf("etcdserver: start node %d in cluster %d", id, cid)
-	n = raft.StartNode(cfg.ID(), peers, 10, 1)
+	n = raft.StartNode(cfg.NodeID, peers, 10, 1)
 	return
 	return
 }
 }
 
 

+ 3 - 1
integration/cluster_test.go

@@ -103,7 +103,9 @@ func (c *cluster) Launch(t *testing.T) {
 		if err != nil {
 		if err != nil {
 			t.Fatal(err)
 			t.Fatal(err)
 		}
 		}
-		m.LocalMember = *etcdserver.NewMemberFromURLs(c.name(i), listenUrls)
+		localMember := *etcdserver.NewMemberFromURLs(c.name(i), listenUrls)
+		m.NodeID = localMember.ID
+		m.Name = localMember.Name
 		m.ClientURLs, err = types.NewURLs([]string{"http://" + cln.Addr().String()})
 		m.ClientURLs, err = types.NewURLs([]string{"http://" + cln.Addr().String()})
 		if err != nil {
 		if err != nil {
 			t.Fatal(err)
 			t.Fatal(err)

+ 19 - 23
main.go

@@ -167,7 +167,8 @@ func startEtcd(self *etcdserver.Member) {
 		log.Fatal(err.Error())
 		log.Fatal(err.Error())
 	}
 	}
 	cfg := &etcdserver.ServerConfig{
 	cfg := &etcdserver.ServerConfig{
-		LocalMember:  *self,
+		NodeID:       self.ID,
+		Name:         *name,
 		ClientURLs:   acurls,
 		ClientURLs:   acurls,
 		DataDir:      *dir,
 		DataDir:      *dir,
 		SnapCount:    *snapCount,
 		SnapCount:    *snapCount,
@@ -276,11 +277,12 @@ func setupCluster() (*etcdserver.Member, error) {
 	if set["discovery"] && set["initial-cluster"] {
 	if set["discovery"] && set["initial-cluster"] {
 		return nil, fmt.Errorf("both discovery and bootstrap-config are set")
 		return nil, fmt.Errorf("both discovery and bootstrap-config are set")
 	}
 	}
+
+	apurls, err := pkg.URLsFromFlags(flag.CommandLine, "advertise-peer-urls", "addr", peerTLSInfo)
+	if err != nil {
+		return nil, err
+	}
 	if set["discovery"] {
 	if set["discovery"] {
-		apurls, err := pkg.URLsFromFlags(fs, "advertise-peer-urls", "peer-addr", peerTLSInfo)
-		if err != nil {
-			return nil, err
-		}
 		m = etcdserver.NewMemberFromURLs(*name, apurls)
 		m = etcdserver.NewMemberFromURLs(*name, apurls)
 		cluster = etcdserver.NewCluster()
 		cluster = etcdserver.NewCluster()
 		cluster.Add(*m)
 		cluster.Add(*m)
@@ -288,29 +290,23 @@ func setupCluster() (*etcdserver.Member, error) {
 	} else if set["initial-cluster"] {
 	} else if set["initial-cluster"] {
 		// We're statically configured, and cluster has appropriately been set.
 		// We're statically configured, and cluster has appropriately been set.
 		// Try to configure by indexing the static cluster by name.
 		// Try to configure by indexing the static cluster by name.
-		if set["name"] {
-			for _, c := range cluster.Members() {
-				if c.Name == *name {
-					return c, nil
-				}
+		for _, c := range cluster.Members() {
+			if c.Name == *name {
+				return c, nil
 			}
 			}
-			log.Println("etcd: cannot find the passed name", *name, "in initial-cluster. Trying advertise-peer-urls")
 		}
 		}
+		log.Println("etcd: cannot find the passed name", *name, "in initial-cluster. Trying advertise-peer-urls")
+
 		// Try to configure by looking for a matching machine based on the peer urls.
 		// Try to configure by looking for a matching machine based on the peer urls.
-		if set["advertise-peer-urls"] {
-			apurls, err := pkg.URLsFromFlags(flag.CommandLine, "advertise-peer-urls", "addr", peerTLSInfo)
-			if err != nil {
-				return nil, err
-			}
-			m = etcdserver.NewMemberFromURLs(*name, apurls)
-			for _, c := range cluster.Members() {
-				if c.ID == m.ID {
-					return c, nil
-				}
+		m = etcdserver.NewMemberFromURLs(*name, apurls)
+		for _, c := range cluster.Members() {
+			if c.ID == m.ID {
+				return c, nil
 			}
 			}
-			log.Println("etcd: Could not find a matching peer for the local instance in initial-cluster.")
 		}
 		}
+		log.Println("etcd: Could not find a matching peer for the local instance in initial-cluster.")
 		return nil, fmt.Errorf("etcd: Bootstrapping a static cluster, but local name or local peer urls are not defined")
 		return nil, fmt.Errorf("etcd: Bootstrapping a static cluster, but local name or local peer urls are not defined")
 	}
 	}
-	return nil, fmt.Errorf("etcd: Flag configuration not set for discovery or initial-cluster")
+	m = etcdserver.NewMemberFromURLs(*name, apurls)
+	return m, nil
 }
 }