[lxc-devel] [lxd/master] Add a few missing rows.Close() calls

freeekanayaka on Github lxc-bot at linuxcontainers.org
Mon Aug 20 09:59:00 UTC 2018


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 361 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180820/e51c1fb4/attachment.bin>
-------------- next part --------------
From f87e3d4acd7d9d37a676ab2335ac94a5dbd6a8f6 Mon Sep 17 00:00:00 2001
From: Free Ekanayaka <free.ekanayaka at canonical.com>
Date: Mon, 20 Aug 2018 11:58:14 +0200
Subject: [PATCH] Add a few missing rows.Close() calls

Signed-off-by: Free Ekanayaka <free.ekanayaka at canonical.com>
---
 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
 }
 


More information about the lxc-devel mailing list