gpt4 book ai didi

spring - 如何记录 Spring 事务内容

转载 作者:行者123 更新时间:2023-12-04 12:56:24 25 4
gpt4 key购买 nike

有各种记录 Spring 事务管理器的事件(启动、提交和回滚)的帖子。但是,我最近遇到了一个死锁问题,仅记录事件是不够的。

我们代码中的基本问题是事务传播 REQUIRED 和 REQUIRES_NEW 的困惑使用。有太多的方法来回调用,以至于我们最终将大量事务堆叠在一起。唉,代码库很大,解决方案很紧迫......(我们都知道这是什么。)

这个问题是一个死锁,因为代码被添加到一个事务中的查询实体,这些实体在另一个事务中被按顺序修改。 Spring 吐出一个异常,告诉实体 X 的更新超时,因为它已被锁定。现在,知道这一点很好,但是如何找到错误代码:执行早期锁定的查询。

我的问题(最后):有没有办法记录添加到事务中的实体?通过这种方式,我可以专门查找锁定 Spring 提示的实体的事务。

谢谢 ! :-)

最佳答案

Spring 委托(delegate)给事务管理器,因此 Spring 不知道事务中触及了哪些实体,事务管理器知道。正如 Donz 所说,查看交易经理的信息是最好的调查方法。

您还可以检查所有事务定义并从除只写/始终写入类型方法(如审计或日志记录)之外的所有内容中删除 REQUIRES_NEW。如果您的主要业务逻辑中有 REQUIRES_NEW ,则它是一个错误或一些非常奇怪的设计。盲目移除它的副作用可能比你想象的要少。

关于spring - 如何记录 Spring 事务内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3656559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com