]
William Burns commented on ISPN-6928:
-------------------------------------
[~tmeagher] & [~crogman] I think the issue may still be present. However it is for
sure gone with the latest 9.0.Beta1 or newer build as we completely rewrote eviction
related code. If however the issue persists and cannot be handled and you need to stay on
8.2, I would suggest using LRU for your eviction algorithm as it will not have this
problem.
NPE in BoundedEquivalentConcurrentHashMapV8$LIRSEvictionPolicy
--------------------------------------------------------------
Key: ISPN-6928
URL:
https://issues.jboss.org/browse/ISPN-6928
Project: Infinispan
Issue Type: Bug
Affects Versions: 8.2.2.Final
Reporter: Tim Meagher
Receiving a NullPointerException out of infinispan with the following stack (using 8.2.2
final):
{noformat}
java.lang.NullPointerException
at
org.infinispan.commons.util.concurrent.jdk8backported.BoundedEquivalentConcurrentHashMapV8$LIRSEvictionPolicy.findIfEntriesNeedEvicting(BoundedEquivalentConcurrentHashMapV8.java:1531)
at
org.infinispan.commons.util.concurrent.jdk8backported.BoundedEquivalentConcurrentHashMapV8.compute(BoundedEquivalentConcurrentHashMapV8.java:3657)
at org.infinispan.container.DefaultDataContainer.put(DefaultDataContainer.java:227)
at
org.infinispan.container.entries.ReadCommittedEntry.commit(ReadCommittedEntry.java:168)
at org.infinispan.statetransfer.CommitManager.commit(CommitManager.java:100)
at
org.infinispan.interceptors.locking.ClusteringDependentLogic$LocalLogic.commitSingleEntry(ClusteringDependentLogic.java:299)
at
org.infinispan.interceptors.locking.ClusteringDependentLogic$AbstractClusteringDependentLogic.commitEntry(ClusteringDependentLogic.java:115)
at
org.infinispan.interceptors.EntryWrappingInterceptor.commitContextEntry(EntryWrappingInterceptor.java:479)
at
org.infinispan.interceptors.EntryWrappingInterceptor.commitEntryIfNeeded(EntryWrappingInterceptor.java:655)
at
org.infinispan.interceptors.EntryWrappingInterceptor.commitContextEntries(EntryWrappingInterceptor.java:465)
at
org.infinispan.interceptors.EntryWrappingInterceptor.visitPrepareCommand(EntryWrappingInterceptor.java:108)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:176)
at
org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
at
org.infinispan.interceptors.NotificationInterceptor.visitPrepareCommand(NotificationInterceptor.java:37)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:176)
at
org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
at
org.infinispan.interceptors.locking.AbstractTxLockingInterceptor.invokeNextAndCommitIf1Pc(AbstractTxLockingInterceptor.java:93)
at
org.infinispan.interceptors.locking.PessimisticLockingInterceptor.visitPrepareCommand(PessimisticLockingInterceptor.java:100)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:176)
at
org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
at
org.infinispan.interceptors.TxInterceptor.invokeNextInterceptorAndVerifyTransaction(TxInterceptor.java:158)
at
org.infinispan.interceptors.TxInterceptor.visitPrepareCommand(TxInterceptor.java:145)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:176)
at
org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
at
org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:113)
at
org.infinispan.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:112)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:176)
at
org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
at
org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:114)
at
org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:83)
at
org.infinispan.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:112)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:176)
at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:335)
at
org.infinispan.transaction.impl.TransactionCoordinator.commit(TransactionCoordinator.java:157)
at
org.infinispan.transaction.xa.TransactionXaAdapter.commit(TransactionXaAdapter.java:114)
at
org.infinispan.transaction.tm.DummyTransaction.finishResource(DummyTransaction.java:401)
at
org.infinispan.transaction.tm.DummyTransaction.commitResources(DummyTransaction.java:448)
at org.infinispan.transaction.tm.DummyTransaction.runCommit(DummyTransaction.java:321)
at org.infinispan.transaction.tm.DummyTransaction.commit(DummyTransaction.java:108)
at
org.infinispan.transaction.tm.DummyBaseTransactionManager.commit(DummyBaseTransactionManager.java:73)
at org.infinispan.cache.impl.CacheImpl.tryCommit(CacheImpl.java:1722)
at
org.infinispan.cache.impl.CacheImpl.executeCommandAndCommitIfNeeded(CacheImpl.java:1679)
at org.infinispan.cache.impl.CacheImpl.putInternal(CacheImpl.java:1121)
at org.infinispan.cache.impl.CacheImpl.put(CacheImpl.java:1111)
at org.infinispan.cache.impl.CacheImpl.put(CacheImpl.java:1742)
at org.infinispan.cache.impl.CacheImpl.put(CacheImpl.java:248)
{noformat}
Looks very similar to this issue:
https://issues.jboss.org/browse/ISPN-6366
However, not sure if it's a duplicate as our configuration is nothing like that
mentioned & the line number in the stack is one off.
Not sure what version the other issue was reported against though (and the line number in
the stack on the mentioned issue is a null check in 8.2.2 final).
Configuration for the cache with this problem is included below:
{noformat}
<?xml version="1.0" encoding="UTF-8"?>
<infinispan
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:8.2
http://www.infinispan.org/schemas/infinispan-config-8.2.xsd
urn:infinispan:config:store:jdbc:8.0
http://www.infinispan.org/schemas/infinispan-cachestore-jdbc-config-8.0.x...
xmlns="urn:infinispan:config:8.2">
<cache-container name="default" default-cache="default"
statistics="true">
<serialization>
<advanced-externalizer
class="com.lavastorm.lae.service.element.compile.storage.infinispan.impl.CompiledStorageNodeExternalizer"/>
<advanced-externalizer
class="com.lavastorm.lae.service.element.resolution.storage.infinispan.impl.ResolutionCacheEntryExternalizer"/>
</serialization>
<jmx duplicate-domains="true"/>
<!-- cache configuration for non repository usages -->
<!-- resolved-element cache -->
<local-cache-configuration name="resolvedElementConfig">
<transaction
transaction-manager-lookup="org.infinispan.transaction.lookup.DummyTransactionManagerLookup"
locking="PESSIMISTIC" />
<!-- max 2k in memory entries -->
<eviction thread-policy="DEFAULT" max-entries="2000"
strategy="LIRS" />
<persistence passivation="true">
<!-- max 10k entries on disk -->
<file-store fetch-state="false" read-only="false"
purge="true" path="${ls.home}/data/webapp/cache/infinispan"
max-entries="10000"/>
</persistence>
</local-cache-configuration>
<local-cache name="resolvedElements"
configuration="resolvedElementConfig" statistics="true"/>
</infinispan>
{noformat}