Skip to content

Commit 43f6bb3

Browse files
WARN duplicated database connections (#328)
WARN duplicated database connections Signed-off-by: Anders Swanson <anders.swanson@oracle.com>
1 parent 14fac96 commit 43f6bb3

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

collector/config.go

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ func LoadMetricsConfiguration(logger *slog.Logger, cfg *Config, path string, fla
206206
}
207207

208208
m.merge(cfg, path, flags)
209-
return m, nil
209+
return m, m.validate(logger)
210210
}
211211

212212
func (wc WebConfig) Flags() *web.FlagConfig {
@@ -302,3 +302,31 @@ func (m *MetricsConfiguration) defaultDatabase(cfg *Config) DatabaseConfig {
302302
}
303303
return dbconfig
304304
}
305+
306+
func (m *MetricsConfiguration) validate(logger *slog.Logger) error {
307+
m.checkDuplicatedDatabases(logger)
308+
return nil
309+
}
310+
311+
// checkDuplicatedDatabases validates duplicated databases. If a database entry is duplicated, log a warning.
312+
func (m *MetricsConfiguration) checkDuplicatedDatabases(logger *slog.Logger) {
313+
type dbkey struct {
314+
URL string
315+
Username string
316+
}
317+
318+
dbs := map[dbkey][]string{}
319+
for db, cfg := range m.Databases {
320+
key := dbkey{
321+
URL: cfg.URL,
322+
Username: strings.ToLower(cfg.Username),
323+
}
324+
dbs[key] = append(dbs[key], db)
325+
}
326+
327+
for _, v := range dbs {
328+
if len(v) > 1 {
329+
logger.Warn("duplicated database connections", "database connections", strings.Join(v, ", "), "count", len(v))
330+
}
331+
}
332+
}

0 commit comments

Comments
 (0)