From 4db9ceb0a6749c9f5ffa61e12319dc2774a07594 Mon Sep 17 00:00:00 2001 From: Roman Vynar Date: Tue, 12 Jun 2018 12:19:13 +0300 Subject: [PATCH 1/4] 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. From 16fd6d944f590f60e171b4d3a504109868e06ed4 Mon Sep 17 00:00:00 2001 From: Roman Vynar Date: Tue, 12 Jun 2018 12:27:29 +0300 Subject: [PATCH 2/4] Last events were not shown when viewing a repo of non-default namespace. --- CHANGELOG.md | 1 + main.go | 2 +- templates/repositories.html | 6 +++++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c96f78..b71cf13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### Unreleased * When using MySQL for event storage, do not leak connections. +* Last events were not shown when viewing a repo of non-default namespace. ### 0.6 diff --git a/main.go b/main.go index 145b84b..7364637 100644 --- a/main.go +++ b/main.go @@ -196,7 +196,7 @@ func (a *apiClient) viewTags(c echo.Context) error { data.Set("repo", repo) data.Set("tags", tags) data.Set("deleteAllowed", deleteAllowed) - data.Set("events", a.eventListener.GetEvents(repo)) + data.Set("events", a.eventListener.GetEvents(repoPath)) return c.Render(http.StatusOK, "tags.html", data) } diff --git a/templates/repositories.html b/templates/repositories.html index d2f998d..b49492a 100644 --- a/templates/repositories.html +++ b/templates/repositories.html @@ -23,12 +23,16 @@ {{block body()}}
+
+ +
diff --git a/templates/tags.html b/templates/tags.html index c185578..fb24c70 100644 --- a/templates/tags.html +++ b/templates/tags.html @@ -33,7 +33,7 @@ {{if namespace != "library"}}
  • {{ namespace }}
  • {{end}} -
  • {{ repo }}
  • +
  • {{ repo |url_decoded_path }}