aboutsummaryrefslogtreecommitdiff
path: root/src/database/sql/sql_test.go
diff options
context:
space:
mode:
authorDamien Neil <dneil@google.com>2026-03-27 10:04:29 -0700
committerGopher Robot <gobot@golang.org>2026-03-27 10:31:58 -0700
commit703bb60bf19f5410402fed4c736b31f2f8ec9fba (patch)
treef7f968f9fdbc9c0b0125b289ee59a28c8d44b225 /src/database/sql/sql_test.go
parent2d72c268ea10db520b7dd99802cf2aa40b18c1af (diff)
downloadgo-703bb60bf19f5410402fed4c736b31f2f8ec9fba.tar.xz
database/sql: don't try to synctest.Wait in benchmarks
Benchmarks shouldn't use synctest. Avoid a synctest.Wait in database shutdown when in benchmarks. Fixes #78373 Change-Id: I14755f8eefb3ab5c69cc660b1e884bbf6a6a6964 Reviewed-on: https://go-review.googlesource.com/c/go/+/760400 Auto-Submit: Damien Neil <dneil@google.com> Reviewed-by: Michael Pratt <mpratt@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'src/database/sql/sql_test.go')
-rw-r--r--src/database/sql/sql_test.go24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go
index 44de5e70b8..0f5268054c 100644
--- a/src/database/sql/sql_test.go
+++ b/src/database/sql/sql_test.go
@@ -184,8 +184,21 @@ func closeDB(t testing.TB, db *DB) {
}
// Connections close asynchronously; wait for them to finish doing so.
- synctest.Wait()
- if numOpen := db.numOpenConns(); numOpen != 0 {
+ numOpenConns := func() int {
+ db.mu.Lock()
+ defer db.mu.Unlock()
+ return db.numOpen
+ }
+ if _, ok := t.(*testing.B); ok {
+ // We don't use synctest in benchmarks, so just poll.
+ deadline := time.Now().Add(5 * time.Second)
+ for numOpenConns() > 0 && time.Now().Before(deadline) {
+ time.Sleep(1 * time.Millisecond)
+ }
+ } else {
+ synctest.Wait()
+ }
+ if numOpen := numOpenConns(); numOpen != 0 {
t.Fatalf("%d connections still open after closing DB", numOpen)
}
}
@@ -213,13 +226,6 @@ func (db *DB) numFreeConns() int {
return len(db.freeConn)
}
-func (db *DB) numOpenConns() int {
- synctest.Wait()
- db.mu.Lock()
- defer db.mu.Unlock()
- return db.numOpen
-}
-
// clearAllConns closes all connections in db.
func (db *DB) clearAllConns(t *testing.T) {
db.SetMaxIdleConns(0)