Ausnahme bei der Verwendung von Timeout bei der Transaktion
Posted: 03 Apr 2025, 09:53
Ich verwende Spring Boot 3 mit einer Oracle-Datenbank (Jarepository und Hikari-Verbindung werden verwendet) und ich habe ein seltsames Verhalten, wenn ich Timeout auf @Transactional verwende.
Ich habe im Moment eine JPA-Ausnahme, da der Rollback nicht durchgeführt werden kann, da die Verbindung nach einer SQL-Ausnahme geschlossen wurde (mit ORA-01013-Fehler).>
Code: Select all
@Transactional(readOnly = true, timeout = 30)
< /code>
Wenn Timeout auftritt, sehe ich diese Fehler in Protokollen: < /p>
ORA-01013: user requested cancel of current operation
Im Controller habe ich, wenn ich die vom Service ausgelöste Ausnahme fange, eine JPA -Ausnahme, da ein Rollback nicht durchgeführt werden kann, da die Verbindung geschlossen ist. Außerdem erwarte ich keinen Fehler aufgrund einer geschlossenen Verbindung, sondern nur eine transaktionsübergreifende oder ähnliche, um anzuzeigen, dass der Fehler auf Timeout zurückzuführen ist.try {
this.myService.doService();
} catch(Exception e) { // An explicit exception indication that we had a timeout (ex: TransactionTimedOutException)
// return a specific error code to front-end
}