From 31eaf1e898ad16df83773e228c54c7dd76a88e57 Mon Sep 17 00:00:00 2001 From: Rafael Bortolon Paulovic Date: Mon, 1 Dec 2025 17:56:59 +0100 Subject: [PATCH] chore: add log and metric before unified migration enforcement (#114598) --- pkg/infra/metrics/metrics.go | 11 +++++++++++ pkg/setting/setting_unified_storage.go | 14 +++++++++----- pkg/storage/unified/migrations/service.go | 5 +++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/pkg/infra/metrics/metrics.go b/pkg/infra/metrics/metrics.go index dcf7f13c4f4..c1995545df8 100644 --- a/pkg/infra/metrics/metrics.go +++ b/pkg/infra/metrics/metrics.go @@ -222,6 +222,10 @@ var ( // MStatTotalRepositories is a metric total amount of repositories MStatTotalRepositories prometheus.Gauge + + // MUnifiedStorageMigrationStatus indicates the migration status for unified storage in this instance. + // Possible values: 0 (default/undefined), 1 (migration disabled), 2 (migration would run). + MUnifiedStorageMigrationStatus prometheus.Gauge ) const ( @@ -691,6 +695,12 @@ func init() { Help: "total amount of repositories", Namespace: ExporterName, }) + + MUnifiedStorageMigrationStatus = prometheus.NewGauge(prometheus.GaugeOpts{ + Name: "unified_storage_migration_status", + Help: "indicates whether this instance would run unified storage migrations (0=undefined, 1=migration disabled, 2=would run)", + Namespace: ExporterName, + }) } // SetBuildInformation sets the build information for this binary @@ -829,5 +839,6 @@ func initMetricVars(reg prometheus.Registerer) { MStatTotalRepositories, MFolderIDsAPICount, MFolderIDsServiceCount, + MUnifiedStorageMigrationStatus, ) } diff --git a/pkg/setting/setting_unified_storage.go b/pkg/setting/setting_unified_storage.go index 3623228fe8b..9d0f5843ad2 100644 --- a/pkg/setting/setting_unified_storage.go +++ b/pkg/setting/setting_unified_storage.go @@ -8,6 +8,7 @@ import ( "github.com/grafana/grafana/pkg/util/osutil" ) +// nolint:unused var migratedUnifiedResources = []string{ //"playlists.playlist.grafana.app", "folders.folder.grafana.app", @@ -58,14 +59,16 @@ func (cfg *Cfg) setUnifiedStorageConfig() { // Set indexer config for unified storage section := cfg.Raw.Section("unified_storage") - // TODO: Re-enable once migrations are ready and disabled on cloud - //cfg.DisableDataMigrations = section.Key("disable_data_migrations").MustBool(false) - cfg.DisableDataMigrations = true + cfg.DisableDataMigrations = section.Key("disable_data_migrations").MustBool(false) if !cfg.DisableDataMigrations && cfg.getUnifiedStorageType() == "unified" { - cfg.enforceMigrationToUnifiedConfigs() + // Helper log to find instances running migrations in the future + cfg.Logger.Info("Unified migration configs not yet enforced") + //cfg.enforceMigrationToUnifiedConfigs() // TODO: uncomment when ready for release } else { - cfg.EnableSearch = section.Key("enable_search").MustBool(false) + // Helper log to find instances disabling migration + cfg.Logger.Info("Unified migration configs enforcement disabled", "storage_type", cfg.getUnifiedStorageType(), "disable_data_migrations", cfg.DisableDataMigrations) } + cfg.EnableSearch = section.Key("enable_search").MustBool(false) cfg.MaxPageSizeBytes = section.Key("max_page_size_bytes").MustInt(0) cfg.IndexPath = section.Key("index_path").String() cfg.IndexWorkers = section.Key("index_workers").MustInt(10) @@ -102,6 +105,7 @@ func (cfg *Cfg) setUnifiedStorageConfig() { cfg.MinFileIndexBuildVersion = section.Key("min_file_index_build_version").MustString("") } +// nolint:unused // enforceMigrationToUnifiedConfigs enforces configurations required to run migrated resources in mode 5 // All migrated resources in MigratedUnifiedResources are set to mode 5 and unified search is enabled func (cfg *Cfg) enforceMigrationToUnifiedConfigs() { diff --git a/pkg/storage/unified/migrations/service.go b/pkg/storage/unified/migrations/service.go index 23b8c2706ae..fa1f62ca86a 100644 --- a/pkg/storage/unified/migrations/service.go +++ b/pkg/storage/unified/migrations/service.go @@ -8,6 +8,7 @@ import ( "github.com/grafana/grafana/pkg/infra/db" "github.com/grafana/grafana/pkg/infra/kvstore" "github.com/grafana/grafana/pkg/infra/log" + "github.com/grafana/grafana/pkg/infra/metrics" sqlstoremigrator "github.com/grafana/grafana/pkg/services/sqlstore/migrator" "github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/storage/unified/migrations/contract" @@ -55,8 +56,12 @@ func (p *UnifiedStorageMigrationServiceImpl) Run(ctx context.Context) error { // skip migrations if disabled in config if p.cfg.DisableDataMigrations { + metrics.MUnifiedStorageMigrationStatus.Set(1) logger.Info("Data migrations are disabled, skipping") return nil + } else { + metrics.MUnifiedStorageMigrationStatus.Set(2) + logger.Info("Data migrations not yet enforced, skipping") } // TODO: Re-enable once migrations are ready