У меня есть код планировщика (в гралях), который выполняется внутри блока транзакции:
Plan.withTransaction{
.....
plan.save(failOnError: true)
transaction.save(failOnError: true)
try{
smsService.sendSMS(transaction) // transactional service
}catch(Exception e){
}
..........
}
Внутри метода sendSMS:
def sendSMS(Transaction transaction){
try{
getSMSContent()
sendSms()
} catch(Exception e){ print ...exception catched here.... }
}
String getSMSContent(...){
..... it throws exception in some cases
}
Теперь проблема заключается в том, что план и транзакция не сохранено (проверка вернет нормально без ошибок), если getSMSContent()
выдает исключение. Я думаю, что транзакция не должна откатываться, потому что мы перехватили исключение в том же сервисе. Нужно ли перехватывать исключение в том же методе, который называется getSMSContent, чтобы транзакция не откатывалась и план / транзакция сохранялись даже в случае сбоя SMS?
Или я должен пометить службу SMS как «require_New», чтобы что новая транзакция создана?