Merge pull request #2007 from xiang90/cluster_clean

etcdserver: cleanup cluster.go
This commit is contained in:
Xiang Li 2014-12-25 21:03:40 -08:00
commit 60d25635c4
2 changed files with 8 additions and 7 deletions

View File

@ -328,24 +328,25 @@ func (c *Cluster) RemoveMember(id types.ID) {
c.removed[id] = true c.removed[id] = true
} }
func (c *Cluster) UpdateMemberAttributes(id types.ID, attr Attributes) { func (c *Cluster) UpdateAttributes(id types.ID, attr Attributes) {
c.Lock() c.Lock()
defer c.Unlock() defer c.Unlock()
c.members[id].Attributes = attr c.members[id].Attributes = attr
// TODO: update store in this function
} }
func (c *Cluster) UpdateMember(nm *Member) { func (c *Cluster) UpdateRaftAttributes(id types.ID, raftAttr RaftAttributes) {
c.Lock() c.Lock()
defer c.Unlock() defer c.Unlock()
b, err := json.Marshal(nm.RaftAttributes) b, err := json.Marshal(raftAttr)
if err != nil { if err != nil {
log.Panicf("marshal raftAttributes should never fail: %v", err) log.Panicf("marshal raftAttributes should never fail: %v", err)
} }
p := path.Join(memberStoreKey(nm.ID), raftAttributesSuffix) p := path.Join(memberStoreKey(id), raftAttributesSuffix)
if _, err := c.store.Update(p, string(b), store.Permanent); err != nil { if _, err := c.store.Update(p, string(b), store.Permanent); err != nil {
log.Panicf("update raftAttributes should never fail: %v", err) log.Panicf("update raftAttributes should never fail: %v", err)
} }
c.members[nm.ID].RaftAttributes = nm.RaftAttributes c.members[id].RaftAttributes = raftAttr
} }
func membersFromStore(st store.Store) (map[types.ID]*Member, map[types.ID]bool) { func membersFromStore(st store.Store) (map[types.ID]*Member, map[types.ID]bool) {

View File

@ -717,7 +717,7 @@ func (s *EtcdServer) applyRequest(r pb.Request) Response {
if err := json.Unmarshal([]byte(r.Val), &attr); err != nil { if err := json.Unmarshal([]byte(r.Val), &attr); err != nil {
log.Panicf("unmarshal %s should never fail: %v", r.Val, err) log.Panicf("unmarshal %s should never fail: %v", r.Val, err)
} }
s.Cluster.UpdateMemberAttributes(id, attr) s.Cluster.UpdateAttributes(id, attr)
} }
return f(s.store.Set(r.Path, r.Dir, r.Val, expr)) return f(s.store.Set(r.Path, r.Dir, r.Val, expr))
} }
@ -783,7 +783,7 @@ func (s *EtcdServer) applyConfChange(cc raftpb.ConfChange, confState *raftpb.Con
if cc.NodeID != uint64(m.ID) { if cc.NodeID != uint64(m.ID) {
log.Panicf("nodeID should always be equal to member ID") log.Panicf("nodeID should always be equal to member ID")
} }
s.Cluster.UpdateMember(m) s.Cluster.UpdateRaftAttributes(m.ID, m.RaftAttributes)
if m.ID == s.id { if m.ID == s.id {
log.Printf("etcdserver: update local member %s %v in cluster %s", m.ID, m.PeerURLs, s.Cluster.ID()) log.Printf("etcdserver: update local member %s %v in cluster %s", m.ID, m.PeerURLs, s.Cluster.ID())
} else { } else {