mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
database/sql: deflake TestPendingConnsAfterErr and fix races, panics
TestPendingConnsAfterErr only cared that things didn't deadlock, so 5 seconds is a sufficient timer. We don't need 100 milliseconds. I was able to reproduce with a tiny (5 nanosecond) timeout value, instead of 100 milliseconds. In the process of testing with -race and a high -count= value, I noticed several data races and panics (sendings on a closed channel) which are also fixed in this change. Fixes #15684 Change-Id: Ib4605fcc0f296e658cb948352ed642b801cb578c Reviewed-on: https://go-review.googlesource.com/24550 Reviewed-by: Marko Tiikkaja <marko@joh.to> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
This commit is contained in:
parent
0692891808
commit
733aefd06e
2 changed files with 10 additions and 2 deletions
|
|
@ -718,6 +718,9 @@ func (db *DB) maybeOpenNewConnections() {
|
|||
for numRequests > 0 {
|
||||
db.numOpen++ // optimistically
|
||||
numRequests--
|
||||
if db.closed {
|
||||
return
|
||||
}
|
||||
db.openerCh <- struct{}{}
|
||||
}
|
||||
}
|
||||
|
|
@ -915,6 +918,9 @@ func (db *DB) putConn(dc *driverConn, err error) {
|
|||
// If a connRequest was fulfilled or the *driverConn was placed in the
|
||||
// freeConn list, then true is returned, otherwise false is returned.
|
||||
func (db *DB) putConnDBLocked(dc *driverConn, err error) bool {
|
||||
if db.closed {
|
||||
return false
|
||||
}
|
||||
if db.maxOpen > 0 && db.numOpen > db.maxOpen {
|
||||
return false
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue