seata版本1.5.1,注册到nacos两个节点,客户端采用saga模式,正常情况下,一个事务请求会被分配到一个seata节点管理,如图:
业务流程正常结束,事务被committed。但测试的时候经常发现,当一个事务请求被分配到一个节点后,这个事务的部分日志会出现在另一个节点,那么此时,就算业务流程已经执行完毕,也不会打印committed那条日志,如图: 接收请求的seata节点日志:
另一个节点:
之后,seata服务节点会一直等待超时,这个超时时间是由这个参数:transOperationTimeout控制的,默认值1800000ms。 到了超时时间,若客户端与服务端已经断开连接,服务端就会一直报错:Failed Rollback,1s一次。 若连接未断开,则会打印如下日志:
对客户端进行整体回滚,但这之前业务其实已经执行成功了!