我的 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