我有大約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