0

我正在使用 infinispan 8.2.11。在使用 cache.entrySet().iterator() 遍历缓存期间,线程被卡住而不移动。这是我收集的线程转储:

"EJB default - 32" #586 prio=5 os_prio=0 tid=0x000055ce2f619000 nid=0x2853 runnable [0x00007f8780c7a000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000006efb93ba8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2163)
        at org.infinispan.stream.impl.DistributedCacheStream$IteratorSupplier.get(DistributedCacheStream.java:754)
        at org.infinispan.util.CloseableSuppliedIterator.getNext(CloseableSuppliedIterator.java:26)
        at org.infinispan.util.CloseableSuppliedIterator.hasNext(CloseableSuppliedIterator.java:32)
        at org.infinispan.stream.impl.RemovableIterator.getNextFromIterator(RemovableIterator.java:34)
        at org.infinispan.stream.impl.RemovableIterator.hasNext(RemovableIterator.java:43)
        at org.infinispan.commons.util.Closeables$IteratorAsCloseableIterator.hasNext(Closeables.java:93)
        at org.infinispan.stream.impl.RemovableIterator.getNextFromIterator(RemovableIterator.java:34)
        at org.infinispan.stream.impl.RemovableIterator.hasNext(RemovableIterator.java:43)
        at org.infinispan.commons.util.IteratorMapper.hasNext(IteratorMapper.java:26)

我在 Jboss 社区档案中找到了描述类似问题的文章:https ://developer.jboss.org/thread/271158 。infinispan 9 中有一个修复程序,我相信它可以解决这个问题:ISPN-9080

是否可以将此修复程序反向移植到 infinispan-8 中?不幸的是,我无法在我的项目中提升 infinispan 的版本。

4

2 回答 2

0

无论如何,我建议考虑更新 Infinispan 版本。您可能会错过许多修复,因为版本 11 是当前的稳定版本,并且会遇到已经修复的问题。

但是在您的情况下,问题是您的集群中发生了一些事情,并且错过了集群拓扑更新。如果你有一个稳定的集群,这个问题就不会发生。因此,如果您能够找到“不稳定”集群的原因,可能是故意停止/启动节点,这是可以接受的,您可以避免它。

于 2020-09-07T16:17:56.203 回答
0

不幸的是,我们不维护这样的旧版本。建议的方法是更新到更新的版本。如果那不可能,您可以尝试修补旧版本,因为您有可用的更改https://github.com/infinispan/infinispan/pull/5924/files

另请注意,这并不能解决实际问题。这只是解决了实际问题的症状。实际问题是由于某种原因没有安装最新的拓扑,但原始发布者无法提供足够的信息来确定原因。

于 2020-09-04T14:35:15.177 回答