From 359a99242cdec11eaffa9dc8a7448a870ca393bf Mon Sep 17 00:00:00 2001 From: Anders Swanson Date: Wed, 3 Sep 2025 13:36:55 -0700 Subject: [PATCH 1/3] WARN duplicated database connections Signed-off-by: Anders Swanson --- collector/config.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/collector/config.go b/collector/config.go index 363b302..4f16de6 100644 --- a/collector/config.go +++ b/collector/config.go @@ -206,7 +206,7 @@ func LoadMetricsConfiguration(logger *slog.Logger, cfg *Config, path string, fla } m.merge(cfg, path, flags) - return m, nil + return m, m.validate(logger) } func (wc WebConfig) Flags() *web.FlagConfig { @@ -302,3 +302,23 @@ func (m *MetricsConfiguration) defaultDatabase(cfg *Config) DatabaseConfig { } return dbconfig } + +func (m *MetricsConfiguration) validate(logger *slog.Logger) error { + m.checkDuplicatedDatabases(logger) + return nil +} + +// checkDuplicatedDatabases validates duplicated databases. If a database entry is duplicated, log a warning. +func (m *MetricsConfiguration) checkDuplicatedDatabases(logger *slog.Logger) { + dbs := map[string][]string{} + for db, cfg := range m.Databases { + key := cfg.URL + cfg.Username + dbs[key] = append(dbs[key], db) + } + + for _, v := range dbs { + if len(v) > 1 { + logger.Warn("duplicated database connections", "database connections", strings.Join(v, ", ")) + } + } +} From 14372340896d2ecda56b2b6d7786ed986b08f4e4 Mon Sep 17 00:00:00 2001 From: Anders Swanson Date: Wed, 3 Sep 2025 13:42:06 -0700 Subject: [PATCH 2/3] WARN duplicated database connections Signed-off-by: Anders Swanson --- collector/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/collector/config.go b/collector/config.go index 4f16de6..fd460d6 100644 --- a/collector/config.go +++ b/collector/config.go @@ -312,7 +312,7 @@ func (m *MetricsConfiguration) validate(logger *slog.Logger) error { func (m *MetricsConfiguration) checkDuplicatedDatabases(logger *slog.Logger) { dbs := map[string][]string{} for db, cfg := range m.Databases { - key := cfg.URL + cfg.Username + key := strings.ToLower(cfg.URL + cfg.Username) dbs[key] = append(dbs[key], db) } From 705de0716e8d2a8340cf0cfc723366c8b631ce55 Mon Sep 17 00:00:00 2001 From: Anders Swanson Date: Wed, 3 Sep 2025 13:50:20 -0700 Subject: [PATCH 3/3] WARN duplicated database connections Signed-off-by: Anders Swanson --- collector/config.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/collector/config.go b/collector/config.go index fd460d6..cd3ae9c 100644 --- a/collector/config.go +++ b/collector/config.go @@ -310,15 +310,23 @@ func (m *MetricsConfiguration) validate(logger *slog.Logger) error { // checkDuplicatedDatabases validates duplicated databases. If a database entry is duplicated, log a warning. func (m *MetricsConfiguration) checkDuplicatedDatabases(logger *slog.Logger) { - dbs := map[string][]string{} + type dbkey struct { + URL string + Username string + } + + dbs := map[dbkey][]string{} for db, cfg := range m.Databases { - key := strings.ToLower(cfg.URL + cfg.Username) + key := dbkey{ + URL: cfg.URL, + Username: strings.ToLower(cfg.Username), + } dbs[key] = append(dbs[key], db) } for _, v := range dbs { if len(v) > 1 { - logger.Warn("duplicated database connections", "database connections", strings.Join(v, ", ")) + logger.Warn("duplicated database connections", "database connections", strings.Join(v, ", "), "count", len(v)) } } }