У службы My 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