Skip to content

Conversation

@xydoublez
Copy link

  • I have registered the PR changes.

Ⅰ. Describe what this PR did

add config client undo data validation ignore column compare
主要解决针对使用数据库触发器更新表的更新时间字段,导致全局事务锁超时的问题

Ⅱ. Does this pull request fix one issue?

Ⅲ. Why don't you add test cases (unit test/integration test)?

Ⅳ. Describe how to verify it

unit test ok

Ⅴ. Special notes for reviews

@funky-eyes funky-eyes added the Do Not Merge Do not merge into develop label Jan 19, 2022
@funky-eyes
Copy link
Contributor

funky-eyes commented Jan 19, 2022

#3890
#4253
我想你应该开启ConfigurationKeys.TRANSACTION_UNDO_ONLY_CARE_UPDATE_COLUMNS这个配置项

@xydoublez
Copy link
Author

#3890 #4253 我想你应该开启ConfigurationKeys.TRANSACTION_UNDO_ONLY_CARE_UPDATE_COLUMNS这个配置项

这个配置项,我看了,无法用于全局事务回滚时且数据库触发器导致更新相关字段导致前后镜像不一致的情况

@funky-eyes
Copy link
Contributor

funky-eyes commented Jan 19, 2022

#3890 #4253 我想你应该开启ConfigurationKeys.TRANSACTION_UNDO_ONLY_CARE_UPDATE_COLUMNS这个配置项

这个配置项,我看了,无法用于全局事务回滚时且数据库触发器导致更新相关字段导致前后镜像不一致的情况

因为insert当时还是全部字段来校验的,1.5上会改为上面pr的方式,你这个跳过的方式不太可取

@funky-eyes
Copy link
Contributor

现在只有2种情况 1. insert时回滚 2.insert后 重入该数据进行update 回滚时也会出现校验不通过
第一种在3890pr进行修复
第二种在4253进行处理
还有就是你都打算加入可跳过校验的字段,直接后镜像不select该字段就可以了

@xydoublez
Copy link
Author

局事务回滚时且数据库触发器导致更新相关字段导致前后镜像不一致的情况

#3890 #4253 我想你应该开启ConfigurationKeys.TRANSACTION_UNDO_ONLY_CARE_UPDATE_COLUMNS这个配置项

#3890 #4253 我想你应该开启ConfigurationKeys.TRANSACTION_UNDO_ONLY_CARE_UPDATE_COLUMNS这个配置项

这个配置项,我看了,无法用于全局事务回滚时且数据库触发器导致更新相关字段导致前后镜像不一致的情况

因为insert当时还是全部字段来校验的,1.5上会改为上面pr的方式,你这个跳过的方式不太可取

收到,若1.5支持话,那就挺好的,因为有触发器会更新源表相关更新时间的字段,导致获取全局锁失败

@funky-eyes
Copy link
Contributor

局事务回滚时且数据库触发器导致更新相关字段导致前后镜像不一致的情况

#3890 #4253 我想你应该开启ConfigurationKeys.TRANSACTION_UNDO_ONLY_CARE_UPDATE_COLUMNS这个配置项

#3890 #4253 我想你应该开启ConfigurationKeys.TRANSACTION_UNDO_ONLY_CARE_UPDATE_COLUMNS这个配置项

这个配置项,我看了,无法用于全局事务回滚时且数据库触发器导致更新相关字段导致前后镜像不一致的情况

因为insert当时还是全部字段来校验的,1.5上会改为上面pr的方式,你这个跳过的方式不太可取

收到,若1.5支持话,那就挺好的,因为有触发器会更新源表相关更新时间的字段,导致获取全局锁失败

我建议你可以将此pr进一步改造,支持全局跳过某些字段的后镜像处理,这样回滚的时候后镜像没这个数据,也不用担心回滚不成功了,比如跟金额无关的数据,name改为张三,又改为李四,简介字段改为我是张三和我是李四对系统影响并不大,所以你可以改成后镜像处理的时候从select里去掉这个字段的查询,这样就不会生成这个字段,也就不会去校验了,代码还少一些

@funky-eyes
Copy link
Contributor

其实这个不是导致获取全局锁失败的问题,是校验不过导致无法释放全局锁,误认为数据被脏写导致的

@xydoublez
Copy link
Author

现在只有2种情况 1. insert时回滚 2.insert后 重入该数据进行update 回滚时也会出现校验不通过 第一种在3890pr进行修复 第二种在4253进行处理 还有就是你都打算加入可跳过校验的字段,直接后镜像不select该字段就可以了

收到

@xydoublez
Copy link
Author

其实这个不是导致获取全局锁失败的问题,是校验不过导致无法释放全局锁,误认为数据被脏写导致的

是的,所以想加入一个配置项,忽略指定字段的对比,使其判定不是脏写。

@funky-eyes
Copy link
Contributor

其实这个不是导致获取全局锁失败的问题,是校验不过导致无法释放全局锁,误认为数据被脏写导致的

是的,所以想加入一个配置项,忽略指定字段的对比,使其判定不是脏写。

可以的,但是不再放在校验的时候再使用,而是应该放在生产后镜像的select 字段列表生成时进行处理,你改一下吧

@slievrly slievrly added mode: AT AT transaction mode module/rm-datasource rm-datasource module labels Feb 10, 2022
@funky-eyes
Copy link
Contributor

你好,请问你那边还有意愿跟进此pr吗?如果一周内无回复等,将关闭该pr转为发布issue由社区处理

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Do Not Merge Do not merge into develop mode: AT AT transaction mode module/rm-datasource rm-datasource module

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants