diff options
| author | Brad Fitzpatrick <bradfitz@golang.org> | 2014-05-07 11:54:29 -0700 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@golang.org> | 2014-05-07 11:54:29 -0700 |
| commit | ce6b75dab634e272e0449f85853fca7f1850da8b (patch) | |
| tree | ae0029f31ab06ce13bdfb3916ac6cba956799fa8 /src/pkg/database/sql/sql.go | |
| parent | 97aa90d251f6f2a951d01b7d1033bc7a42bf6f69 (diff) | |
| download | go-ce6b75dab634e272e0449f85853fca7f1850da8b.tar.xz | |
database/sql: fix accounting of open connections
Existing test TestMaxOpenConns was failing occasionally, especially
with higher values of GOMAXPROCS.
Fixes #7532
LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/95130043
Diffstat (limited to 'src/pkg/database/sql/sql.go')
| -rw-r--r-- | src/pkg/database/sql/sql.go | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/pkg/database/sql/sql.go b/src/pkg/database/sql/sql.go index 4874574c30..ef54dcdf91 100644 --- a/src/pkg/database/sql/sql.go +++ b/src/pkg/database/sql/sql.go @@ -652,13 +652,16 @@ func (db *DB) conn() (*driverConn, error) { return conn, nil } + db.numOpen++ // optimistically db.mu.Unlock() ci, err := db.driver.Open(db.dsn) if err != nil { + db.mu.Lock() + db.numOpen-- // correct for earlier optimism + db.mu.Unlock() return nil, err } db.mu.Lock() - db.numOpen++ dc := &driverConn{ db: db, ci: ci, |
