私は約100リック/秒のシステムを持っています。そして、私はgoプログラムを再開するまで応答しないことがあります。私はトランザクションを開いて、いくつかの場所でそれを閉じないので、これがわかった。これは、中断することなく月の私のプログラムの仕事をしたゴラン取引終了処理
私はこのコードを追加defer func() {
if r := recover(); r != nil {
tx.Rollback()
return
}
if err == nil {
err = tx.Commit()
} else {
tx.Rollback()
}
}()
すべての接続が開かれたトランザクションによって占有された理由ですし、私はこの後に別のものを開くことができませんでした。しかし、今は再びそれが起こった。おそらくこの問題が原因です。トランザクションを閉じるためのより良い方法はありますか?それが1分間開いていたらトランザクションを終了する方法ですか?
エラーは何ですか?また、ちょうどsidenoteですが、 'Rollback'もエラーを返すことができるので、それを処理する必要があります。 – MahlerFive
@MahlerFive、私はまだ確信が持てません。パニックになり、実行を停止させます。はい、ロールバックとコミットもエラーを返しますが、私はそれらの処理方法がわかりません。 –
全体機能を投稿できますか? – MahlerFive