code: func (is *InfoSyncer) storeServerInfo(ctx context.Context) error {
  	if is.etcdCli == nil {
  		return nil
  	}
  	infoBuf, err := json.Marshal(is.info)
  	if err != nil {
  		return errors.Trace(err)
  	}
  	str := string(hack.String(infoBuf))
  	err = ddl.PutKVToEtcd(ctx, is.etcdCli, keyOpDefaultRetryCnt, is.serverInfoPath, str, clientv3.WithLease(is.session.Lease()))
  	return err
  }
docs: // storeServerInfo stores self server static information to etcd.