in internal/agentcfg/elasticsearch.go [300:347]
func (f *ElasticsearchFetcher) singlePageRefresh(ctx context.Context, scrollID string) (cacheResult, error) {
var result cacheResult
var req *http.Request
var err error
var resp *http.Response
switch scrollID {
case "":
req, err = http.NewRequestWithContext(ctx, http.MethodPost, "/"+ElasticsearchIndexName+"/_search", nil)
if err != nil {
return result, err
}
q := req.URL.Query()
q.Set("scroll", strconv.FormatInt(f.cacheDuration.Milliseconds(), 10)+"ms")
q.Set("size", strconv.FormatInt(int64(f.searchSize), 10))
req.URL.RawQuery = q.Encode()
resp, err = f.client.Perform(req)
default:
req, err = http.NewRequestWithContext(ctx, http.MethodPost, "/_search/scroll", nil)
if err != nil {
return result, err
}
q := req.URL.Query()
q.Set("scroll", strconv.FormatInt(f.cacheDuration.Milliseconds(), 10)+"ms")
q.Set("scroll_id", scrollID)
req.URL.RawQuery = q.Encode()
resp, err = f.client.Perform(req)
}
if err != nil {
return result, err
}
defer resp.Body.Close()
if resp.StatusCode >= http.StatusBadRequest {
// Elasticsearch returns 401 on unauthorized requests and 403 on insufficient permission
if resp.StatusCode == http.StatusUnauthorized || resp.StatusCode == http.StatusForbidden {
f.invalidESCfg.Store(true)
}
bodyBytes, err := io.ReadAll(resp.Body)
if err == nil {
f.logger.Debugf("refresh cache elasticsearch returned status %d: %s", resp.StatusCode, string(bodyBytes))
}
return result, fmt.Errorf("refresh cache elasticsearch returned status %d", resp.StatusCode)
}
return result, json.NewDecoder(resp.Body).Decode(&result)
}