From 22338e504796ee60b385381d4dfd9d3587fcc5fe Mon Sep 17 00:00:00 2001 From: Will Rouesnel Date: Tue, 6 Mar 2018 08:36:24 +1100 Subject: [PATCH] Ensure pg_up is always set to 0 when the initial database connection fails. This did in fact turn out to be an oversight in the error handling. Now, any error in the initial connection path will always trip pg_up to be 0. Fixes #160 --- cmd/postgres_exporter/postgres_exporter.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cmd/postgres_exporter/postgres_exporter.go b/cmd/postgres_exporter/postgres_exporter.go index 8a8395c40..d0741943f 100644 --- a/cmd/postgres_exporter/postgres_exporter.go +++ b/cmd/postgres_exporter/postgres_exporter.go @@ -969,15 +969,12 @@ func (e *Exporter) getDB(conn string) (*sql.DB, error) { if e.dbConnection == nil { d, err := sql.Open("postgres", conn) if err != nil { - e.psqlUp.Set(0) return nil, err } err = d.Ping() if err != nil { - e.psqlUp.Set(0) return nil, err } - e.psqlUp.Set(1) d.SetMaxOpenConns(1) d.SetMaxIdleConns(1) @@ -1011,6 +1008,7 @@ func (e *Exporter) scrape(ch chan<- prometheus.Metric) { } log.Infof("Error opening connection to database (%s): %s", loggableDsn, err) e.error.Set(1) + e.psqlUp.Set(0) // Force "up" to 0 here. return }