|
|
@@ -352,15 +352,17 @@ func (p *participant) apply(ents []raft.Entry) {
|
|
|
log.Printf("id=%x participant.cluster.addNode unmarshalErr=\"%v\"\n", p.id, err)
|
|
|
break
|
|
|
}
|
|
|
+ pp := path.Join(v2machineKVPrefix, fmt.Sprint(cfg.NodeId))
|
|
|
+ if ev, _ := p.Store.Get(pp, false, false); ev != nil {
|
|
|
+ log.Printf("id=%x participant.cluster.addNode err=existed value=%q", p.id, *ev.Node.Value)
|
|
|
+ break
|
|
|
+ }
|
|
|
peer, err := p.peerHub.add(cfg.NodeId, cfg.Addr)
|
|
|
if err != nil {
|
|
|
log.Printf("id=%x participant.cluster.addNode peerAddErr=\"%v\"\n", p.id, err)
|
|
|
break
|
|
|
}
|
|
|
- if p.id != cfg.NodeId {
|
|
|
- peer.participate()
|
|
|
- }
|
|
|
- pp := path.Join(v2machineKVPrefix, fmt.Sprint(cfg.NodeId))
|
|
|
+ peer.participate()
|
|
|
p.Store.Set(pp, false, fmt.Sprintf("raft=%v&etcd=%v", cfg.Addr, string(cfg.Context)), store.Permanent)
|
|
|
if p.id == cfg.NodeId {
|
|
|
p.raftPubAddr = cfg.Addr
|