记录一次分布式事务SEATA遇到的巨坑报错,开发环境没有问题,但是测试环境频繁出现事务报错。
报错提示:
org.springframework.orm.jpa.JpaSystemException: Unable to commit JDBC Connection;nested exception is org.hibernate.TransactionException:Unable to commit against JDBC Connection
在开发环境从没遇过这样的报错,但是测试环境经常会出现,而且某些数据在编辑时候只要报了一次这样的错,后面编辑都会一直报这个错。
原因:
查看了一下这两个环境不一样的地方是防火墙,测试环境防火墙设置了老化时间为20分钟,而开发环境设置了防火墙为不老化,由于分布式事务服务与数据库需要一直保持长连接,但防火墙超过20分钟后会删除该会话,导致部分新增事务控制的数据库锁记录未被删除,因此数据超时异常。