当前位置: 首页 > 知识库问答 >
问题:

野蝇8.0.0。最终EntityManager PostgreSQL-事务空闲

郑西岭
2023-03-14

我有以下代码运行在野飞8.0.0.最终:

@Stateful
public class MyJPABean<T> {

    @PersistenceContext(unitName = "myUnitName")
    private EntityManager em;

    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void write(T entity) {
        em.persist(entity);
        em.flush();
    }

    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void update(T entity) {
        em.merge(entity);
    }
}

write和update方法都被并行调用,因为它们直接从另一个处理HTTP请求的类调用:

@Path("api")
public class MyApiController {

    private MyJPABean<MyJpaModel> jpaBean;

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public void handlePost(MyJpaModel myJpaModel) {
       jpaBean.write(myJpaModel);
    }
}

一些“write”方法调用是成功的,但有时,当“write”方法被多个线程并行调用时,它开始挂起em.persist(entity)。

在PostgreSQL server端,我可以看到事务处于“idle in transaction”状态,查询为:“select nextval('hibernate_sequence')”或插入从我刚刚尝试持久化的实体创建的查询。

当这个问题发生时,我不能再持久化实体了。一切都取决于em.persist(实体)。要么我不能杀死野蝇进程,我必须用-9信号杀死它。

我做错什么了吗?

一段时间后(超时发生时),我可以在应用程序日志中看到以下警告:

16:44:30,590 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper) ARJUNA012117: TransactionReaper::check timeout for TX 0:ffff7f000101:-231d9b5d:55030494:2d in state  RUN
16:44:30,591 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper Worker 0) ARJUNA012095: Abort of action id 0:ffff7f000101:-231d9b5d:55030494:2d invoked while multiple threads active within it.
16:44:30,591 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper Worker 0) ARJUNA012108: CheckedAction::check - atomic action 0:ffff7f000101:-231d9b5d:55030494:2d aborting with 1 threads active!
16:44:30,598 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper) ARJUNA012117: TransactionReaper::check timeout for TX 0:ffff7f000101:-231d9b5d:55030494:35 in state  RUN
16:44:31,090 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper) ARJUNA012117: TransactionReaper::check timeout for TX 0:ffff7f000101:-231d9b5d:55030494:2d in state  CANCEL
16:44:31,092 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper) ARJUNA012378: ReaperElement appears to be wedged: com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.afterCompletion(TwoPhaseCoordinator.java:487)
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.afterCompletion(TwoPhaseCoordinator.java:463)
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.cancel(TwoPhaseCoordinator.java:118)
com.arjuna.ats.arjuna.AtomicAction.cancel(AtomicAction.java:215)
com.arjuna.ats.arjuna.coordinator.TransactionReaper.doCancellations(TransactionReaper.java:377)
com.arjuna.ats.internal.arjuna.coordinator.ReaperWorkerThread.run(ReaperWorkerThread.java:78)

16:44:31,100 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper) ARJUNA012117: TransactionReaper::check timeout for TX 0:ffff7f000101:-231d9b5d:55030494:35 in state  SCHEDULE_CANCEL
16:44:31,594 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper) ARJUNA012117: TransactionReaper::check timeout for TX 0:ffff7f000101:-231d9b5d:55030494:2d in state  CANCEL_INTERRUPTED
16:44:31,595 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper) ARJUNA012120: TransactionReaper::check worker Thread[Transaction Reaper Worker 0,5,main] not responding to interrupt when cancelling TX 0:ffff7f000101:-231d9b5d:55030494:2d -- worker marked as zombie and TX scheduled for mark-as-rollback
16:44:31,596 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper Worker 1) ARJUNA012095: Abort of action id 0:ffff7f000101:-231d9b5d:55030494:35 invoked while multiple threads active within it.
16:44:31,597 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper) ARJUNA012110: TransactionReaper::check successfuly marked TX 0:ffff7f000101:-231d9b5d:55030494:2d as rollback only
16:44:31,597 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper Worker 1) ARJUNA012108: CheckedAction::check - atomic action 0:ffff7f000101:-231d9b5d:55030494:35 aborting with 1 threads active!
16:44:31,600 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper) ARJUNA012117: TransactionReaper::check timeout for TX 0:ffff7f000101:-231d9b5d:55030494:35 in state  CANCEL
16:44:31,602 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper) ARJUNA012378: ReaperElement appears to be wedged: org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:231)

