summaryrefslogtreecommitdiff
path: root/src/database/sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/database/sql')
-rw-r--r--src/database/sql/sql_test.go20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go
index 4b02657b7e..c968852ade 100644
--- a/src/database/sql/sql_test.go
+++ b/src/database/sql/sql_test.go
@@ -2888,20 +2888,26 @@ func TestConnExpiresFreshOutOfPool(t *testing.T) {
waitingForConn := make(chan struct{})
go func() {
+ defer close(afterPutConn)
+
conn, err := db.conn(ctx, alwaysNewConn)
- if err != nil {
- t.Fatal(err)
+ if err == nil {
+ db.putConn(conn, err, false)
+ } else {
+ t.Errorf("db.conn: %v", err)
}
- db.putConn(conn, err, false)
- close(afterPutConn)
}()
go func() {
+ defer close(waitingForConn)
+
for {
+ if t.Failed() {
+ return
+ }
db.mu.Lock()
ct := len(db.connRequests)
db.mu.Unlock()
if ct > 0 {
- close(waitingForConn)
return
}
time.Sleep(10 * time.Millisecond)
@@ -2910,6 +2916,10 @@ func TestConnExpiresFreshOutOfPool(t *testing.T) {
<-waitingForConn
+ if t.Failed() {
+ return
+ }
+
offsetMu.Lock()
if ec.expired {
offset = 11 * time.Second