- 预审中
- 预审通过
- 已采纳
- 4 已实现
【产品缺陷】DME全局事务,创建全局事务需要传入原子接口个数,在事务提交时,原子个数与创建个数不一致不让提交问题 已实现 编辑 删除
- 工业软件
- 工业数字模型驱动引擎iDME
场景描述:
步骤1:创建事务型任务,传入services/rdm/basic/api/v1/transaction-apis/transactions?api-count=N
步骤2:执行iDME原子接口,header传入
X-Dme-Transaction-Task-Id |
是 |
Long |
事务型任务ID,即步骤1:创建事务型任务返回的transactionId。 |
X-Dme-Transaction-Task-No |
步骤3:提交事务型任务
/services/rdm/basic/api/v1/transaction-apis/transactions/{transaction-id}
此时当执行的iDME原子接口的个数为4个,创建事务时api-acount为4个,提交事务能正常提交;但是创建事务时api-count为5个时,提交报错:The params are invalid, reason is the number[2] of tasks received by the server is wrong.
我们使用场景,针对同一个接口,针对不通的条件,有可能走的原子接口个数也不一定一致,此时没办法预知有多少个原子接口需要事务,但是不到达api-count时,也应该给我提交成功。
建议方案:
经我们猜测,iDME事务将原子事务存放在缓存里面,为了防止网络抖动,造成原子接口还没全部接收到,就提前接收到提交事务的请求,此时如果不判断事务原子个数和实际执行的原子个数,就会造成事务不一致,所以才会限制创建事务的个数,以此限制创建个数与提交事务个数一致。
建议方案:
步骤1:创建事务型任务不指定原子个数
步骤2:执行iDME原子接口,header传入
X-Dme-Transaction-Task-Id |
是 |
Long |
事务型任务ID,即步骤1:创建事务型任务返回的transactionId。 |
X-Dme-Transaction-Task-No |
步骤3:提交事务型任务,除了提交全局事务id(transactionId),还需要传入执行的原子接口个数api-count(此时将原子个数的控制交由业务方控制)
在接收到事务提交请求时,拿到api-count个数,与iDME的队列的存放的原子接口执行的个数对比,如果缓存队列的个数与api-count一致,则直接提交事务;如果不一致,防止因为网络抖动造成原子接口未接收到,则提交时做一段时间的等待,再次去判断api-count与缓存队列的个数对比,确保事务的完整性。
yd_269830850
发布于 2023-10-23 18:12:22
2023-10-23
213 2
0/1000
仅支持JPG、JPEG、PNG、GIF,数量不超过4张且每张大小不超过2MB
删除建议
全部评论(2)
评论(2)
您好,您提出的建议产品团队已经优化上线解决啦,感谢您对华为云的支持与信任,若在使用还有其它建议,可通过云声平台提出,我们会尽快确认后并给您回复,再次感谢您的支持与关注!
非常感谢您的反馈,您的建议和诉求已经收到,并已提交至相关产品团队进行核查评估,评估完成后对于建议是否采纳会尽快给您答复,也请您持续关注云声平台,了解反馈建议处理进展,感谢您对华为云的支持!