From 6efa2f22ac45e9f12eccdc0eafe1799b9eb78dd3 Mon Sep 17 00:00:00 2001 From: Daniel Theophanes Date: Wed, 3 May 2017 08:57:05 -0700 Subject: [release-branch.go1.8] database/sql: ensure releaseConn is defined before a possible close Applies https://golang.org/cl/42139 to the go1.8 release branch. Also correct two minor issues detected with go vet. Fixes #20217 Change-Id: I2c41af9497493598fbcfc140439b4e25b9bb7e72 Reviewed-on: https://go-review.googlesource.com/42532 Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot Reviewed-by: Chris Broadfoot --- src/database/sql/sql.go | 2 +- src/database/sql/sql_test.go | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go index c016681fca..f8a884446e 100644 --- a/src/database/sql/sql.go +++ b/src/database/sql/sql.go @@ -1955,12 +1955,12 @@ func (s *Stmt) QueryContext(ctx context.Context, args ...interface{}) (*Rows, er rowsi: rowsi, // releaseConn set below } - rows.initContextClose(ctx) s.db.addDep(s, rows) rows.releaseConn = func(err error) { releaseConn(err) s.db.removeDep(s, rows) } + rows.initContextClose(ctx) return rows, nil } diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go index 450e5f1f8c..381aafc86b 100644 --- a/src/database/sql/sql_test.go +++ b/src/database/sql/sql_test.go @@ -322,7 +322,7 @@ func TestQueryContext(t *testing.T) { select { case <-ctx.Done(): if err := ctx.Err(); err != context.Canceled { - t.Fatalf("context err = %v; want context.Canceled") + t.Fatalf("context err = %v; want context.Canceled", ctx.Err()) } default: t.Fatalf("context err = nil; want context.Canceled") @@ -413,7 +413,8 @@ func TestTxContextWait(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) - ctx, _ := context.WithTimeout(context.Background(), time.Millisecond*15) + ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond*15) + defer cancel() tx, err := db.BeginTx(ctx, nil) if err != nil { -- cgit v1.2.3-54-g00ecf