Skip to content

Commit bcc02ce

Browse files
authored
Merge pull request #23 from dehaansa/fix/close-all-connections
fix: Always close database connections
2 parents 1b9cff9 + 588acf1 commit bcc02ce

File tree

4 files changed

+8
-2
lines changed

4 files changed

+8
-2
lines changed

cmd/postgres_exporter/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ func main() {
142142
if err != nil {
143143
level.Warn(logger).Log("msg", "Failed to create PostgresCollector", "err", err.Error())
144144
} else {
145+
defer pe.Close()
145146
prometheus.MustRegister(pe)
146147
}
147148

cmd/postgres_exporter/server.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ func (s *Servers) GetServer(dsn string) (*Server, error) {
169169
s.servers[dsn] = server
170170
}
171171
if err = server.Ping(); err != nil {
172+
server.Close()
172173
delete(s.servers, dsn)
173174
time.Sleep(time.Duration(errCount) * time.Second)
174175
continue

collector/collector.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,11 +172,11 @@ func (p PostgresCollector) Collect(ch chan<- prometheus.Metric) {
172172

173173
// Set up the database connection for the collector.
174174
err := inst.setup()
175+
defer inst.Close()
175176
if err != nil {
176177
level.Error(p.logger).Log("msg", "Error opening connection to database", "err", err)
177178
return
178179
}
179-
defer inst.Close()
180180

181181
wg := sync.WaitGroup{}
182182
wg.Add(len(p.Collectors))
@@ -189,6 +189,10 @@ func (p PostgresCollector) Collect(ch chan<- prometheus.Metric) {
189189
wg.Wait()
190190
}
191191

192+
func (p *PostgresCollector) Close() error {
193+
return p.instance.Close()
194+
}
195+
192196
func execute(ctx context.Context, name string, c Collector, instance *instance, ch chan<- prometheus.Metric, logger log.Logger) {
193197
begin := time.Now()
194198
err := c.Update(ctx, instance, ch)

collector/probe.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,11 @@ func (pc *ProbeCollector) Describe(ch chan<- *prometheus.Desc) {
7777
func (pc *ProbeCollector) Collect(ch chan<- prometheus.Metric) {
7878
// Set up the database connection for the collector.
7979
err := pc.instance.setup()
80+
defer pc.instance.Close()
8081
if err != nil {
8182
level.Error(pc.logger).Log("msg", "Error opening connection to database", "err", err)
8283
return
8384
}
84-
defer pc.instance.Close()
8585

8686
wg := sync.WaitGroup{}
8787
wg.Add(len(pc.collectors))

0 commit comments

Comments
 (0)