diff options
author | Daniel Theophanes <kardianos@gmail.com> | 2020-04-28 07:31:12 -0700 |
---|---|---|
committer | Daniel Theophanes <kardianos@gmail.com> | 2020-04-28 20:42:02 +0000 |
commit | ca854f3cdaa577930b385b61571d5176193b738e (patch) | |
tree | 7868afeef33b9dead65d4be6f5a4b1f658723ed3 /src/database | |
parent | e1937251847bce7f6ccc149dfd64b34152588fce (diff) | |
download | go-ca854f3cdaa577930b385b61571d5176193b738e.tar.gz go-ca854f3cdaa577930b385b61571d5176193b738e.zip |
database/sql: document Connect and Close may need a timeout
Opening a connection with Connect should still create a derived
context with a timeout because some clients will not use a timeout
and the connection pool may open a connection asynchronously.
Likewise, if a connection close makes a network operation it should
provide some type of sane timeout for the operation.
Fixes #38185
Change-Id: I9b7ce2996c81c486170dcc84b12672a99610fa27
Reviewed-on: https://go-review.googlesource.com/c/go/+/230438
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Diffstat (limited to 'src/database')
-rw-r--r-- | src/database/sql/driver/driver.go | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/database/sql/driver/driver.go b/src/database/sql/driver/driver.go index 928b308d19..99fbd431be 100644 --- a/src/database/sql/driver/driver.go +++ b/src/database/sql/driver/driver.go @@ -123,7 +123,9 @@ type Connector interface { // // The provided context.Context is for dialing purposes only // (see net.DialContext) and should not be stored or used for - // other purposes. + // other purposes. A default timeout should still be used + // when dialing as a connection pool may call Connect + // asynchronously to any query. // // The returned connection is only used by one goroutine at a // time. @@ -234,6 +236,9 @@ type Conn interface { // connections and only calls Close when there's a surplus of // idle connections, it shouldn't be necessary for drivers to // do their own connection caching. + // + // Drivers must ensure all network calls made by Close + // do not block indefinitely (e.g. apply a timeout). Close() error // Begin starts and returns a new transaction. @@ -320,6 +325,9 @@ type Stmt interface { // // As of Go 1.1, a Stmt will not be closed if it's in use // by any queries. + // + // Drivers must ensure all network calls made by Close + // do not block indefinitely (e.g. apply a timeout). Close() error // NumInput returns the number of placeholder parameters. |