When using MySQL for event storage, do not leak connections.

This commit is contained in:
Roman Vynar 2018-06-12 12:19:13 +03:00
parent c5a5fe2e8d
commit 4db9ceb0a6
2 changed files with 8 additions and 2 deletions

View File

@ -1,5 +1,9 @@
## Changelog ## Changelog
### Unreleased
* When using MySQL for event storage, do not leak connections.
### 0.6 ### 0.6
* Add MySQL along with sqlite3 support as a registry events storage. * Add MySQL along with sqlite3 support as a registry events storage.

View File

@ -144,13 +144,13 @@ func (e *EventListener) GetEvents(repository string) []EventRow {
e.logger.Error("Error selecting from table: ", err) e.logger.Error("Error selecting from table: ", err)
return events return events
} }
defer rows.Close()
for rows.Next() { for rows.Next() {
var row EventRow var row EventRow
rows.Scan(&row.ID, &row.Action, &row.Repository, &row.Tag, &row.IP, &row.User, &row.Created) rows.Scan(&row.ID, &row.Action, &row.Repository, &row.Tag, &row.IP, &row.User, &row.Created)
events = append(events, row) events = append(events, row)
} }
rows.Close()
return events return events
} }
@ -171,9 +171,11 @@ func (e *EventListener) getDababaseHandler() (*sql.DB, error) {
if e.databaseDriver == "mysql" { if e.databaseDriver == "mysql" {
schema = strings.Replace(schema, "AUTOINCREMENT", "AUTO_INCREMENT", 1) 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 firstRun = true
} }
rows.Close()
} }
// Create table on first run. // Create table on first run.