InfluxDB: Update feature toggle retrieval (#110941)

* Update how feature toggles are retrieved

* Update wire

* Update Influx registration

* Update test
This commit is contained in:
Andreas Christou
2025-09-11 19:19:10 +01:00
committed by GitHub
parent c28a917871
commit f5457c7909
7 changed files with 18 additions and 25 deletions
@@ -227,7 +227,7 @@ func NewPlugin(pluginID string, cfg *setting.Cfg, httpClientProvider *httpclient
case Graphite:
svc = graphite.ProvideService(httpClientProvider, tracer)
case InfluxDB:
svc = influxdb.ProvideService(httpClientProvider, features)
svc = influxdb.ProvideService(httpClientProvider)
case Loki:
svc = loki.ProvideService(httpClientProvider, tracer)
case OpenTSDB:
+2 -2
View File
@@ -385,7 +385,7 @@ func Initialize(ctx context.Context, cfg *setting.Cfg, opts Options, apiOpts api
elasticsearchService := elasticsearch.ProvideService(httpclientProvider)
tracer := otelTracer()
graphiteService := graphite.ProvideService(httpclientProvider, tracer)
influxdbService := influxdb.ProvideService(httpclientProvider, featureToggles)
influxdbService := influxdb.ProvideService(httpclientProvider)
lokiService := loki.ProvideService(httpclientProvider, tracer)
opentsdbService := opentsdb.ProvideService(httpclientProvider)
prometheusService := prometheus.ProvideService(httpclientProvider)
@@ -976,7 +976,7 @@ func InitializeForTest(ctx context.Context, t sqlutil.ITestDB, testingT interfac
elasticsearchService := elasticsearch.ProvideService(httpclientProvider)
tracer := otelTracer()
graphiteService := graphite.ProvideService(httpclientProvider, tracer)
influxdbService := influxdb.ProvideService(httpclientProvider, featureToggles)
influxdbService := influxdb.ProvideService(httpclientProvider)
lokiService := loki.ProvideService(httpclientProvider, tracer)
opentsdbService := opentsdb.ProvideService(httpclientProvider)
prometheusService := prometheus.ProvideService(httpclientProvider)
@@ -155,7 +155,7 @@ func TestIntegrationPluginManager(t *testing.T) {
cm := cloudmonitoring.ProvideService(hcp)
es := elasticsearch.ProvideService(hcp)
grap := graphite.ProvideService(hcp, tracer)
idb := influxdb.ProvideService(hcp, features)
idb := influxdb.ProvideService(hcp)
lk := loki.ProvideService(hcp, tracer)
otsdb := opentsdb.ProvideService(hcp)
pr := prometheus.ProvideService(hcp)
+3 -4
View File
@@ -10,7 +10,6 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/backend/tracing"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/services/featuremgmt"
"github.com/grafana/grafana/pkg/tsdb/influxdb/flux"
"github.com/grafana/grafana/pkg/tsdb/influxdb/fsql"
"github.com/grafana/grafana/pkg/tsdb/influxdb/influxql"
@@ -37,7 +36,7 @@ func (s *Service) CheckHealth(ctx context.Context, req *backend.CheckHealthReque
case influxVersionFlux:
return CheckFluxHealth(ctx, dsInfo, req)
case influxVersionInfluxQL:
return CheckInfluxQLHealth(ctx, dsInfo, req, s.features)
return CheckInfluxQLHealth(ctx, dsInfo, req)
case influxVersionSQL:
return CheckSQLHealth(ctx, dsInfo, req)
default:
@@ -80,7 +79,7 @@ func CheckFluxHealth(ctx context.Context, dsInfo *models.DatasourceInfo,
return getHealthCheckMessage(logger, "", errors.New("error getting flux query buckets"))
}
func CheckInfluxQLHealth(ctx context.Context, dsInfo *models.DatasourceInfo, req *backend.CheckHealthRequest, features featuremgmt.FeatureToggles) (*backend.CheckHealthResult, error) {
func CheckInfluxQLHealth(ctx context.Context, dsInfo *models.DatasourceInfo, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error) {
logger := logger.FromContext(ctx)
tracer := tracing.DefaultTracer()
resp, err := influxql.Query(ctx, tracer, dsInfo, &backend.QueryDataRequest{
@@ -93,7 +92,7 @@ func CheckInfluxQLHealth(ctx context.Context, dsInfo *models.DatasourceInfo, req
JSON: []byte(`{"query": "SHOW measurements", "rawQuery": true}`),
},
},
}, features)
})
if err != nil {
return getHealthCheckMessage(logger, "error performing influxQL query", err)
}
+4 -7
View File
@@ -10,7 +10,6 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt"
"github.com/grafana/grafana-plugin-sdk-go/backend/tracing"
"github.com/grafana/grafana/pkg/services/featuremgmt"
"github.com/grafana/grafana/pkg/tsdb/influxdb/flux"
"github.com/grafana/grafana/pkg/tsdb/influxdb/fsql"
@@ -23,14 +22,12 @@ import (
var logger log.Logger = log.New("tsdb.influxdb")
type Service struct {
im instancemgmt.InstanceManager
features featuremgmt.FeatureToggles
im instancemgmt.InstanceManager
}
func ProvideService(httpClient httpclient.Provider, features featuremgmt.FeatureToggles) *Service {
func ProvideService(httpClient httpclient.Provider) *Service {
return &Service{
im: datasource.NewInstanceManager(newInstanceSettings(httpClient)),
features: features,
im: datasource.NewInstanceManager(newInstanceSettings(httpClient)),
}
}
@@ -115,7 +112,7 @@ func (s *Service) QueryData(ctx context.Context, req *backend.QueryDataRequest)
case influxVersionFlux:
return flux.Query(ctx, dsInfo, *req)
case influxVersionInfluxQL:
return influxql.Query(ctx, tracer, dsInfo, req, s.features)
return influxql.Query(ctx, tracer, dsInfo, req)
case influxVersionSQL:
return fsql.Query(ctx, dsInfo, *req)
default:
+7 -6
View File
@@ -16,7 +16,6 @@ import (
"go.opentelemetry.io/otel/trace"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/services/featuremgmt"
"github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/tsdb/influxdb/influxql/buffered"
"github.com/grafana/grafana/pkg/tsdb/influxdb/influxql/querydata"
@@ -34,16 +33,18 @@ var (
glog = log.New("tsdb.influx_influxql")
)
func Query(ctx context.Context, tracer trace.Tracer, dsInfo *models.DatasourceInfo, req *backend.QueryDataRequest, features featuremgmt.FeatureToggles) (*backend.QueryDataResponse, error) {
func Query(ctx context.Context, tracer trace.Tracer, dsInfo *models.DatasourceInfo, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error) {
logger := glog.FromContext(ctx)
response := backend.NewQueryDataResponse()
var err error
config := backend.GrafanaConfigFromContext(ctx)
// We are testing running of queries in parallel behind feature flag
if features.IsEnabled(ctx, featuremgmt.FlagInfluxdbRunQueriesInParallel) {
if config.FeatureToggles().IsEnabled("influxdbRunQueriesInParallel") {
concurrentQueryCount, err := req.PluginContext.GrafanaConfig.ConcurrentQueryCount()
if err != nil {
logger.Debug(fmt.Sprintf("Concurrent Query Count read/parse error: %v", err), featuremgmt.FlagInfluxdbRunQueriesInParallel)
logger.Debug(fmt.Sprintf("Concurrent Query Count read/parse error: %v", err), "influxdbRunQueriesInParallel")
concurrentQueryCount = 10
}
@@ -82,7 +83,7 @@ func Query(ctx context.Context, tracer trace.Tracer, dsInfo *models.DatasourceIn
return nil
}
resp, err := execute(ctx, tracer, dsInfo, logger, query, request, features.IsEnabled(ctx, featuremgmt.FlagInfluxqlStreamingParser))
resp, err := execute(ctx, tracer, dsInfo, logger, query, request, config.FeatureToggles().IsEnabled("influxqlStreamingParser"))
responseLock.Lock()
defer responseLock.Unlock()
@@ -127,7 +128,7 @@ func Query(ctx context.Context, tracer trace.Tracer, dsInfo *models.DatasourceIn
continue
}
resp, err := execute(ctx, tracer, dsInfo, logger, query, request, features.IsEnabled(ctx, featuremgmt.FlagInfluxqlStreamingParser))
resp, err := execute(ctx, tracer, dsInfo, logger, query, request, config.FeatureToggles().IsEnabled("influxqlStreamingParser"))
if err != nil {
response.Responses[query.RefID] = backend.DataResponse{Error: err}
-4
View File
@@ -14,7 +14,6 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt"
"github.com/grafana/grafana/pkg/infra/httpclient"
"github.com/grafana/grafana/pkg/services/featuremgmt"
"github.com/grafana/grafana/pkg/tsdb/influxdb/models"
)
@@ -118,8 +117,5 @@ func GetMockService(version string, rt RoundTripper) *Service {
version: version,
fakeRoundTripper: rt,
},
// featuremgmt.FlagInfluxqlStreamingParser: false
features: featuremgmt.WithFeatures(),
}
}