全部建议 > 建议详情
  • 预审中
  • 预审通过
  • 已采纳
  • 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 yd_269830850 发布于 2023-10-23 18:12:22 2023-10-23

213 2

0%
0人赞同
0%
0人不赞同

全部评论(2

评论(2

  • 【云声小管家】 子规 2025-01-10 11:00:51

    您好,您提出的建议产品团队已经优化上线解决啦,感谢您对华为云的支持与信任,若在使用还有其它建议,可通过云声平台提出,我们会尽快确认后并给您回复,再次感谢您的支持与关注!

  • 【云声小管家】 子规 2023-10-24 10:26:42

    非常感谢您的反馈,您的建议和诉求已经收到,并已提交至相关产品团队进行核查评估,评估完成后对于建议是否采纳会尽快给您答复,也请您持续关注云声平台,了解反馈建议处理进展,感谢您对华为云的支持!

登录后可评论,请 注册

0/1000

+ 插入图片0/4

仅支持JPG、JPEG、PNG、GIF,数量不超过4张且每张大小不超过2MB

评论
发表评论...
取消 发表

0/1000

评论成功

+ 插入图片0/4

仅支持JPG、JPEG、PNG、GIF,数量不超过4张且每张大小不超过2MB

删除建议

设置昵称

在此一键设置昵称,即可发表云声建议!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。