prow/jenkins/jenkins.go
func (c *Client) request(method, path string, params url.Values, measure bool) (*http.Response, error) {
	var resp *http.Response
	var err error
	backoff := retryDelay

	urlPath := fmt.Sprintf("%s%s", c.baseURL, path)
	if params != nil {
		urlPath = fmt.Sprintf("%s?%s", urlPath, params.Encode())
	}

	start := time.Now()
	for retries := 0; retries < maxRetries; retries++ {
		resp, err = c.doRequest(method, urlPath)
		if err == nil && resp.StatusCode < 500 {
			break
		} else if err == nil && retries+1 < maxRetries {
			resp.Body.Close()
		}
		// Capture the retry in a metric.
		if measure && c.metrics != nil {
			c.metrics.RequestRetries.Inc()
		}
		time.Sleep(backoff)
		backoff *= 2
	}
	if measure && resp != nil {
		c.measure(method, path, resp.StatusCode, start)
	}
	return resp, err
}
func (c *Client) request(method, path string, params url.Values, measure bool) (*http.Response, error) {
	var resp *http.Response
	var err error
	backoff := retryDelay

	urlPath := fmt.Sprintf("%s%s", c.baseURL, path)
	if params != nil {
		urlPath = fmt.Sprintf("%s?%s", urlPath, params.Encode())
	}

	start := time.Now()
	for retries := 0; retries < maxRetries; retries++ {
		resp, err = c.doRequest(method, urlPath)
		if err == nil && resp.StatusCode < 500 {
			break
		} else if err == nil && retries+1 < maxRetries {
			resp.Body.Close()
		}
		// Capture the retry in a metric.
		if measure && c.metrics != nil {
			c.metrics.RequestRetries.Inc()
		}
		time.Sleep(backoff)
		backoff *= 2
	}
	if measure && resp != nil {
		c.measure(method, path, resp.StatusCode, start)
	}
	return resp, err
}
func ( c * Client ) request ( method , path string , params url . Values , measure bool ) ( * http . Response , error ) { var resp * http . Response var err error backoff := retryDelay urlPath := fmt . Sprintf ( " " , c . baseURL , path ) if params != nil { urlPath = fmt . Sprintf ( " " , urlPath , params . Encode ( ) ) } start := time . Now ( ) for retries := 0 ; retries < maxRetries ; retries ++ { resp , err = c . doRequest ( method , urlPath ) if err == nil && resp . StatusCode < 500 { break } else if err == nil && retries + 1 < maxRetries { resp . Body . Close ( ) } // Capture the retry in a metric. if measure && c . metrics != nil { c . metrics . RequestRetries . Inc ( ) } time . Sleep ( backoff ) backoff *= 2 } if measure && resp != nil { c . measure ( method , path , resp . StatusCode , start ) } return resp , err }
// request executes a request with the provided method and path.
// It retries on transport failures and 500s. measure is provided
// to enable or disable gathering metrics for specific requests
// to avoid high-cardinality metrics.
request executes a request with the provided method and path . It retries on transport failures and 500s . measure is provided to enable or disable gathering metrics for specific requests to avoid high - cardinality metrics .