mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Elasticsearch: Replace error source http client with a new error source methods (#96570)
* Elasticsearch: Replace error source http client with methods * Update * Update * Update tests * Update * Update * Update pkg/tsdb/elasticsearch/data_query.go Co-authored-by: Nathan Vērzemnieks <njvrzm@gmail.com> * Trigger build --------- Co-authored-by: Nathan Vērzemnieks <njvrzm@gmail.com>
This commit is contained in:
parent
1366197522
commit
d00c4fd35a
@ -77,10 +77,17 @@ func (e *elasticsearchDataQuery) execute() (*backend.QueryDataResponse, error) {
|
||||
e.logger.Info("Prepared request", "queriesLength", len(queries), "duration", time.Since(start), "stage", es.StagePrepareRequest)
|
||||
res, err := e.client.ExecuteMultisearch(req)
|
||||
if err != nil {
|
||||
// We are returning error containing the source that was added through errorsource.Middleware
|
||||
if backend.IsDownstreamHTTPError(err) {
|
||||
err = errorsource.DownstreamError(err, false)
|
||||
}
|
||||
return errorsource.AddErrorToResponse(e.dataQueries[0].RefID, response, err), nil
|
||||
}
|
||||
|
||||
if res.Status >= 400 {
|
||||
errWithSource := errorsource.SourceError(backend.ErrorSourceFromHTTPStatus(res.Status), fmt.Errorf("unexpected status code: %d", res.Status), false)
|
||||
return errorsource.AddErrorToResponse(e.dataQueries[0].RefID, response, errWithSource), nil
|
||||
}
|
||||
|
||||
return parseResponse(e.ctx, res.Responses, queries, e.client.GetConfiguredFields(), e.keepLabelsInResponse, e.logger)
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,6 @@ import (
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt"
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
|
||||
exp "github.com/grafana/grafana-plugin-sdk-go/experimental/errorsource"
|
||||
exphttpclient "github.com/grafana/grafana-plugin-sdk-go/experimental/errorsource/httpclient"
|
||||
|
||||
es "github.com/grafana/grafana/pkg/tsdb/elasticsearch/client"
|
||||
)
|
||||
@ -90,10 +89,7 @@ func newInstanceSettings(httpClientProvider *httpclient.Provider) datasource.Ins
|
||||
httpCliOpts.SigV4.Service = "es"
|
||||
}
|
||||
|
||||
// set the default middlewars from the httpClientProvider
|
||||
httpCliOpts.Middlewares = httpClientProvider.Opts.Middlewares
|
||||
// enable experimental http client to support errors with source
|
||||
httpCli, err := exphttpclient.New(httpCliOpts)
|
||||
httpCli, err := httpClientProvider.New(httpCliOpts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import (
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||
"github.com/grafana/grafana-plugin-sdk-go/experimental/errorsource"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
@ -43,7 +44,8 @@ func TestErrorAvgMissingField(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// FIXME: we should return the received error message
|
||||
require.Len(t, result.response.Responses, 0)
|
||||
require.Equal(t, "unexpected status code: 400", result.response.Responses["A"].Error.Error())
|
||||
require.Equal(t, backend.ErrorSourceDownstream, result.response.Responses["A"].ErrorSource)
|
||||
}
|
||||
|
||||
func TestErrorAvgMissingFieldNoDetailedErrors(t *testing.T) {
|
||||
@ -71,7 +73,7 @@ func TestErrorAvgMissingFieldNoDetailedErrors(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// FIXME: we should return the received error message
|
||||
require.Len(t, result.response.Responses, 0)
|
||||
require.Equal(t, "unexpected status code: 400", result.response.Responses["A"].Error.Error())
|
||||
}
|
||||
|
||||
func TestErrorTooManyDateHistogramBuckets(t *testing.T) {
|
||||
|
Loading…
Reference in New Issue
Block a user