diff --git a/pkg/tsdb/influxdb/flux/executor_test.go b/pkg/tsdb/influxdb/flux/executor_test.go index 42dfd17275cf6..4e72c5dde7cdc 100644 --- a/pkg/tsdb/influxdb/flux/executor_test.go +++ b/pkg/tsdb/influxdb/flux/executor_test.go @@ -24,9 +24,9 @@ import ( "github.com/grafana/grafana/pkg/util" ) -//-------------------------------------------------------------- +// -------------------------------------------------------------- // TestData -- reads result from saved files -//-------------------------------------------------------------- +// -------------------------------------------------------------- // MockRunner reads local file path for testdata. type MockRunner struct { @@ -220,7 +220,8 @@ func TestRealQuery(t *testing.T) { json.Set("organization", "test-org") dsInfo := &models.DatasourceInfo{ - URL: "http://localhost:9999", // NOTE! no api/v2 + URL: "http://localhost:9999", // NOTE! no api/v2 + Timeout: 30 * time.Second, } runner, err := runnerFromDataSource(dsInfo) diff --git a/pkg/tsdb/influxdb/flux/flux.go b/pkg/tsdb/influxdb/flux/flux.go index 4f9fc25f78642..18d2a6f725a30 100644 --- a/pkg/tsdb/influxdb/flux/flux.go +++ b/pkg/tsdb/influxdb/flux/flux.go @@ -17,8 +17,7 @@ var ( ) // Query builds flux queries, executes them, and returns the results. -func Query(ctx context.Context, dsInfo *models.DatasourceInfo, tsdbQuery backend.QueryDataRequest) ( - *backend.QueryDataResponse, error) { +func Query(ctx context.Context, dsInfo *models.DatasourceInfo, tsdbQuery backend.QueryDataRequest) (*backend.QueryDataResponse, error) { logger := glog.FromContext(ctx) tRes := backend.NewQueryDataResponse() logger.Debug("Received a query", "query", tsdbQuery) @@ -76,6 +75,7 @@ func runnerFromDataSource(dsInfo *models.DatasourceInfo) (*runner, error) { } opts := influxdb2.DefaultOptions() opts.HTTPOptions().SetHTTPClient(dsInfo.HTTPClient) + opts.SetHTTPRequestTimeout(uint(dsInfo.Timeout.Seconds())) return &runner{ client: influxdb2.NewClientWithOptions(url, dsInfo.Token, opts), org: org, diff --git a/pkg/tsdb/influxdb/influxdb.go b/pkg/tsdb/influxdb/influxdb.go index 01a7e04437129..0023ee7b384f7 100644 --- a/pkg/tsdb/influxdb/influxdb.go +++ b/pkg/tsdb/influxdb/influxdb.go @@ -84,6 +84,7 @@ func newInstanceSettings(httpClientProvider httpclient.Provider) datasource.Inst MaxSeries: maxSeries, SecureGrpc: true, Token: settings.DecryptedSecureJSONData["token"], + Timeout: opts.Timeouts.Timeout, } return model, nil } diff --git a/pkg/tsdb/influxdb/models/datasource_info.go b/pkg/tsdb/influxdb/models/datasource_info.go index 801ec4d082720..8baf8d2e48b11 100644 --- a/pkg/tsdb/influxdb/models/datasource_info.go +++ b/pkg/tsdb/influxdb/models/datasource_info.go @@ -2,6 +2,7 @@ package models import ( "net/http" + "time" ) type DatasourceInfo struct { @@ -17,6 +18,7 @@ type DatasourceInfo struct { DefaultBucket string `json:"defaultBucket"` Organization string `json:"organization"` MaxSeries int `json:"maxSeries"` + Timeout time.Duration // FlightSQL grpc connection SecureGrpc bool `json:"secureGrpc"`