func()

in agent/agentserver/server.go [215:256]


func (s *Server) readinessCheckHandler(w http.ResponseWriter, r *http.Request) error {
	if s.config.readinessCacheTTL != 0 {
		rCacheValid := s.lastReady.Add(s.config.readinessCacheTTL).After(time.Now())
		if rCacheValid {
			io.WriteString(w, "OK")
			return nil
		}
	}

	var schedErr, buildIndexErr, trackerErr error
	var wg sync.WaitGroup

	wg.Add(3)
	go func() {
		schedErr = s.sched.Probe()
		wg.Done()
	}()
	go func() {
		buildIndexErr = s.tags.CheckReadiness()
		wg.Done()
	}()
	go func() {
		trackerErr = s.ac.CheckReadiness()
		wg.Done()
	}()
	wg.Wait()

	// TODO(akalpakchiev): Replace with errors.Join once upgraded to Go 1.20+.
	errMsgs := []string{}
	for _, err := range []error{schedErr, buildIndexErr, trackerErr} {
		if err != nil {
			errMsgs = append(errMsgs, err.Error())
		}
	}
	if len(errMsgs) != 0 {
		return handler.Errorf("agent not ready: %v", strings.Join(errMsgs, "\n")).Status(http.StatusServiceUnavailable)
	}

	s.lastReady = time.Now()
	io.WriteString(w, "OK")
	return nil
}