From 2136fd9a929334f39a371c2127c57b6d83abdf28 Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Wed, 21 Aug 2024 19:28:30 +0300 Subject: [PATCH] Storage: Remove unified storage feature flag (#92192) remove unified storage flag --- .../configure-grafana/feature-toggles/index.md | 1 - packages/grafana-data/src/types/featureToggles.gen.ts | 1 - pkg/services/apiserver/service.go | 8 -------- 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 | 1 + pkg/services/sqlstore/sqlstore.go | 1 - pkg/storage/unified/sql/db/dbimpl/dbimpl.go | 10 ++++------ pkg/storage/unified/sql/test/integration_test.go | 4 ++-- pkg/tests/apis/playlist/playlist_test.go | 4 ---- 11 files changed, 7 insertions(+), 36 deletions(-) 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 ce404a688f2..fb232934816 100644 --- a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md +++ b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md @@ -121,7 +121,6 @@ Experimental features might be changed or removed without prior notice. | `canvasPanelNesting` | Allow elements nesting | | `disableSecretsCompatibility` | Disable duplicated secret storage in legacy tables | | `logRequestsInstrumentedAsUnknown` | Logs the path for requests that are instrumented as unknown | -| `unifiedStorage` | SQL-based k8s storage | | `showDashboardValidationWarnings` | Show warnings when dashboards do not validate against the schema | | `mysqlAnsiQuotes` | Use double quotes to escape keyword in a MySQL query | | `alertingBacktesting` | Rule backtesting API for alerting | diff --git a/packages/grafana-data/src/types/featureToggles.gen.ts b/packages/grafana-data/src/types/featureToggles.gen.ts index 0d26cd877e6..72e6580d6b0 100644 --- a/packages/grafana-data/src/types/featureToggles.gen.ts +++ b/packages/grafana-data/src/types/featureToggles.gen.ts @@ -42,7 +42,6 @@ export interface FeatureToggles { logRequestsInstrumentedAsUnknown?: boolean; topnav?: boolean; grpcServer?: boolean; - unifiedStorage?: boolean; cloudWatchCrossAccountQuerying?: boolean; showDashboardValidationWarnings?: boolean; mysqlAnsiQuotes?: boolean; diff --git a/pkg/services/apiserver/service.go b/pkg/services/apiserver/service.go index 4c86b38e074..0796758c6c6 100644 --- a/pkg/services/apiserver/service.go +++ b/pkg/services/apiserver/service.go @@ -285,10 +285,6 @@ func (s *service) start(ctx context.Context) error { } case grafanaapiserveroptions.StorageTypeUnified: - if !s.features.IsEnabledGlobally(featuremgmt.FlagUnifiedStorage) { - return fmt.Errorf("unified storage requires the unifiedStorage feature flag") - } - server, err := sql.ProvideResourceServer(s.db, s.cfg, s.features, s.tracing) if err != nil { return err @@ -298,10 +294,6 @@ func (s *service) start(ctx context.Context) error { o.RecommendedOptions.Etcd.StorageConfig) case grafanaapiserveroptions.StorageTypeUnifiedGrpc: - if !s.features.IsEnabledGlobally(featuremgmt.FlagUnifiedStorage) { - return fmt.Errorf("unified storage requires the unifiedStorage feature flag") - } - opts := []grpc.DialOption{ grpc.WithStatsHandler(otelgrpc.NewClientHandler()), grpc.WithTransportCredentials(insecure.NewCredentials()), diff --git a/pkg/services/featuremgmt/registry.go b/pkg/services/featuremgmt/registry.go index ca00201458c..991261d8d76 100644 --- a/pkg/services/featuremgmt/registry.go +++ b/pkg/services/featuremgmt/registry.go @@ -194,14 +194,6 @@ var ( Owner: grafanaSearchAndStorageSquad, HideFromAdminPage: true, }, - { - Name: "unifiedStorage", - Description: "SQL-based k8s storage", - Stage: FeatureStageExperimental, - RequiresDevMode: false, - RequiresRestart: true, // new SQL tables created - Owner: grafanaSearchAndStorageSquad, - }, { Name: "cloudWatchCrossAccountQuerying", Description: "Enables cross-account querying in CloudWatch datasources", diff --git a/pkg/services/featuremgmt/toggles_gen.csv b/pkg/services/featuremgmt/toggles_gen.csv index 355fa7d25da..15329fe8233 100644 --- a/pkg/services/featuremgmt/toggles_gen.csv +++ b/pkg/services/featuremgmt/toggles_gen.csv @@ -23,7 +23,6 @@ disableSecretsCompatibility,experimental,@grafana/hosted-grafana-team,false,true logRequestsInstrumentedAsUnknown,experimental,@grafana/hosted-grafana-team,false,false,false topnav,deprecated,@grafana/grafana-frontend-platform,false,false,false grpcServer,preview,@grafana/search-and-storage,false,false,false -unifiedStorage,experimental,@grafana/search-and-storage,false,true,false cloudWatchCrossAccountQuerying,GA,@grafana/aws-datasources,false,false,false showDashboardValidationWarnings,experimental,@grafana/dashboards-squad,false,false,false mysqlAnsiQuotes,experimental,@grafana/search-and-storage,false,false,false diff --git a/pkg/services/featuremgmt/toggles_gen.go b/pkg/services/featuremgmt/toggles_gen.go index 89c2c2c1909..15cae3b0f85 100644 --- a/pkg/services/featuremgmt/toggles_gen.go +++ b/pkg/services/featuremgmt/toggles_gen.go @@ -103,10 +103,6 @@ const ( // Run the GRPC server FlagGrpcServer = "grpcServer" - // FlagUnifiedStorage - // SQL-based k8s storage - FlagUnifiedStorage = "unifiedStorage" - // FlagCloudWatchCrossAccountQuerying // Enables cross-account querying in CloudWatch datasources FlagCloudWatchCrossAccountQuerying = "cloudWatchCrossAccountQuerying" diff --git a/pkg/services/featuremgmt/toggles_gen.json b/pkg/services/featuremgmt/toggles_gen.json index a8a0ac0e195..5c02edfcc2c 100644 --- a/pkg/services/featuremgmt/toggles_gen.json +++ b/pkg/services/featuremgmt/toggles_gen.json @@ -2695,6 +2695,7 @@ "name": "unifiedStorage", "resourceVersion": "1724096690370", "creationTimestamp": "2023-12-06T20:21:21Z", + "deletionTimestamp": "2024-08-21T09:30:06Z", "annotations": { "grafana.app/updatedTimestamp": "2024-08-19 19:44:50.370023815 +0000 UTC" } diff --git a/pkg/services/sqlstore/sqlstore.go b/pkg/services/sqlstore/sqlstore.go index 4b17a54e37d..e5c1a178a95 100644 --- a/pkg/services/sqlstore/sqlstore.go +++ b/pkg/services/sqlstore/sqlstore.go @@ -481,7 +481,6 @@ func getCfgForTesting(opts ...InitTestDBOpt) *setting.Cfg { func getFeaturesForTesting(opts ...InitTestDBOpt) featuremgmt.FeatureToggles { featureKeys := []any{ featuremgmt.FlagPanelTitleSearch, - featuremgmt.FlagUnifiedStorage, } for _, opt := range opts { if len(opt.FeatureFlags) > 0 { diff --git a/pkg/storage/unified/sql/db/dbimpl/dbimpl.go b/pkg/storage/unified/sql/db/dbimpl/dbimpl.go index af533ef0180..b9498b87cd5 100644 --- a/pkg/storage/unified/sql/db/dbimpl/dbimpl.go +++ b/pkg/storage/unified/sql/db/dbimpl/dbimpl.go @@ -61,12 +61,10 @@ func newResourceDBProvider(grafanaDB infraDB.DB, cfg *setting.Cfg, features feat } p = &resourceDBProvider{ - cfg: cfg, - log: log.New("entity-db"), - logQueries: getter.Key("log_queries").MustBool(false), - } - if features.IsEnabledGlobally(featuremgmt.FlagUnifiedStorage) { - p.migrateFunc = migrations.MigrateResourceStore + cfg: cfg, + log: log.New("entity-db"), + logQueries: getter.Key("log_queries").MustBool(false), + migrateFunc: migrations.MigrateResourceStore, } switch dbType := getter.Key("db_type").MustString(""); dbType { diff --git a/pkg/storage/unified/sql/test/integration_test.go b/pkg/storage/unified/sql/test/integration_test.go index d3b6ed37303..7d618d2aab1 100644 --- a/pkg/storage/unified/sql/test/integration_test.go +++ b/pkg/storage/unified/sql/test/integration_test.go @@ -31,7 +31,7 @@ func newServer(t *testing.T) (sql.Backend, resource.ResourceServer) { dbstore := infraDB.InitTestDB(t) cfg := setting.NewCfg() - features := featuremgmt.WithFeatures(featuremgmt.FlagUnifiedStorage) + features := featuremgmt.WithFeatures() eDB, err := dbimpl.ProvideResourceDB(dbstore, cfg, features, nil) require.NoError(t, err) @@ -331,7 +331,7 @@ func TestClientServer(t *testing.T) { cfg.GRPCServerAddress = "localhost:0" cfg.GRPCServerNetwork = "tcp" - features := featuremgmt.WithFeatures(featuremgmt.FlagUnifiedStorage) + features := featuremgmt.WithFeatures() svc, err := sql.ProvideService(cfg, features, dbstore, nil) require.NoError(t, err) diff --git a/pkg/tests/apis/playlist/playlist_test.go b/pkg/tests/apis/playlist/playlist_test.go index d42b63d5149..6840ecc946e 100644 --- a/pkg/tests/apis/playlist/playlist_test.go +++ b/pkg/tests/apis/playlist/playlist_test.go @@ -149,7 +149,6 @@ func TestIntegrationPlaylist(t *testing.T) { DisableAnonymous: true, APIServerStorageType: "unified", // use the entity api tables EnableFeatureToggles: []string{ - featuremgmt.FlagUnifiedStorage, featuremgmt.FlagKubernetesPlaylists, // Required so that legacy calls are also written }, DualWriterDesiredModes: map[string]grafanarest.DualWriterMode{ @@ -164,7 +163,6 @@ func TestIntegrationPlaylist(t *testing.T) { DisableAnonymous: true, APIServerStorageType: "unified", // use the entity api tables EnableFeatureToggles: []string{ - featuremgmt.FlagUnifiedStorage, featuremgmt.FlagKubernetesPlaylists, // Required so that legacy calls are also written }, DualWriterDesiredModes: map[string]grafanarest.DualWriterMode{ @@ -179,7 +177,6 @@ func TestIntegrationPlaylist(t *testing.T) { DisableAnonymous: true, APIServerStorageType: "unified", // use the entity api tables EnableFeatureToggles: []string{ - featuremgmt.FlagUnifiedStorage, featuremgmt.FlagKubernetesPlaylists, // Required so that legacy calls are also written }, DualWriterDesiredModes: map[string]grafanarest.DualWriterMode{ @@ -194,7 +191,6 @@ func TestIntegrationPlaylist(t *testing.T) { DisableAnonymous: true, APIServerStorageType: "unified", // use the entity api tables EnableFeatureToggles: []string{ - featuremgmt.FlagUnifiedStorage, featuremgmt.FlagKubernetesPlaylists, // Required so that legacy calls are also written }, DualWriterDesiredModes: map[string]grafanarest.DualWriterMode{