【问题标题】:Execution error: org.infinispan.util.concurrent.TimeoutException: ISPN000299: Unable to acquire lock after 10 seconds for key执行错误:org.infinispan.util.concurrent.TimeoutException: ISPN000299: Unable to acquire lock after 10 seconds for key
【发布时间】:2016-10-02 11:14:19
【问题描述】:

在 arquillian 中运行测试用例时,我遇到了以下错误。 当我在实际服务器上运行用例时,没有出现此类异常。

我正在使用带有 Infinispan 5.1 的 JBoss AS 7。

我尝试使用How to fix "Unable to acquire lock after 15 seconds" errors in Wildfly 的解决方案,但没有成功。

15:25:07,539 ERROR [org.infinispan.interceptors.InvocationContextInterceptor] (EJB default - 44) ISPN000136: Execution error: org.infinispan.util.concurrent.TimeoutException: ISPN000299: Unable to acquire lock after 10 seconds for key XXX and requestor GlobalTransaction:<null>:21:local. Lock is held by GlobalTransaction:<null>:20:local, while request came from local
    at org.infinispan.util.concurrent.locks.LockManagerImpl.lock(LockManagerImpl.java:198)
    at org.infinispan.util.concurrent.locks.LockManagerImpl.acquireLock(LockManagerImpl.java:171)
    at org.infinispan.interceptors.locking.AbstractTxLockingInterceptor.lockKeyAndCheckOwnership(AbstractTxLockingInterceptor.java:177)
    at org.infinispan.interceptors.locking.AbstractTxLockingInterceptor.lockAndRegisterBackupLock(AbstractTxLockingInterceptor.java:110)
    at org.infinispan.interceptors.locking.OptimisticLockingInterceptor$LockAcquisitionVisitor.lockAndRecord(OptimisticLockingInterceptor.java:218)
    at org.infinispan.interceptors.locking.OptimisticLockingInterceptor$LockAcquisitionVisitor.visitSingleKeyCommand(OptimisticLockingInterceptor.java:213)
    at org.infinispan.interceptors.locking.OptimisticLockingInterceptor$LockAcquisitionVisitor.visitPutKeyValueCommand(OptimisticLockingInterceptor.java:206)
    at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:71)
    at org.infinispan.interceptors.locking.OptimisticLockingInterceptor.acquireLocksVisitingCommands(OptimisticLockingInterceptor.java:277)
    at org.infinispan.interceptors.locking.OptimisticLockingInterceptor.visitPrepareCommand(OptimisticLockingInterceptor.java:76)
    at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
    at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:97)
    at org.infinispan.interceptors.NotificationInterceptor.visitPrepareCommand(NotificationInterceptor.java:36)
    at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
    at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:97)
    at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:111)
    at org.infinispan.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:109)
    at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
    at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:97)
    at org.infinispan.interceptors.TxInterceptor.invokeNextInterceptorAndVerifyTransaction(TxInterceptor.java:132)
    at org.infinispan.interceptors.TxInterceptor.visitPrepareCommand(TxInterceptor.java:119)
    at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
    at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:97)
    at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:111)
    at org.infinispan.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:109)
    at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124

【问题讨论】:

  • 获取锁通常会超时,因为另一个线程在持有锁时被阻塞在做某事。您需要在发生这种情况时获取线程转储,并查看其他线程在做什么。
  • 您是否能够修复它,知道如何重现此问题。我在做 put 时遇到了同样的错误。但无法重现这一点,因为它很简单,不确定它如何花费超过 10 秒。

标签: java jakarta-ee jboss7.x jboss-arquillian infinispan


【解决方案1】:

如果您不在 HA 中,可以参考以下帖子寻求建议:https://developer.jboss.org/thread/243458

widfly 8.1 版本已修复此问题,链接:https://issues.jboss.org/browse/WFLY-3715

【讨论】:

    【解决方案2】:

    我解决了在新线程中启动缓存更新的问题。我认为如果你更新 EJB-Thread 中的缓存,它会产生互锁。

    我希望它会起作用

    【讨论】:

      猜你喜欢
      • 2016-06-28
      • 1970-01-01
      • 2022-07-07
      • 2018-05-18
      • 2013-01-09
      • 2022-12-02
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      相关资源
      最近更新 更多