2017-05-05 2 views
0

je suis arrivé cette exception en mode wildfly-8.2 domaine:exception wildfly lorsque L2C a permis

causée par: impossible d'acquérir un verrou après [15 secondes] sur la touche [app.entity.UserData # 17568183] pour demandeur [GlobalTransaction :: 2482: distant]! Verrou détenu par [GlobalTransaction :: 2135: à distance] à org.infinispan.util.concurrent.locks.LockManagerImpl (ligne 198)

Voici les paramètres:

   <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> 

J'utilise XA-DataSource. Quel changement est nécessaire pour résoudre ce problème?

Répondre

1

Je reçois également cette exception avec Wildfly 10.1 en mode domaine et la même configuration.

Si je désactive le cache pour une entité spécifique, il n'y a pas une telle exception.

L'erreur se produit si dans une première tentative de stockage de l'entité, la transaction est annulée en raison d'une exception après que l'entité a été vidée dans le gestionnaire d'entités/la base de données. Et puis dans une seconde tentative (sans exception après le flush) je cours dans cette exception de verrouillage. Donc, je pense que cela pourrait être lié à certaines transactions. Une transaction qui n'est pas annulée (correctement) !?

Si la deuxième tentative est lancée après environ 2 minutes après la première tentative avec l'exception/annulation, cela fonctionne. C'est probablement à cause du délai d'expiration de 100.000 ms = 1min 40sec.

également voir ici: https://developer.jboss.org/thread/260634

+1

Ce poste regarde d'abord un peu comme un, mais il y a une réponse réelle enterré là-dedans « moi aussi! ». Vous pourriez probablement le réorganiser pour que la réponse soit plus évidente. Puisque vous avez eu le même problème, je m'attends à ce que d'autres le fassent aussi, et quelques modifications rendront cette réponse plus facile à trouver et plus facile à utiliser –