我在wildfly-8.2域模式下遇到了这个异常:
引起:按键[15秒]后无法获取锁定 请求者的[app.entity.UserData#17568183] [GlobalTransaction :: 2482:远程]!锁定 通过[GlobalTransaction :: 2135:remote]来 org.infinispan.util.concurrent.locks.LockManagerImpl(第198行)
以下是设置:
<subsystem xmlns="urn:jboss:domain:infinispan:2.0">
<cache-container name="server" default-cache="default" module="org.wildfly.clustering.server" aliases="singleton cluster">
<transport lock-timeout="120000"/>
<replicated-cache name="default" batching="true" mode="SYNC">
<locking isolation="REPEATABLE_READ"/>
</replicated-cache>
</cache-container>
<cache-container name="web" default-cache="dist" module="org.wildfly.clustering.web.infinispan">
<transport lock-timeout="120000"/>
<distributed-cache name="dist" batching="true" mode="ASYNC" owners="2" l1-lifespan="0">
<locking isolation="REPEATABLE_READ" acquire-timeout="300000" concurrency-level="1000"/>
<file-store/>
</distributed-cache>
</cache-container>
<cache-container name="ejb" default-cache="dist" module="org.wildfly.clustering.ejb.infinispan" aliases="sfsb">
<transport lock-timeout="120000"/>
<distributed-cache name="dist" batching="true" mode="ASYNC" owners="2" l1-lifespan="0">
<file-store passivation="true"/>
</distributed-cache>
</cache-container>
<cache-container name="hibernate" default-cache="local-query" module="org.hibernate">
<transport lock-timeout="120000"/>
<local-cache name="local-query">
<transaction mode="NONE"/>
<eviction strategy="LRU" max-entries="10000"/>
<expiration max-idle="100000"/>
</local-cache>
<invalidation-cache name="entity" mode="SYNC">
<transaction mode="NON_XA"/>
<eviction strategy="LRU" max-entries="10000"/>
<expiration max-idle="100000"/>
</invalidation-cache>
<replicated-cache name="timestamps" mode="ASYNC">
<transaction mode="NONE"/>
<eviction strategy="NONE"/>
</replicated-cache>
</cache-container>
</subsystem>
我正在使用XA-DataSource。修复此问题需要进行哪些更改?
答案 0 :(得分:1)
我也在域模式和相同的配置中使用Wildfly 10.1获得此异常。
如果我为特定实体禁用缓存,则不存在此类异常。
如果在第一次尝试存储实体时,由于在将实体刷新到实体管理器/数据库之后发生某些异常,则会发生错误。然后在第二次尝试(刷新后无例外)我遇到了这个锁定异常。所以我认为它可能与某些交易内容有关。未正确回滚的事务!?
如果在第一次尝试之后大约2分钟后开始第二次尝试,则异常/回滚就可以了。这可能是因为到期超时为100.000 ms = 1min 40sec。