事务一致性问题,系统异常数据未回滚

young 379 2022-05-19

class org.springframework.transaction.TransactionSystemException
Could not roll back JDBC transaction; nested exception is java.sql.SQLException: Connection oracle.jdbc.driver.T4CConnection@3e36c050 is closed.

查看生产环境tomcat数据源配置removeAbandonedTimeout=“180”

查看日志文件赎回失败订单处理时间,订单处理时间大约为9分钟远大于设置的连接回收时间,因此可能订单处理时等待锁时间过长或其他原因,造成超过了设置的连接池回收连接时间,数据库连接被回收。

  • Spring事务未生效
    a) 调用方法本身未正确配置事务
    b) 本类方法直接调用
    c) 数据库操作未通过Spring的DataSourceUtils获取Connection
    d) 多线程调用
  • Spring事务回滚失效
    a) 未准确配置rollback-for属性
    b) 异常类不属于RuntimeException与Error
    c) 应用捕获了异常未抛出
  • Spring事务超时不准确或失效
    a) 超时发生在最后一次JdbcTemplate操作之后
    b) 通过非JdbcTemplate操作数据库,例如Mybatis

https://www.jianshu.com/p/a4229aa79ace