code: func (n *Node) updateNodeBlocking(ctx context.Context, id uint64, addr string) error {
  	m := n.cluster.GetMember(id)
  	if m == nil {
  		return errors.Errorf("member %x is not found for update", id)
  	}
  	node := api.RaftMember{
  		RaftID: m.RaftID,
  		NodeID: m.NodeID,
  		Addr:   addr,
  	}
  
  	meta, err := node.Marshal()
  	if err != nil {
  		return err
  	}
  
  	cc := raftpb.ConfChange{
  		Type:    raftpb.ConfChangeUpdateNode,
  		NodeID:  id,
  		Context: meta,
  	}
  
  	// Wait for a raft round to process the configuration change
  	return n.configure(ctx, cc)
  }
docs: // updateNodeBlocking runs synchronous job to update node address in whole cluster.