启用L2C时的WildFly异常

时间:2017-05-05 07:36:26

标签: hibernate jpa wildfly-8 infinispan

我在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。修复此问题需要进行哪些更改?

1 个答案:

答案 0 :(得分:1)

我也在域模式和相同的配置中使用Wildfly 10.1获得此异常。

如果我为特定实体禁用缓存,则不存在此类异常。

如果在第一次尝试存储实体时,由于在将实体刷新到实体管理器/数据库之后发生某些异常,则会发生错误。然后在第二次尝试(刷新后无例外)我遇到了这个锁定异常。所以我认为它可能与某些交易内容有关。未正确回滚的事务!?

如果在第一次尝试之后大约2分钟后开始第二次尝试,则异常/回滚就可以了。这可能是因为到期超时为100.000 ms = 1min 40sec。

另见:https://developer.jboss.org/thread/260634