私の Grails サービスには、トランザクションに関係のない飲み込まれた例外が原因で、ドメイン オブジェクトの永続性に関係がない場合でも、トランザクションがロールバックされるという問題があります。
私のサービスでは、次のようなものがあります
updateSomething(domainObj) {
def oldFilename = domainObj.filename
def newFilename = getNewFilename()
domainObj.filename = newFilename
domainObj.save(flush: true)
try {
cleanUpOldFile(oldFilename)
} catch (cleanupException) {
// oh well, log and swallow
}
}
私が見ているのは、古いファイルをクリーンアップしているときに例外が発生した場合、ログに記録して飲み込みますが、ドメイン オブジェクトの更新が既に完了しているにもかかわらず、トランザクションがロールバックすることです。
スコープ トランザクションがクリーンアップの前に完了するように制限するにはどうすればよいですか。または、ロールバックを引き起こさないようにクリーンアップの例外を取得する別の方法はありますか?
記録のために、私はGrails 2.1.1を使用しています