fix: use database section for resource server db engine configuration (#107495)

This commit is contained in:
Mustafa Sencer Özcan
2025-07-02 11:00:51 +02:00
committed by GitHub
parent 01c844b69f
commit 3674d952a6
2 changed files with 24 additions and 1 deletions
@@ -38,6 +38,12 @@ func getEngine(cfg *setting.Cfg) (*xorm.Engine, error) {
if err != nil {
return nil, fmt.Errorf("open database: %w", err)
}
engine.SetMaxOpenConns(dbSection.Key("max_open_conn").MustInt(0))
engine.SetMaxIdleConns(dbSection.Key("max_idle_conn").MustInt(4))
maxLifetime := time.Duration(dbSection.Key("conn_max_lifetime").MustInt(14400)) * time.Second
engine.SetConnMaxLifetime(maxLifetime)
return engine, nil
default:
return nil, fmt.Errorf("unsupported database type: %s", dbType)
+18 -1
View File
@@ -78,9 +78,10 @@ func newResourceDBProvider(grafanaDB infraDB.DB, cfg *setting.Cfg, tracer trace.
getter := newConfGetter(cfg.SectionWithEnvOverrides("resource_api"), "db_")
fallbackGetter := newConfGetter(cfg.SectionWithEnvOverrides("database"), "")
logger := log.New("entity-db")
p = &resourceDBProvider{
cfg: cfg,
log: log.New("entity-db"),
log: logger,
logQueries: getter.Bool("log_queries"),
migrateFunc: migrations.MigrateResourceStore,
tracer: tracer,
@@ -91,11 +92,13 @@ func newResourceDBProvider(grafanaDB infraDB.DB, cfg *setting.Cfg, tracer trace.
switch {
// Deprecated: First try with the config in the "resource_api" section, which is specific to Unified Storage
case dbType == dbTypePostgres:
logger.Info("Using resource_api section", "db_type", dbType)
p.registerMetrics = true
p.engine, err = getEnginePostgres(getter)
return p, err
case dbType == dbTypeMySQL:
logger.Info("Using resource_api section", "db_type", dbType)
p.registerMetrics = true
p.engine, err = getEngineMySQL(getter)
return p, err
@@ -105,6 +108,7 @@ func newResourceDBProvider(grafanaDB infraDB.DB, cfg *setting.Cfg, tracer trace.
// If we have an empty Resource API db config, try with the core Grafana database config
case grafanaDBType != "":
logger.Info("Using database section", "db_type", grafanaDBType)
p.registerMetrics = true
p.engine, err = getEngine(cfg)
return p, err
@@ -121,6 +125,19 @@ func newResourceDBProvider(grafanaDB infraDB.DB, cfg *setting.Cfg, tracer trace.
}
func (p *resourceDBProvider) init(ctx context.Context) (db.DB, error) {
p.log.Info("Initializing Resource DB",
"db_type",
p.engine.Dialect().DriverName(),
"open_conn",
p.engine.DB().DB.Stats().OpenConnections,
"in_use_conn",
p.engine.DB().DB.Stats().InUse,
"idle_conn",
p.engine.DB().DB.Stats().Idle,
"max_open_conn",
p.engine.DB().DB.Stats().MaxOpenConnections,
)
if p.registerMetrics {
err := prometheus.Register(sqlstats.NewStatsCollector("unified_storage", p.engine.DB().DB))
if err != nil {