Oceanbase死锁检测问题

看下你的集群状态都正常不,obd cluster display XXX

image

您好,我是OB死锁检测模块的作者,在4.3版本之前,死锁检测功能还处于不完善的状态(时间和精力投入在其他模块的开发重构上,因而在4.3版本之前没有精力顾及),仅能检测基本的死锁。
在您所遇到的这个场景中,死锁检测应该是正常工作的,而之所以在一个session检测到死锁之后另外一个session没有继续执行,很可能因为您使用的是Oracle模式的租户。

OB工作在Oracle模式下时,探测到死锁后的行为同Oracle保持一致:即只回滚语句,但是不回滚事务,需要用户手动回滚事务。
OB工作在Mysql模式下时,探测到死锁后的行为同Mysql保持一致:即直接回滚事务。

两种行为都是可理解的,Oracle采用了更保守的做法,需要用户去判断,而Mysql采用了更激进的做法,但大多数场景下更符合用户的预期。OB兼容它们的行为。

3 个赞

我这个是MySQL租户的呢,确实检测到了死锁,但是没有回滚

奇怪了,我这测了好几次都没有复现你那问题 :rofl:

我也是试了好几次,都是这样,和你发的不一样,真的奇怪

有毒,哈哈哈,没头绪了,复现不来

1 个赞

复现了多次还是一样的情况

1 个赞

我找上面那个作者看看。

1 个赞

麻烦复现一下,然后将集群日志都压缩传一下

你录个屏吧,传上来

你再把过程中的集群日志都打包上传,大家瞅瞅

录屏传不了

observer.log.gz (9.9 MB)

observer.log.gz (7.7 MB)

我在另一个帖子从代码里面有点疑问,可能是类似的情况,就是好像目前死锁检测系统里面没有使用activate的操作,目前只能通过定期重试发现自己所需资源可用吗
ob4.2死锁检测与解除疑问 - 社区问答- OceanBase社区-分布式数据库

你这日志里面没有包含锁冲突,和死锁检测的日志。麻烦重新复现一下,然后把包含锁冲突,死锁检测的日志提供下

持续关注 :grin:

链接: 百度网盘 请输入提取码 提取码: dzrv 复制这段内容后打开百度网盘手机App,操作更方便哦

模拟之后打包了日志,麻烦帮忙看看呢