Browse Source

etcdserver: generate id when new cluster

Yicheng Qin 11 years ago
parent
commit
3d243baacd
3 changed files with 5 additions and 11 deletions
  1. 3 2
      etcdserver/cluster.go
  2. 2 8
      etcdserver/cluster_test.go
  3. 0 1
      etcdserver/server.go

+ 3 - 2
etcdserver/cluster.go

@@ -71,6 +71,7 @@ func NewClusterFromString(name string, cluster string) (*Cluster, error) {
 		}
 		}
 		c.members[m.ID] = m
 		c.members[m.ID] = m
 	}
 	}
+	c.genID()
 	return c, nil
 	return c, nil
 }
 }
 
 
@@ -89,6 +90,7 @@ func NewClusterFromMemberInfos(name string, infos []MemberInfo) (*Cluster, error
 		}
 		}
 		c.members[m.ID] = m
 		c.members[m.ID] = m
 	}
 	}
+	c.genID()
 	return c, nil
 	return c, nil
 }
 }
 
 
@@ -202,13 +204,12 @@ func (c Cluster) String() string {
 	return strings.Join(sl, ",")
 	return strings.Join(sl, ",")
 }
 }
 
 
-func (c *Cluster) GenID(salt []byte) {
+func (c *Cluster) genID() {
 	mIDs := c.MemberIDs()
 	mIDs := c.MemberIDs()
 	b := make([]byte, 8*len(mIDs))
 	b := make([]byte, 8*len(mIDs))
 	for i, id := range mIDs {
 	for i, id := range mIDs {
 		binary.BigEndian.PutUint64(b[8*i:], id)
 		binary.BigEndian.PutUint64(b[8*i:], id)
 	}
 	}
-	b = append(b, salt...)
 	hash := sha1.Sum(b)
 	hash := sha1.Sum(b)
 	c.id = binary.BigEndian.Uint64(hash[:8])
 	c.id = binary.BigEndian.Uint64(hash[:8])
 }
 }

+ 2 - 8
etcdserver/cluster_test.go

@@ -286,7 +286,7 @@ func TestClusterGenID(t *testing.T) {
 		newTestMember(2, nil, "", nil),
 		newTestMember(2, nil, "", nil),
 	})
 	})
 
 
-	cs.GenID(nil)
+	cs.genID()
 	if cs.ID() == 0 {
 	if cs.ID() == 0 {
 		t.Fatalf("cluster.ID = %v, want not 0", cs.ID())
 		t.Fatalf("cluster.ID = %v, want not 0", cs.ID())
 	}
 	}
@@ -294,13 +294,7 @@ func TestClusterGenID(t *testing.T) {
 
 
 	cs.SetStore(&storeRecorder{})
 	cs.SetStore(&storeRecorder{})
 	cs.AddMember(newTestMemberp(3, nil, "", nil))
 	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 {
 	if cs.ID() == previd {
 		t.Fatalf("cluster.ID = %v, want not %v", cs.ID(), previd)
 		t.Fatalf("cluster.ID = %v, want not %v", cs.ID(), previd)
 	}
 	}

+ 0 - 1
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
 	// TODO: remove the discoveryURL when it becomes part of the source for
 	// generating nodeID.
 	// generating nodeID.
 	member := cfg.Cluster.MemberByName(cfg.Name)
 	member := cfg.Cluster.MemberByName(cfg.Name)
-	cfg.Cluster.GenID([]byte(cfg.DiscoveryURL))
 	metadata := pbutil.MustMarshal(&pb.Metadata{NodeID: member.ID, ClusterID: cfg.Cluster.ID()})
 	metadata := pbutil.MustMarshal(&pb.Metadata{NodeID: member.ID, 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)