网络互斥:如何解决当界面操作提示互斥,互斥列表却不存在记录的问题

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

网络互斥:如何解决当界面操作提示互斥,互斥列表却不存在记录的问题


1 问题描述

执行界面操作提示数据被锁定,但是在互斥列表中却没有看到互斥记录应该如何处理


2 分析思路

2.1 如何确认锁定该业务数据的源操作,有两种方式


2.1.1  第一种方式:根据提示互斥的traceid 在monitor中搜索记录



(1)通过关键字DataMutex.afterLocked,搜索加锁失败的信息,从下图可知,提交操作想要申请这条数据的锁,但是失败了


(2)将entityKey:实体编码作为关键字,将上个搜索结果的时间作为结束时间,在monitor中搜索是否这段时间有其他操作占用了这个锁

通过上述信息,可以看到该数据被列表的超链接点击操作锁定了,opKey,opMethod是执行该锁定的操作


注意:这种方式查找比较快速,适合申请锁不是很频繁的场景。

如果数据被锁的时间较长或者该业务场景比较频繁的申请锁,用这种方式就不太好排查,可以考虑用下面的方式


2.1.2 第二种方式:需要根据网络互斥的key去redis上查找数据被锁的具体时间

(1)key的组成accountID_ datalock_entityKey_groupId

accountID:数据中心id

datalock:固定值

entityKey:实体编码

groupId:普通操作一般为default_netctrl,如果有二开网络互斥的场景要用当时自定义的编码

例如:1173910536060928000_datalock_bos_user_default_netctrl

(2)根据被锁的数据id找到被锁的时间(lockedTime)


(3)将时间戳转换成北京时间作为开始时间,将DataMutex.afterLocked作为查询关键字,去monitor查询

如上述信息,可以看到该数据被列表的超链接点击操作锁定了


2.2  如何确认锁是否释放

(1)当数据可以被操作时,锁已释放

(2) 可通过关键字DataMutex.doRelease和数据id,在monitor中查询是否有释放日志


3 如何解决删除锁

(1)先确认互斥锁能不能删

现在业务逻辑由于申请不到锁执行不下去了,之前遗留未删除的锁是否能删除,需要执行该操作的业务判断。是否有正常执行中的流程依赖这个锁,释放锁后是否会导致重复付款,重复计算等问题。

(2)正常情况下从互斥列表界面删除

(3)将redis中互斥锁的key以及需要删除的数据id反馈给运维,让运维帮忙删掉这个锁


网络互斥:如何解决当界面操作提示互斥,互斥列表却不存在记录的问题

1 问题描述执行界面操作提示数据被锁定,但是在互斥列表中却没有看到互斥记录应该如何处理2 分析思路2.1 如何确认锁定该业务数据的源操...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息