@Transactional с таймаутом не работает в приложении Springboot для значения, отличного от 1 (таймаут =1)
Я использую spring-boot-starter-data-jpa из Spring Boot 2.0.2.RELEASE, используя spring-data-jpa. БД - это Oracle. JDK 1.8.
Я использую @Transactional
поверх метода, вызывающего длительный запрос. Когда таймаут транзакции установлен на 1, таймаут транзакции истекает в пределах 1 секунды. когда@Transaction
nis до тайм-аута> 1, исключение тайм-аута отсутствует. Выполняется запрос, получаем ответ. Вот снимок моего кода:
@Transactional(propagation = Propagation.REQUIRES_NEW, timeout = 5)
public List<Pojo> doStuff() {
result = myRepository.findDetails(); -- This call long running native query
...
}
Как ни странно, это работает, когда приложение запускается в режиме отладки, а точка останова сохраняется при вызове метода репозитория. Я пробовал следующее
javax.persistence.query.timeout
с подсказкой тоже не таймаутserver.connection-timeout=3s
- не работаетspring.jpa.properties.javax.persistence.query.timeout=10
- не работаетoracle.jdbc.ReadTimeout
- работает, но не истекает в указанное время.
Если указано 100, то иногда возникает исключение за 1 минуту, иногда меньше / больше. Мы получаем ответ от БД через 5 минут. Мы хотели бы установить тайм-аут до этого и отправить клиенту ответ на тайм-аут.