From 3d243baacd0d7635f7e2496200668babd8aab8d2 Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Thu, 23 Oct 2014 11:50:15 -0700 Subject: [PATCH] etcdserver: generate id when new cluster --- etcdserver/cluster.go | 5 +++-- etcdserver/cluster_test.go | 10 ++-------- etcdserver/server.go | 1 - 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/etcdserver/cluster.go b/etcdserver/cluster.go index fb8c0f0cf..1fe1d31db 100644 --- a/etcdserver/cluster.go +++ b/etcdserver/cluster.go @@ -71,6 +71,7 @@ func NewClusterFromString(name string, cluster string) (*Cluster, error) { } c.members[m.ID] = m } + c.genID() return c, nil } @@ -89,6 +90,7 @@ func NewClusterFromMemberInfos(name string, infos []MemberInfo) (*Cluster, error } c.members[m.ID] = m } + c.genID() return c, nil } @@ -202,13 +204,12 @@ func (c Cluster) String() string { return strings.Join(sl, ",") } -func (c *Cluster) GenID(salt []byte) { +func (c *Cluster) genID() { mIDs := c.MemberIDs() b := make([]byte, 8*len(mIDs)) for i, id := range mIDs { binary.BigEndian.PutUint64(b[8*i:], id) } - b = append(b, salt...) hash := sha1.Sum(b) c.id = binary.BigEndian.Uint64(hash[:8]) } diff --git a/etcdserver/cluster_test.go b/etcdserver/cluster_test.go index 6e54cdcdc..6c64b7b73 100644 --- a/etcdserver/cluster_test.go +++ b/etcdserver/cluster_test.go @@ -286,7 +286,7 @@ func TestClusterGenID(t *testing.T) { newTestMember(2, nil, "", nil), }) - cs.GenID(nil) + cs.genID() if cs.ID() == 0 { t.Fatalf("cluster.ID = %v, want not 0", cs.ID()) } @@ -294,13 +294,7 @@ func TestClusterGenID(t *testing.T) { cs.SetStore(&storeRecorder{}) cs.AddMember(newTestMemberp(3, nil, "", nil)) - cs.GenID(nil) - if cs.ID() == previd { - t.Fatalf("cluster.ID = %v, want not %v", cs.ID(), previd) - } - previd = cs.ID() - - cs.GenID([]byte("http://discovery.etcd.io/12345678")) + cs.genID() if cs.ID() == previd { t.Fatalf("cluster.ID = %v, want not %v", cs.ID(), previd) } diff --git a/etcdserver/server.go b/etcdserver/server.go index 43c85d59f..86f28187f 100644 --- a/etcdserver/server.go +++ b/etcdserver/server.go @@ -647,7 +647,6 @@ func startNode(cfg *ServerConfig) (id uint64, n raft.Node, w *wal.WAL) { // TODO: remove the discoveryURL when it becomes part of the source for // generating nodeID. member := cfg.Cluster.MemberByName(cfg.Name) - cfg.Cluster.GenID([]byte(cfg.DiscoveryURL)) metadata := pbutil.MustMarshal(&pb.Metadata{NodeID: member.ID, ClusterID: cfg.Cluster.ID()}) if w, err = wal.Create(cfg.WALDir(), metadata); err != nil { log.Fatal(err)