【问题标题】:Warning message Transaction afterCompletion called by a background thread由后台线程调用的警告消息 Transaction afterCompletion
【发布时间】:2015-09-23 05:07:33
【问题描述】:

在我们的应用程序中,我们使用 Hibernate for ORM 并收到以下警告消息

警告:后台线程调用完成后的事务!延迟操作,直到原始线程可以处理它。 [状态=4]

这个警告信息是我们可以忽略它还是我们需要调查它?

问候, 萨库玛

【问题讨论】:

    标签: java hibernate orm concurrency transactions


    【解决方案1】:

    你需要调查一下。只有当事务由一个线程启动,然后由其他一些“清理”线程回滚时,才会发生这种情况。它可能表明您启动了一个事务但从未正确关闭它,或者某些后台清理已决定回滚一个长时间运行的事务。无论哪种方式,您都应该深入研究它。

    【讨论】:

      【解决方案2】:

      我有相同的 WARN 消息和导致事务超时的问题(因为处理需要一些时间...... 10+ 分钟)。

      问题是我有一个实际上是 TimerService 的调度程序。当 TimerService 在预定的时间段用完时,它会调用 @Timeout 实现的方法,该方法将使用我的业务逻辑运行服务。这里的问题是 @Timeout 注释方法会自行启动事务,这意味着要处理大约 1000 多条记录,只有一个事务会处于活动状态,并且会在一段时间后超时。即使我为每条记录启动了新事务,第一个事务也会简单地等待那些完成并再次超时。

      我通过调整 @Timeout 方法中的逻辑来修复它,只处理更小批量但更频繁的数据。

      【讨论】:

        猜你喜欢
        • 2012-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-03
        • 1970-01-01
        • 1970-01-01
        • 2016-05-03
        相关资源
        最近更新 更多