mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdserver: generate id when new cluster
This commit is contained in:
parent
d2c4e981ed
commit
3d243baacd
@ -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])
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user