OptimisticLockException отктывает верхнюю тразакцию
От: Ballista  
Дата: 26.12.22 20:04
Оценка:
подскажите, что за проблема с этим кодом. он запускается внутри большой транзакции от spring batch
public class TablesSynchronizer {
    ...
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void forceTableUpdate(){
      ....
        try {
            if (!service.scheduleExecutionForTable(pid, table)) {
                throw new RuntimeException("Could not set next time for table=" + table);
            }
        } catch(OptimisticLockException e) {
            log.warn("OptimisticLockException catched for pid " + pid);
        }
        log.info("Next time for table set, table=" + table);
    }
}

вижу WARN лог от OptimisticLockException и INFO "Next time set", но после них spring batch откатывает верхнюю транзакцию с сообщением
Commit failed while step execution data was already updated. Reverting to old version.
как так выходит, ведь exception в отдельной от spring batch транзакции ?

на stackoverflow нашел похожий случай без ответа
https://stackoverflow.com/questions/34036345/why-does-spring-propagation-required-span-nested-logical-transactions?rq=1
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.