diff options
author | Emmanuel T Odeke <emmanuel@orijtech.com> | 2021-01-18 16:18:11 -0800 |
---|---|---|
committer | Dmitri Shuralyov <dmitshur@golang.org> | 2021-03-30 21:41:42 +0000 |
commit | c77418f4cac41c42566ca90921a1f928995cfba2 (patch) | |
tree | b91ee6f7e76ec9217db99abe94cf73e4a0564d76 /src/cmd/compile/internal/ssa/shortcircuit.go | |
parent | 6df5d3a581380a85183c591d1fd9063a5e8e4b23 (diff) | |
download | go-c77418f4cac41c42566ca90921a1f928995cfba2.tar.gz go-c77418f4cac41c42566ca90921a1f928995cfba2.zip |
[release-branch.go1.15] database/sql: fix tx stmt deadlock when rollback
Tx acquires tx.closemu W-lock and then acquires stmt.closemu.W-lock
to fully close the transaction and associated prepared statement.
Stmt query and execution run in reverse ways - acquires
stmt.closemu.R-lock and then acquires tx.closemu.R-lock to grab tx
connection, which may cause deadlock.
Prevent the lock is held around tx.closePrepared to ensure no
deadlock happens.
Includes a test fix from CL 266097.
Fixes #42884
Updates #40985
Updates #42259
Change-Id: Id52737660ada3cebdfff6efc23366cdc3224b8e8
Reviewed-on: https://go-review.googlesource.com/c/go/+/250178
Run-TryBot: Emmanuel Odeke <emmanuel@orijtech.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Daniel Theophanes <kardianos@gmail.com>
Trust: Emmanuel Odeke <emmanuel@orijtech.com>
(cherry picked from commit d4c1ad882973e407ff85b977f4ce5b9435451190)
Reviewed-on: https://go-review.googlesource.com/c/go/+/284513
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/ssa/shortcircuit.go')
0 files changed, 0 insertions, 0 deletions