The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/4951
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) === Signed-off-by: Free Ekanayaka <[email protected]>
From f87e3d4acd7d9d37a676ab2335ac94a5dbd6a8f6 Mon Sep 17 00:00:00 2001 From: Free Ekanayaka <[email protected]> Date: Mon, 20 Aug 2018 11:58:14 +0200 Subject: [PATCH] Add a few missing rows.Close() calls Signed-off-by: Free Ekanayaka <[email protected]> --- lxd/api_internal.go | 2 ++ lxd/db/migration.go | 6 ++++++ lxd/db/node/update.go | 2 +- lxd/db/query/dump.go | 1 + lxd/db/schema/query.go | 3 +++ 5 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lxd/api_internal.go b/lxd/api_internal.go index dcfc667fbb..84b67dfea7 100644 --- a/lxd/api_internal.go +++ b/lxd/api_internal.go @@ -255,12 +255,14 @@ func internalSQLPost(d *Daemon, r *http.Request) Response { func internalSQLSelect(tx *sql.Tx, query string, result *internalSQLResult) error { result.Type = "select" + rows, err := tx.Query(query) if err != nil { return errors.Wrap(err, "Failed to execute query") } defer rows.Close() + result.Columns, err = rows.Columns() if err != nil { return errors.Wrap(err, "Failed to fetch colume names") diff --git a/lxd/db/migration.go b/lxd/db/migration.go index ee769f53cf..f889c661fb 100644 --- a/lxd/db/migration.go +++ b/lxd/db/migration.go @@ -51,12 +51,15 @@ DELETE FROM storage_volumes_config WHERE storage_volume_id NOT IN (SELECT id FRO logger.Debugf("Loading data from table %s", table) data := [][]interface{}{} stmt := fmt.Sprintf("SELECT * FROM %s", table) + rows, err := tx.Query(stmt) if err != nil { return nil, errors.Wrapf(err, "failed to fetch rows from %s", table) } + columns, err := rows.Columns() if err != nil { + rows.Close() return nil, errors.Wrapf(err, "failed to get columns of %s", table) } dump.Schema[table] = columns @@ -69,14 +72,17 @@ DELETE FROM storage_volumes_config WHERE storage_volume_id NOT IN (SELECT id FRO } err := rows.Scan(row...) if err != nil { + rows.Close() return nil, errors.Wrapf(err, "failed to scan row from %s", table) } data = append(data, values) } err = rows.Err() if err != nil { + rows.Close() return nil, errors.Wrapf(err, "error while fetching rows from %s", table) } + rows.Close() dump.Data[table] = data } diff --git a/lxd/db/node/update.go b/lxd/db/node/update.go index 4ffdf936d3..65ba00f889 100644 --- a/lxd/db/node/update.go +++ b/lxd/db/node/update.go @@ -725,11 +725,11 @@ PRAGMA foreign_keys=ON; -- Make sure we turn integrity checks back on.` if err != nil { return err } + defer rows.Close() var tablestodelete []string var rowidtodelete []int - defer rows.Close() for rows.Next() { var tablename string var rowid int diff --git a/lxd/db/query/dump.go b/lxd/db/query/dump.go index 3aa12933c0..0a0cb36258 100644 --- a/lxd/db/query/dump.go +++ b/lxd/db/query/dump.go @@ -86,6 +86,7 @@ func dumpTable(tx *sql.Tx, table, schema string) (string, error) { if err != nil { return "", errors.Wrap(err, "failed to fetch rows") } + defer rows.Close() // Figure column names columns, err := rows.Columns() diff --git a/lxd/db/schema/query.go b/lxd/db/schema/query.go index 3c4b84dbce..9919c78f60 100644 --- a/lxd/db/schema/query.go +++ b/lxd/db/schema/query.go @@ -22,15 +22,18 @@ SELECT COUNT(name) FROM sqlite_master WHERE type = 'table' AND name = 'schema' return false, err } defer rows.Close() + if !rows.Next() { return false, fmt.Errorf("schema table query returned no rows") } var count int + err = rows.Scan(&count) if err != nil { return false, err } + return count == 1, nil }
_______________________________________________ lxc-devel mailing list [email protected] http://lists.linuxcontainers.org/listinfo/lxc-devel
