fix: use database section for resource server db engine configuration (#107495)
This commit is contained in:
committed by
GitHub
parent
01c844b69f
commit
3674d952a6
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user