作为jdbc驱动程序,使用“postgresql-9.2-1004.jdbc41”。PostgreSQL server版本为“9.3”。我在类路径上也有c3p0,但即使我删除了这个依赖项,也会出现问题。

共有1个答案

王德华
2023-03-14

我已经准备了一个使用JAX-RS、EJB和JPA的示例应用程序https://github.com/aparnachaudhary/prototypes/tree/master/jaxrs-db-access.我使用JMeter脚本使用多个线程访问RESTendpoint。但是我不能用PostgreSQL 9.3、postgresql-9.3-1103.jdbc41.jar和WildFly 8.1.0重现这个问题。最后。

 类似资料:
  • 我想从詹金斯那里向wildfly部署一个war文件。我尝试了很多方法,但都不管用 我使用了将WAR/EAR部署到wildfly插件,但它对我不起作用,我得到了错误: (致命:无法初始化命令上下文。生成步骤“将WAR/EAR部署到WildFly”将生成标记为失败已完成:失败), 我搜索了那个问题,但给出的答案对我没有帮助。 在我使用将WAR/EAR部署到容器的构建后操作中,它对我也不起作用,我得到了

  • 我有一个web应用程序部署为使用Wildfly的爆炸战争。我想要得到的是 null 目前,我所处的情况是,我可以选择其中一个或另一个,但不能同时获得这两个选项(这意味着,要么每个jsp更改都强制进行新的部署,要么.class文件不强制进行新的部署)。 wildfly的当前配置(使用版本8.1.0)为 此外,我还发现,无论我在deployment-scanner配置中设置了什么,一旦服务器启动并运行

  • 我正在尝试将jboss wildfly 8配置为将Jackson用于JSON。所以我补充说 我的耳朵工程。但在部署时,我会遇到以下错误: 原因:java。lang.LinkageError:加载程序约束冲突:解析重写的方法“org.jboss.resteasy.plugins.providers.jackson.ResteasyJacksonProvider$Proxy$\u$$WeldClien

  • 我花了很多时间试图找出导致我的应用程序工作非常缓慢的原因,也许有人会帮助我检查问题所在。 版本: 操作系统:Debian GNU/Linux 7.9(wheezy) 关于我的应用: 带有静态登录页面、信息页面和登录的简单Web应用程序重定向到私人区域。公共页面是静态的,在登录期间首先查询数据库,然后尝试为登录用户获取内容。 问题是什么: 当我浏览这样配置的页面时: 没有问题,所有的东西都被装上了飞

  • 昨天,当我尝试将集成测试从嵌入式 GF 4 移动到远程 Wildfly 8 时,对于针对远程 Wildfly 8 实例运行的每个 arquillian 测试,我都得到了奇怪的 。同样的集成测试在嵌入式玻璃鱼4.0上工作得很好。 我的测试用例非常简单(使用单个类部署),不需要在这里发布 使用的组件: 阿奎利安 1.1.5.决赛 野蝇 8.0.0.最终版 日食月神 无论以什么方式启动我的测试用例(从E

  • 大家好,我正试图使用sqlserver jdbc与野飞AP,但当我试图测试数据源后的连接,我总是得到这个错误: 以下是配置文件的内容: module.xml: 独立的。xml: 最后,我的jdbc jar文件位于以下路径: wildfly-14.0。0.Final\modules\system\layers\base\com\microsoft\sqlserver\main