Fix hang when closing a prepared statement
This commit is contained in:
parent
ac97aec513
commit
74752018dc
@ -35,7 +35,7 @@ func (db *PreparedStmtDB) Close() {
|
||||
for _, query := range db.PreparedSQL {
|
||||
if stmt, ok := db.Stmts[query]; ok {
|
||||
delete(db.Stmts, query)
|
||||
stmt.Close()
|
||||
go stmt.Close()
|
||||
}
|
||||
}
|
||||
|
||||
@ -56,7 +56,7 @@ func (db *PreparedStmtDB) prepare(ctx context.Context, conn ConnPool, isTransact
|
||||
db.Mux.Unlock()
|
||||
return stmt, nil
|
||||
} else if ok {
|
||||
stmt.Close()
|
||||
go stmt.Close()
|
||||
}
|
||||
|
||||
stmt, err := conn.PrepareContext(ctx, query)
|
||||
@ -83,7 +83,7 @@ func (db *PreparedStmtDB) ExecContext(ctx context.Context, query string, args ..
|
||||
result, err = stmt.ExecContext(ctx, args...)
|
||||
if err != nil {
|
||||
db.Mux.Lock()
|
||||
stmt.Close()
|
||||
go stmt.Close()
|
||||
delete(db.Stmts, query)
|
||||
db.Mux.Unlock()
|
||||
}
|
||||
@ -97,7 +97,7 @@ func (db *PreparedStmtDB) QueryContext(ctx context.Context, query string, args .
|
||||
rows, err = stmt.QueryContext(ctx, args...)
|
||||
if err != nil {
|
||||
db.Mux.Lock()
|
||||
stmt.Close()
|
||||
go stmt.Close()
|
||||
delete(db.Stmts, query)
|
||||
db.Mux.Unlock()
|
||||
}
|
||||
@ -138,7 +138,7 @@ func (tx *PreparedStmtTX) ExecContext(ctx context.Context, query string, args ..
|
||||
result, err = tx.Tx.StmtContext(ctx, stmt.Stmt).ExecContext(ctx, args...)
|
||||
if err != nil {
|
||||
tx.PreparedStmtDB.Mux.Lock()
|
||||
stmt.Close()
|
||||
go stmt.Close()
|
||||
delete(tx.PreparedStmtDB.Stmts, query)
|
||||
tx.PreparedStmtDB.Mux.Unlock()
|
||||
}
|
||||
@ -152,7 +152,7 @@ func (tx *PreparedStmtTX) QueryContext(ctx context.Context, query string, args .
|
||||
rows, err = tx.Tx.Stmt(stmt.Stmt).QueryContext(ctx, args...)
|
||||
if err != nil {
|
||||
tx.PreparedStmtDB.Mux.Lock()
|
||||
stmt.Close()
|
||||
go stmt.Close()
|
||||
delete(tx.PreparedStmtDB.Stmts, query)
|
||||
tx.PreparedStmtDB.Mux.Unlock()
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user