code: func (h allServerInfoHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
  	do, err := session.GetDomain(h.Store.(kv.Storage))
  	if err != nil {
  		writeError(w, errors.New("create session error"))
  		log.Error(err)
  		return
  	}
  	ctx := context.Background()
  	allServersInfo, err := do.InfoSyncer().GetAllServerInfo(ctx)
  	if err != nil {
  		writeError(w, errors.New("ddl server information not found"))
  		log.Error(err)
  		return
  	}
  	ctx, cancel := context.WithTimeout(ctx, 3*time.Second)
  	ownerID, err := do.DDL().OwnerManager().GetOwnerID(ctx)
  	cancel()
  	if err != nil {
  		writeError(w, errors.New("ddl server information not found"))
  		log.Error(err)
  		return
  	}
  	allVersionsMap := map[domain.ServerVersionInfo]struct{}{}
  	allVersions := make([]domain.ServerVersionInfo, 0, len(allServersInfo))
  	for _, v := range allServersInfo {
  		if _, ok := allVersionsMap[v.ServerVersionInfo]; ok {
  			continue
  		}
  		allVersionsMap[v.ServerVersionInfo] = struct{}{}
  		allVersions = append(allVersions, v.ServerVersionInfo)
  	}
  	clusterInfo := clusterServerInfo{
  		ServersNum: len(allServersInfo),
  		OwnerID:    ownerID,
  		// len(allVersions) = 1 indicates there has only 1 tidb version in cluster, so all server versions are consistent.
  		IsAllServerVersionConsistent: len(allVersions) == 1,
  		AllServersInfo:               allServersInfo,
  	}
  	// if IsAllServerVersionConsistent is false, return the all tidb servers version.
  	if !clusterInfo.IsAllServerVersionConsistent {
  		clusterInfo.AllServersDiffVersions = allVersions
  	}
  	writeData(w, clusterInfo)
  }
docs: // ServeHTTP handles request of all ddl servers info.