From 4db9ceb0a6749c9f5ffa61e12319dc2774a07594 Mon Sep 17 00:00:00 2001 From: Roman Vynar Date: Tue, 12 Jun 2018 12:19:13 +0300 Subject: [PATCH] When using MySQL for event storage, do not leak connections. --- CHANGELOG.md | 4 ++++ events/event_listener.go | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c87c880..7c96f78 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## Changelog +### Unreleased + +* When using MySQL for event storage, do not leak connections. + ### 0.6 * Add MySQL along with sqlite3 support as a registry events storage. diff --git a/events/event_listener.go b/events/event_listener.go index 9b6b2a8..f90ea4d 100644 --- a/events/event_listener.go +++ b/events/event_listener.go @@ -144,13 +144,13 @@ func (e *EventListener) GetEvents(repository string) []EventRow { e.logger.Error("Error selecting from table: ", err) return events } + defer rows.Close() for rows.Next() { var row EventRow rows.Scan(&row.ID, &row.Action, &row.Repository, &row.Tag, &row.IP, &row.User, &row.Created) events = append(events, row) } - rows.Close() return events } @@ -171,9 +171,11 @@ func (e *EventListener) getDababaseHandler() (*sql.DB, error) { if e.databaseDriver == "mysql" { schema = strings.Replace(schema, "AUTOINCREMENT", "AUTO_INCREMENT", 1) - if _, err := db.Query("SELECT * FROM events LIMIT 1"); err != nil { + rows, err := db.Query("SELECT * FROM events LIMIT 1") + if err != nil { firstRun = true } + rows.Close() } // Create table on first run.