logger.Error("Failed to create request","error",err,"url",esUrl.String())
logger.Error("Failed to create request","error",err,"url",healthStatusUrl.String())
return&backend.CheckHealthResult{
return&backend.CheckHealthResult{
Status:backend.HealthStatusUnknown,
Status:backend.HealthStatusUnknown,
Message:"Failed to create request",
Message:"Failed to create request",
},err
},nil
}
}
start:=time.Now()
start:=time.Now()
logger.Debug("Sending healthcheck request to Elasticsearch","url",esUrl.String())
logger.Debug("Sending healthcheck request to Elasticsearch","url",healthStatusUrl.String())
response,err:=ds.HTTPClient.Do(request)
response,err:=ds.HTTPClient.Do(request)
iferr!=nil{
iferr!=nil{
logger.Error("Failed to do healthcheck request","error",err,"url",esUrl.String())
logger.Error("Failed to connect to Elasticsearch","error",err,"url",healthStatusUrl.String())
ifbackend.IsDownstreamHTTPError(err){
err=errorsource.DownstreamError(err,false)
}
return&backend.CheckHealthResult{
return&backend.CheckHealthResult{
Status:backend.HealthStatusUnknown,
Status:backend.HealthStatusError,
Message:"Failed to do healthcheck request",
Message:"Health check failed: Failed to connect to Elasticsearch",
},err
},nil
}
}
ifresponse.StatusCode==http.StatusRequestTimeout{
ifresponse.StatusCode==http.StatusRequestTimeout{
return&backend.CheckHealthResult{
return&backend.CheckHealthResult{
Status:backend.HealthStatusError,
Status:backend.HealthStatusError,
Message:"Elasticsearch data source is not healthy",
Message:"Health check failed: Elasticsearch data source is not healthy. Request timed out",
},nil
},nil
}
}
ifresponse.StatusCode>=400{
ifresponse.StatusCode>=400{
errWithSource:=errorsource.SourceError(backend.ErrorSourceFromHTTPStatus(response.StatusCode),fmt.Errorf("unexpected status code: %d",response.StatusCode),false)
return&backend.CheckHealthResult{
return&backend.CheckHealthResult{
Status:backend.HealthStatusError,
Status:backend.HealthStatusError,
Message:fmt.Sprintf("Elasticsearch data source is not healthy. Status: %s",response.Status),
Message:fmt.Sprintf("Health check failed: Elasticsearch data source is not healthy. Status: %s",response.Status),
},errWithSource
},nil
}
}
logger.Info("Response received from Elasticsearch","statusCode",response.StatusCode,"status","ok","duration",time.Since(start))
logger.Info("Response received from Elasticsearch","statusCode",response.StatusCode,"status","ok","duration",time.Since(start))