From ec2cd53b1ae9ff07bf372ce96362d467f383adc1 Mon Sep 17 00:00:00 2001 From: Andre Pereira Date: Wed, 9 Apr 2025 13:57:07 +0100 Subject: [PATCH] Tempo: Remove traceQLStreaming feature toggle (#103619) Remove traceQLStreaming feature toggle and migration --- .../feature-toggles/index.md | 1 - .../src/types/featureToggles.gen.ts | 5 -- pkg/services/featuremgmt/registry.go | 8 --- pkg/services/featuremgmt/toggles_gen.csv | 1 - pkg/services/featuremgmt/toggles_gen.go | 4 -- pkg/services/featuremgmt/toggles_gen.json | 3 +- .../sqlstore/migrations/migrations.go | 2 - .../migrations/tempo_datasource_mig.go | 72 ------------------- .../datasource/tempo/datasource.test.ts | 1 - 9 files changed, 2 insertions(+), 95 deletions(-) delete mode 100644 pkg/services/sqlstore/migrations/tempo_datasource_mig.go diff --git a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md index 44b77618cc9..c4ead724dab 100644 --- a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md +++ b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md @@ -39,7 +39,6 @@ Most [generally available](https://grafana.com/docs/release-life-cycle/#general- | `recordedQueriesMulti` | Enables writing multiple items from a single query within Recorded Queries | Yes | | `logsExploreTableVisualisation` | A table visualisation for logs in Explore | Yes | | `transformationsRedesign` | Enables the transformations redesign | Yes | -| `traceQLStreaming` | Enables response streaming of TraceQL queries of the Tempo data source | | | `awsAsyncQueryCaching` | Enable caching for async queries for Redshift and Athena. Requires that the datasource has caching and async query support enabled | Yes | | `angularDeprecationUI` | Display Angular warnings in dashboards and panels | Yes | | `dashgpt` | Enable AI powered features in dashboards | Yes | diff --git a/packages/grafana-data/src/types/featureToggles.gen.ts b/packages/grafana-data/src/types/featureToggles.gen.ts index ef5effc6574..f672b57a332 100644 --- a/packages/grafana-data/src/types/featureToggles.gen.ts +++ b/packages/grafana-data/src/types/featureToggles.gen.ts @@ -219,11 +219,6 @@ export interface FeatureToggles { */ mlExpressions?: boolean; /** - * Enables response streaming of TraceQL queries of the Tempo data source - * @default false - */ - traceQLStreaming?: boolean; - /** * Expose some datasources as apiservers. */ datasourceAPIServers?: boolean; diff --git a/pkg/services/featuremgmt/registry.go b/pkg/services/featuremgmt/registry.go index aef765565c3..7277da817b7 100644 --- a/pkg/services/featuremgmt/registry.go +++ b/pkg/services/featuremgmt/registry.go @@ -352,14 +352,6 @@ var ( FrontendOnly: false, Owner: grafanaAlertingSquad, }, - { - Name: "traceQLStreaming", - Description: "Enables response streaming of TraceQL queries of the Tempo data source", - Stage: FeatureStageGeneralAvailability, - FrontendOnly: true, - Owner: grafanaObservabilityTracesAndProfilingSquad, - Expression: "false", - }, { Name: "datasourceAPIServers", Description: "Expose some datasources as apiservers.", diff --git a/pkg/services/featuremgmt/toggles_gen.csv b/pkg/services/featuremgmt/toggles_gen.csv index 1d2ac3d8262..9540300c620 100644 --- a/pkg/services/featuremgmt/toggles_gen.csv +++ b/pkg/services/featuremgmt/toggles_gen.csv @@ -45,7 +45,6 @@ logsExploreTableVisualisation,GA,@grafana/observability-logs,false,false,true awsDatasourcesTempCredentials,experimental,@grafana/aws-datasources,false,false,false transformationsRedesign,GA,@grafana/observability-metrics,false,false,true mlExpressions,experimental,@grafana/alerting-squad,false,false,false -traceQLStreaming,GA,@grafana/observability-traces-and-profiling,false,false,true datasourceAPIServers,experimental,@grafana/grafana-app-platform-squad,false,true,false grafanaAPIServerWithExperimentalAPIs,experimental,@grafana/grafana-app-platform-squad,true,true,false provisioning,experimental,@grafana/grafana-app-platform-squad,false,true,false diff --git a/pkg/services/featuremgmt/toggles_gen.go b/pkg/services/featuremgmt/toggles_gen.go index 88a878fd9d7..17f21dc2f31 100644 --- a/pkg/services/featuremgmt/toggles_gen.go +++ b/pkg/services/featuremgmt/toggles_gen.go @@ -191,10 +191,6 @@ const ( // Enable support for Machine Learning in server-side expressions FlagMlExpressions = "mlExpressions" - // FlagTraceQLStreaming - // Enables response streaming of TraceQL queries of the Tempo data source - FlagTraceQLStreaming = "traceQLStreaming" - // FlagDatasourceAPIServers // Expose some datasources as apiservers. FlagDatasourceAPIServers = "datasourceAPIServers" diff --git a/pkg/services/featuremgmt/toggles_gen.json b/pkg/services/featuremgmt/toggles_gen.json index 86ff71f2fed..5f6512e171c 100644 --- a/pkg/services/featuremgmt/toggles_gen.json +++ b/pkg/services/featuremgmt/toggles_gen.json @@ -3031,7 +3031,8 @@ "metadata": { "name": "traceQLStreaming", "resourceVersion": "1743693517832", - "creationTimestamp": "2023-07-26T13:33:16Z" + "creationTimestamp": "2023-07-26T13:33:16Z", + "deletionTimestamp": "2025-04-08T12:39:36Z" }, "spec": { "description": "Enables response streaming of TraceQL queries of the Tempo data source", diff --git a/pkg/services/sqlstore/migrations/migrations.go b/pkg/services/sqlstore/migrations/migrations.go index bc95e01dc16..99ccb2e4522 100644 --- a/pkg/services/sqlstore/migrations/migrations.go +++ b/pkg/services/sqlstore/migrations/migrations.go @@ -128,8 +128,6 @@ func (oss *OSSMigrations) AddMigration(mg *Migrator) { ualert.AddStateResolvedAtColumns(mg) - enableTraceQLStreaming(mg, oss.features != nil && oss.features.IsEnabledGlobally(featuremgmt.FlagTraceQLStreaming)) - ualert.AddReceiverActionScopesMigration(mg) ualert.AddRuleMetadata(mg) diff --git a/pkg/services/sqlstore/migrations/tempo_datasource_mig.go b/pkg/services/sqlstore/migrations/tempo_datasource_mig.go deleted file mode 100644 index df57e7ce0c1..00000000000 --- a/pkg/services/sqlstore/migrations/tempo_datasource_mig.go +++ /dev/null @@ -1,72 +0,0 @@ -package migrations - -import ( - "encoding/json" - - "xorm.io/xorm" - - . "github.com/grafana/grafana/pkg/services/sqlstore/migrator" -) - -func enableTraceQLStreaming(mg *Migrator, enable bool) { - mg.AddMigration("Enable traceQL streaming for all Tempo datasources", &AddTraceQLStreamingToJsonData{Enable: enable}) -} - -var _ CodeMigration = new(AddTraceQLStreamingToJsonData) - -type AddTraceQLStreamingToJsonData struct { - MigrationBase - Enable bool -} - -func (m *AddTraceQLStreamingToJsonData) SQL(dialect Dialect) string { - return "code migration" -} - -type TempoIdJsonDataDTO struct { - Id int64 - JsonData string -} - -func (m *AddTraceQLStreamingToJsonData) Exec(sess *xorm.Session, mg *Migrator) error { - datasources := make([]*TempoIdJsonDataDTO, 0) - - // Skip update if the feature flag is not enabled but mark the migration as completed - if !m.Enable { - return nil - } - - err := sess.SQL("SELECT id, json_data FROM data_source WHERE type = 'tempo'").Find(&datasources) - - if err != nil { - return err - } - - enabledStreamingMap := map[string]interface{}{ - "search": true, - } - - for _, ds := range datasources { - var parsedMap map[string]interface{} - if err := json.Unmarshal([]byte(ds.JsonData), &parsedMap); err != nil { - continue - } - // skip datasource if streamingEnabled is already set - if parsedMap["streamingEnabled"] != nil { - continue - } - parsedMap["streamingEnabled"] = enabledStreamingMap - - newJsonData, err := json.Marshal(parsedMap) - if err != nil { - return err - } - - _, err = sess.Exec("UPDATE data_source SET json_data = ? WHERE id = ?", newJsonData, ds.Id) - if err != nil { - return err - } - } - - return err -} diff --git a/public/app/plugins/datasource/tempo/datasource.test.ts b/public/app/plugins/datasource/tempo/datasource.test.ts index cc5683941e8..9b715503516 100644 --- a/public/app/plugins/datasource/tempo/datasource.test.ts +++ b/public/app/plugins/datasource/tempo/datasource.test.ts @@ -68,7 +68,6 @@ describe('Tempo data source', () => { beforeEach(() => (console.error = consoleErrorMock)); describe('runs correctly', () => { - config.featureToggles.traceQLStreaming = true; jest.spyOn(TempoDatasource.prototype, 'isFeatureAvailable').mockImplementation(() => true); const handleStreamingQuery = jest.spyOn(TempoDatasource.prototype, 'handleStreamingQuery'); const request = jest.spyOn(TempoDatasource.prototype, '_request');