我有大约100请求/秒的系统。有时它会在我重新启动我的go程序之前无法响应。我发现这是因为我打开了交易,并没有在某些地方关闭它。这就是为什么所有的连接被打开交易占用的,我不能打开另一个在这之后我加入这个代码Golang交易退出处理
defer func() {
if r := recover(); r != nil {
tx.Rollback()
return
}
if err == nil {
err = tx.Commit()
} else {
tx.Rollback()
}
}()
这让我一个月工作方案没有中断。但是现在它又发生了。可能是因为这个问题。有没有更好的方式来结束交易?或者,也许一种方式来关闭交易,如果它是开放1分钟?
什么是错误您收到?此外,只是一个旁注,但'回滚'也可以返回一个错误,所以你应该处理它。 – MahlerFive
@MahlerFive,我不确定,它恐慌并导致执行停止。是的,我知道Rollback和Commit也会返回错误,但我不知道如何处理它们 –
你可以发布你的整个功能吗? – MahlerFive