• Brad Fitzpatrick's avatar
    database/sql: close driver Stmt before releasing Conn · 36d3bef8
    Brad Fitzpatrick authored
    From the issue, which describes it as well as I could:
    
    database/sql assumes that driver.Stmt.Close does not need the
    connection.
    
    see database/sql/sql.go:1308:
    
    This puts the Rows' connection back into the idle pool, and
    then calls the driver.Stmt.Close method of the Stmt it belongs
    to.  In the postgresql driver implementation
    (https://github.com/lib/pq), Stmt.Close communicates with the
    server (on the connection that was just put back into the idle
    pool).  Most of the time, this causes no problems, but if
    another goroutine makes a query at the right (wrong?) time,
    chaos results.
    
    In any case, traffic is being sent on "free" connections
    shortly after they are freed, leading to race conditions that
    kill the driver code.
    
    Fixes #5283
    
    R=golang-dev, r
    CC=golang-dev
    https://golang.org/cl/8633044
    36d3bef8
Name
Last commit
Last update
api Loading commit data...
doc Loading commit data...
include Loading commit data...
lib Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.hgignore Loading commit data...
.hgtags Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...