凭证生成状态反写问题排查分析

一、分布式事务问题
1. 问题描述
很多业务单据生成凭证之后单据需要回写是否生成凭证的标识,但是很多情况下单据和凭证表不在同一个事务,无法通过数据库的事务保证数据的一致性,因此通过引入平台的分布式事务一致性框架保证生成凭证单据反写和凭证数据的一致性。但是这个框架的引入衍生出常见的问题:凭证提交时候报“还在分布式事务中,不能提交”或者凭证生成或者删除后业务单据没有及时反写。

2. 解决方法
可能原因分析:
1)反写逻辑执行确实很慢,还没结束
2)反写逻辑执行异常,分布式事务后台正在重试,或者多次重试失败转人工处理
3)程序bug引起的
排查方法
1)首先通过单据的业务ID反查应对的分布式事务记录

2)在事务查询中查询分布式事务状态

3)如果状态是“分支事务执行中”,说明反写逻辑还没处理结束,需要排查为什么会执行这么久(数据库负载太高?节点压力太大?)
4)如果状态是“提交失败”,说明执行反写是有异常,点击“查看日志”,排查具体原因

5)其他问题需要开发介入一起排查,解决方法:
5.1 找到系统中配置工具——>分布式事务——>事务补偿这个菜单,事务场景选择财务生成凭证或者财务删除凭证(根据业务操作来选择),重试/回滚结果选处理失败,看有没有异常数据,有的话,选中异常数据点击重试。

5.2 若能够提交成功,则凭证能够正常提交,业务单据凭证生成标识能够正常反写。如果提交失败可能是代码本身有问题,这种情况就需要开发介入。点重试之前,按F12打开开发者工具。
5.3 然后点击重试拿到这次请求的traceId,根据traceId找到相应的monitor日志进行分析。
二、反写配置及日志排查方法
查看DAP配置表(ai_dapconfig),列表预览之后,通过单据标识去查数据,看是否已经配置了反写插件。
查询到业务单据的id,用单据id作为
凭证生成状态反写问题排查分析
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



