mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
database/sql: ensure driverConns are closed if not returned to pool
Previously if a connection was requested but timed out during the request and when acquiring the db.Lock the connection request is fulfilled and the request is unable to be returned to the connection pool, then then driver connection would not be closed. No tests were added or modified because I was unable to determine how to trigger this situation without something invasive. Change-Id: I9d4dc680e3fdcf63d79d212174a5b8b313f363f1 Reviewed-on: https://go-review.googlesource.com/36641 Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
9a7544395a
commit
a335c344fa
1 changed files with 2 additions and 2 deletions
|
|
@ -939,14 +939,14 @@ func (db *DB) conn(ctx context.Context, strategy connReuseStrategy) (*driverConn
|
|||
// on it after removing.
|
||||
db.mu.Lock()
|
||||
delete(db.connRequests, reqKey)
|
||||
db.mu.Unlock()
|
||||
select {
|
||||
default:
|
||||
case ret, ok := <-req:
|
||||
if ok {
|
||||
db.putConnDBLocked(ret.conn, ret.err)
|
||||
db.putConn(ret.conn, ret.err)
|
||||
}
|
||||
}
|
||||
db.mu.Unlock()
|
||||
return nil, ctx.Err()
|
||||
case ret, ok := <-req:
|
||||
if !ok {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue