mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
first round of comments
Conflicts: etcdserver/config.go etcdserver/config_test.go etcdserver/server.go main.go
This commit is contained in:
parent
456d1ebcae
commit
1ca7c031ff
@ -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 != ""
|
||||||
}
|
}
|
||||||
|
@ -51,9 +51,7 @@ func TestBootstrapConfigVerify(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cfg := ServerConfig{
|
cfg := ServerConfig{
|
||||||
LocalMember: Member{
|
NodeID: 0x7350a9cd4dc16f76,
|
||||||
ID: 0x7350a9cd4dc16f76,
|
|
||||||
},
|
|
||||||
DiscoveryURL: tt.disc,
|
DiscoveryURL: tt.disc,
|
||||||
Cluster: cluster,
|
Cluster: cluster,
|
||||||
ClusterState: tt.clst,
|
ClusterState: tt.clst,
|
||||||
|
@ -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,
|
Name: cfg.Name,
|
||||||
ID: idAsHex(cfg.ID()),
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
20
main.go
20
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")
|
||||||
}
|
}
|
||||||
if set["discovery"] {
|
|
||||||
apurls, err := pkg.URLsFromFlags(fs, "advertise-peer-urls", "peer-addr", peerTLSInfo)
|
apurls, err := pkg.URLsFromFlags(flag.CommandLine, "advertise-peer-urls", "addr", peerTLSInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if set["discovery"] {
|
||||||
m = etcdserver.NewMemberFromURLs(*name, apurls)
|
m = etcdserver.NewMemberFromURLs(*name, apurls)
|
||||||
cluster = etcdserver.NewCluster()
|
cluster = etcdserver.NewCluster()
|
||||||
cluster.Add(*m)
|
cluster.Add(*m)
|
||||||
@ -288,20 +290,14 @@ 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() {
|
for _, c := range cluster.Members() {
|
||||||
if c.Name == *name {
|
if c.Name == *name {
|
||||||
return c, nil
|
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)
|
m = etcdserver.NewMemberFromURLs(*name, apurls)
|
||||||
for _, c := range cluster.Members() {
|
for _, c := range cluster.Members() {
|
||||||
if c.ID == m.ID {
|
if c.ID == m.ID {
|
||||||
@ -309,8 +305,8 @@ func setupCluster() (*etcdserver.Member, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
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
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user