私のgrailsアプリケーションで私は頻繁に取得org.springframework.transaction.HeuristicCompletionException:ヒューリスティック完了:結果の状態がロールバックされます。入れ子になった例外はorg.springframework.transaction.UnexpectedRollbackExceptionです。トランザクションはロールバック専用としてマークされているためロールバックされます。私は何らかの形で@Transactionalによって注釈が付けられたメソッドの内部で何らかの例外が発生し、それ自身の@Transactionalを持つメソッドの中で呼び出されたときにこれが起こることを発見しました。私のクエリはこの例外を単に捕まえて無視することができますか?GrailsのHeuristicCompletionExceptionを単純に無視できますか?
1
A
答えて
1
私はコメントのSudhirが示唆するように、ヒューリスティックな完了問題をメソッドの1つに複製でき、新しいトランザクション/メソッドを作成するサービスによって既存のトランザクションの使用をロールバックしないことがわかりましたよう:@Transactional(伝播= PROPAGATION.REQUIRES_NEW)をアノテート
@Transactional
Class MyService {
@Transactional(propagation = PROPAGATION.REQUIRES_NEW)
def myMethod(){
throw new Exception();
}
}
これは方法のために新しいトランザクションを作成し、既存のトランザクションを中断します。メソッドが実行されるたびに新しいトランザクションが作成されるため、巨大なマルチスレッドアプリケーションのパフォーマンス上の問題となるはずです。サービスクラス内の各メソッドで発生するすべての例外を処理することでこれを軽減しました。これは良いでしょう。
関連する問題
- 1. XML ::単純なemdashタグを無視しますか?
- 2. Android - 要素を無視する単純なフレームワークパーサーですか?
- 3. Grails 3 - 条件付きでSpockテストを無視する
- 4. Grails @Id Annotationを無視する
- 5. GrailsのdefaultPackageは無視されますか?
- 6. 単純なgtkキープレスイベントの例では、GDK_SHIFT_MASKは無視されるようです。
- 7. 無視されたプロパティと単純な迅速なプロパティ
- 8. org.apache.kafka.common.errors.NotLeaderForPartitionExceptionsを無視できますか?
- 9. エラー:無効な値は無視されない - 単純なCプログラム
- 10. grails hiberate discard()が無視される
- 11. Grailsアプリケーションでモバイルデバイスを検出する単純な方法は何ですか?
- 12. Omnet ++単純無線ノード
- 13. cin.getlineは最初の単語を無視しますか?
- 14. 単純なトランザクションにsocket.ioを使用できますか?
- 15. 単純なASP.NETソリューションにSQL Azureを使用できますか?
- 16. 無視SVN無視...可能ですか?
- 17. 一種の単純な多型に使用できますか?
- 18. Grails 3.2 - 足場のコントローラでdefaultActionが無視されましたか?
- 19. UIViewはインターフェイスの向きを「無視」できますか?
- 20. 単一のテストでエラーを無視します。
- 21. Grails Spring Securityで@Securedが無視されるのはなぜですか?
- 22. 単純なDFSが無限ループに詰まっています
- 23. MongoDBで並べ替え順序を無視したGrails投影
- 24. linodeはdjangoのデプロイメントを単純化できますか?
- 25. 単純な301のリダイレクトは私のhtaccessに無限ループを作りますか?
- 26. 更新時にHibernateがエンティティメンバーを無視できますか?
- 27. Herokuはデプロイ時にgitサブモジュールを無視できますか?
- 28. Spring Data MongoDBのフィールドで@TextIndexedを無視できますか?
- 29. Windows SVNで1つのファイルを無視できますか?
- 30. C#の単純な無名メソッド
トランザクションはあなたの側から何もしてロールバックされません。 –
この問題はランダムに発生しています。一時的な問題によってトランザクションがロールバックされている可能性があります。これは次回のログイン時に修正されますが、例外で生成された電子メールをこの例外でトリガーする必要はありません。 –
何が起こっているかは、ネストされたメソッド呼び出しの1つがチェックされていない例外をスローするため、トランザクションがロールバックのみとしてマークされます。そしてあなたのコードが例外をキャッチしているところを呼び出します。しかし、トランザクションはロールバックのみとしてマークされており、このUnexpectedRollbackExceptionエラーが表示されます。チェックされていない例外がトランザクションメソッドを越えていないか、その前にキャッチするか、元の例外をすべて伝えるか、このUnexpectedRollbackExceptionを無視してください。 –