[JBoss JIRA] (ISPN-6802) Micro-optimizations for read operations
by Tristan Tarrant (JIRA)
[ https://issues.jboss.org/browse/ISPN-6802?page=com.atlassian.jira.plugin.... ]
Tristan Tarrant updated ISPN-6802:
----------------------------------
Status: Resolved (was: Pull Request Sent)
Resolution: Done
> Micro-optimizations for read operations
> ---------------------------------------
>
> Key: ISPN-6802
> URL: https://issues.jboss.org/browse/ISPN-6802
> Project: Infinispan
> Issue Type: Task
> Components: Core
> Affects Versions: 9.0.0.Alpha2
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Fix For: 9.0.0.Beta2
>
>
> * L1 entries are written to the data container by L1TxInterceptor/L1NonTxInterceptor directly, so there is no reason to commit the context entries in EntryWrappingInterceptor or to clear the locks in the locking interceptors.
> * ClearCommands can no longer be wrapped in PrepareCommands, so we can stop the state transfer in {{EntryWrappingInterceptor.visitClearCommand()}} instead of checking the type for each command.
> * In transactional caches, a read operation without an explicit transaction triggers two queries for the current transaction to the transaction manager, which usually means 2 thread-local lookups.
> * IsMarshallerInterceptor shouldn't do anything unless there is an asynchronous store
> * Transactional remote get commands use NonTxInvocationInterceptor instead of SingleKeyNonTxInterceptor.
> * Configuration attributes should be cached, as reading them requires accessing multiple instances + a cast in Attribute.get()
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
7 years, 4 months
[JBoss JIRA] (ISPN-6928) NPE in BoundedEquivalentConcurrentHashMapV8$LIRSEvictionPolicy
by Gregory Ramsperger (JIRA)
[ https://issues.jboss.org/browse/ISPN-6928?page=com.atlassian.jira.plugin.... ]
Gregory Ramsperger commented on ISPN-6928:
------------------------------------------
This is likely outdated given this code was completely rewritten in ISPN-4390 for 8.2.5.Final
> 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.xsd"
> 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}
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
7 years, 4 months
[JBoss JIRA] (ISPN-7133) NPE in BoundedEquivalentConcurrentHashMapV8 at load
by Gregory Ramsperger (JIRA)
[ https://issues.jboss.org/browse/ISPN-7133?page=com.atlassian.jira.plugin.... ]
Gregory Ramsperger closed ISPN-7133.
------------------------------------
Resolution: Out of Date
The code where the fix would be applied was completely rewritten in ISPN-4390 and this check is no longer relevant.
> NPE in BoundedEquivalentConcurrentHashMapV8 at load
> ---------------------------------------------------
>
> Key: ISPN-7133
> URL: https://issues.jboss.org/browse/ISPN-7133
> Project: Infinispan
> Issue Type: Bug
> Affects Versions: 8.1.0.Final
> Environment: Wildfly 10.0.0.Final, Infinispan 8.1.0.Final, Oracle Java 8u60, Ubuntu 14.04, Redis.
> Reporter: Gregory Ramsperger
> Assignee: William Burns
>
> During performance tests, we have encountered a small but consistent level of NullPointerExceptions in BoundedEquivalentConcurrentHashMapV8$LIRSEvictionPolicy.findIfEntriesNeedEvicting.
> In our system, we have multiple servers acting as a sort of registry. Infinispan is configured with a with a Redis cache store Items are added, removed, and read frequently. We were handling around 8k puts/min, 8k removes per minute, and about 1k gets per minute. We see 0-5 failures per minute on the cache.get calls with the stack below (mostly 0 with sporadic failures).
> The relevant code can be [seen on 8.2.x branch|https://github.com/infinispan/infinispan/blob/8.2.x/commons/src/ma...]. The node is null when `node.val` is called.
> {code:java|title=BoundedEquivalentConcurrentHashMapV8.java|linenumbers=true|firstline=1530}
> } else if (evict.state == Recency.HIR_NONRESIDENT) {
> Node<K, V> node = f.find(hash, evict.getKey());
> V prevValue = node.val;
> if (prevValue != NULL_VALUE) {
> node.val = (V) NULL_VALUE;
> map.addCount(-1, -1);
> Node<K, V> nonResidentNode = new Node<K, V>(-1, null, evict.getKey(),
> prevValue, null);
> removedNodes.add(nonResidentNode);
> map.notifyListenerOfRemoval(nonResidentNode, true);
> }
> }
> {code}
> I believe this just needs a {{node != null}} check.
> h3. Backtrace
> {noformat}
> 2016-10-18 03:37:46,678 i-baa20229 ERROR [org.infinispan.interceptors.InvocationContextInterceptor] (EE-ManagedExecutorService-LechmereDefault-Thread-1) ISPN000136: Error executing command GetKeyValueCommand, writing keys []: java.lang.NullPointerException
> at org.infinispan.commons.util.concurrent.jdk8backported.BoundedEquivalentConcurrentHashMapV8$LIRSEvictionPolicy.findIfEntriesNeedEvicting(BoundedEquivalentConcurrentHashMapV8.java:1532) [infinispan-commons-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.commons.util.concurrent.jdk8backported.BoundedEquivalentConcurrentHashMapV8.compute(BoundedEquivalentConcurrentHashMapV8.java:3658) [infinispan-commons-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.container.DefaultDataContainer.compute(DefaultDataContainer.java:323) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.persistence.PersistenceUtil.loadAndStoreInDataContainer(PersistenceUtil.java:91) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.CacheLoaderInterceptor.loadInContext(CacheLoaderInterceptor.java:367) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeeded(CacheLoaderInterceptor.java:362) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.CacheLoaderInterceptor.visitDataCommand(CacheLoaderInterceptor.java:183) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.CacheLoaderInterceptor.visitGetKeyValueCommand(CacheLoaderInterceptor.java:137) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.EntryWrappingInterceptor.visitDataReadCommand(EntryWrappingInterceptor.java:133) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.EntryWrappingInterceptor.visitGetKeyValueCommand(EntryWrappingInterceptor.java:123) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.locking.NonTransactionalLockingInterceptor.visitDataReadCommand(NonTransactionalLockingInterceptor.java:31) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.locking.AbstractLockingInterceptor.visitGetKeyValueCommand(AbstractLockingInterceptor.java:77) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.CacheMgmtInterceptor.visitDataReadCommand(CacheMgmtInterceptor.java:103) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.CacheMgmtInterceptor.visitGetKeyValueCommand(CacheMgmtInterceptor.java:91) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:107) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:76) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:85) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:336) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.cache.impl.CacheImpl.get(CacheImpl.java:411) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.cache.impl.CacheImpl.get(CacheImpl.java:403) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.cache.impl.AbstractDelegatingCache.get(AbstractDelegatingCache.java:286) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at our code
> {noformat}
> h3. Our cache config (boiled down):
> {code:java|title=Cache Config}
> ConfigurationBuilder configBuilder = new ConfigurationBuilder();
> configBuilder
> .locking()
> .useLockStriping(false)
> .isolationLevel(IsolationLevel.READ_COMMITTED)
> .concurrencyLevel(12)
> .eviction()
> .strategy(EvictionStrategy.LIRS)
> .type(EvictionType.COUNT).size(10000)
> .clustering()
> .cacheMode(CacheMode.INVALIDATION_SYNC)
> .persistence()
> .passivation(false)
> .addStore(RedisStoreConfigurationBuilder.class)
> .connectionPool()
> .minIdle(6)
> .maxIdle(10)
> .maxTotal(20)
> .minEvictableIdleTime(30000)
> .timeBetweenEvictionRuns(30000)
> .topology(Topology.SERVER)
> .fetchPersistentState(true)
> .database(1)
> .addServer()
> .host("127.0.0.1")
> .port(REDIS_PORT)
> .socketTimeout(5000)
> .connectionTimeout(5000);
> {code}
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
7 years, 4 months
[JBoss JIRA] (ISPN-7133) NPE in BoundedEquivalentConcurrentHashMapV8 at load
by Gregory Ramsperger (JIRA)
[ https://issues.jboss.org/browse/ISPN-7133?page=com.atlassian.jira.plugin.... ]
Gregory Ramsperger updated ISPN-7133:
-------------------------------------
Description:
During performance tests, we have encountered a small but consistent level of NullPointerExceptions in BoundedEquivalentConcurrentHashMapV8$LIRSEvictionPolicy.findIfEntriesNeedEvicting.
In our system, we have multiple servers acting as a sort of registry. Infinispan is configured with a with a Redis cache store Items are added, removed, and read frequently. We were handling around 8k puts/min, 8k removes per minute, and about 1k gets per minute. We see 0-5 failures per minute on the cache.get calls with the stack below (mostly 0 with sporadic failures).
The relevant code can be [seen on 8.2.x branch|https://github.com/infinispan/infinispan/blob/8.2.x/commons/src/ma...]. The node is null when `node.val` is called.
{code:java|title=BoundedEquivalentConcurrentHashMapV8.java|linenumbers=true|firstline=1530}
} else if (evict.state == Recency.HIR_NONRESIDENT) {
Node<K, V> node = f.find(hash, evict.getKey());
V prevValue = node.val;
if (prevValue != NULL_VALUE) {
node.val = (V) NULL_VALUE;
map.addCount(-1, -1);
Node<K, V> nonResidentNode = new Node<K, V>(-1, null, evict.getKey(),
prevValue, null);
removedNodes.add(nonResidentNode);
map.notifyListenerOfRemoval(nonResidentNode, true);
}
}
{code}
I believe this just needs a {{node != null}} check.
h3. Backtrace
{noformat}
2016-10-18 03:37:46,678 i-baa20229 ERROR [org.infinispan.interceptors.InvocationContextInterceptor] (EE-ManagedExecutorService-LechmereDefault-Thread-1) ISPN000136: Error executing command GetKeyValueCommand, writing keys []: java.lang.NullPointerException
at org.infinispan.commons.util.concurrent.jdk8backported.BoundedEquivalentConcurrentHashMapV8$LIRSEvictionPolicy.findIfEntriesNeedEvicting(BoundedEquivalentConcurrentHashMapV8.java:1532) [infinispan-commons-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.commons.util.concurrent.jdk8backported.BoundedEquivalentConcurrentHashMapV8.compute(BoundedEquivalentConcurrentHashMapV8.java:3658) [infinispan-commons-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.container.DefaultDataContainer.compute(DefaultDataContainer.java:323) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.persistence.PersistenceUtil.loadAndStoreInDataContainer(PersistenceUtil.java:91) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.CacheLoaderInterceptor.loadInContext(CacheLoaderInterceptor.java:367) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeeded(CacheLoaderInterceptor.java:362) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.CacheLoaderInterceptor.visitDataCommand(CacheLoaderInterceptor.java:183) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.CacheLoaderInterceptor.visitGetKeyValueCommand(CacheLoaderInterceptor.java:137) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.EntryWrappingInterceptor.visitDataReadCommand(EntryWrappingInterceptor.java:133) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.EntryWrappingInterceptor.visitGetKeyValueCommand(EntryWrappingInterceptor.java:123) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.locking.NonTransactionalLockingInterceptor.visitDataReadCommand(NonTransactionalLockingInterceptor.java:31) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.locking.AbstractLockingInterceptor.visitGetKeyValueCommand(AbstractLockingInterceptor.java:77) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.CacheMgmtInterceptor.visitDataReadCommand(CacheMgmtInterceptor.java:103) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.CacheMgmtInterceptor.visitGetKeyValueCommand(CacheMgmtInterceptor.java:91) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:107) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:76) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:85) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:336) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.cache.impl.CacheImpl.get(CacheImpl.java:411) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.cache.impl.CacheImpl.get(CacheImpl.java:403) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.cache.impl.AbstractDelegatingCache.get(AbstractDelegatingCache.java:286) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at our code
{noformat}
h3. Our cache config (boiled down):
{code:java|title=Cache Config}
ConfigurationBuilder configBuilder = new ConfigurationBuilder();
configBuilder
.locking()
.useLockStriping(false)
.isolationLevel(IsolationLevel.READ_COMMITTED)
.concurrencyLevel(12)
.eviction()
.strategy(EvictionStrategy.LIRS)
.type(EvictionType.COUNT).size(10000)
.clustering()
.cacheMode(CacheMode.INVALIDATION_SYNC)
.persistence()
.passivation(false)
.addStore(RedisStoreConfigurationBuilder.class)
.connectionPool()
.minIdle(6)
.maxIdle(10)
.maxTotal(20)
.minEvictableIdleTime(30000)
.timeBetweenEvictionRuns(30000)
.topology(Topology.SERVER)
.fetchPersistentState(true)
.database(1)
.addServer()
.host("127.0.0.1")
.port(REDIS_PORT)
.socketTimeout(5000)
.connectionTimeout(5000);
{code}
was:
During performance tests, we have encountered a small but consistent level of NullPointerExceptions in BoundedEquivalentConcurrentHashMapV8$LIRSEvictionPolicy.findIfEntriesNeedEvicting.
In our system, we have multiple servers acting as a sort of registry. Infinispan is configured with a with a Redis cache store Items are added, removed, and read frequently. We were handling around 8k puts/min, 8k removes per minute, and about 1k gets per minute. We see 0-5 failures per minute on the cache.get calls with the stack below (mostly 0 with sporadic failures).
The relevant code can be [seen on mainline|https://github.com/infinispan/infinispan/blob/master/commons/src...]. The node is null when `node.val` is called.
{code:java|title=BoundedEquivalentConcurrentHashMapV8.java|linenumbers=true|firstline=1530}
} else if (evict.state == Recency.HIR_NONRESIDENT) {
Node<K, V> node = f.find(hash, evict.getKey());
V prevValue = node.val;
if (prevValue != NULL_VALUE) {
node.val = (V) NULL_VALUE;
map.addCount(-1, -1);
Node<K, V> nonResidentNode = new Node<K, V>(-1, null, evict.getKey(),
prevValue, null);
removedNodes.add(nonResidentNode);
map.notifyListenerOfRemoval(nonResidentNode, true);
}
}
{code}
I believe this just needs a {{node != null}} check.
h3. Backtrace
{noformat}
2016-10-18 03:37:46,678 i-baa20229 ERROR [org.infinispan.interceptors.InvocationContextInterceptor] (EE-ManagedExecutorService-LechmereDefault-Thread-1) ISPN000136: Error executing command GetKeyValueCommand, writing keys []: java.lang.NullPointerException
at org.infinispan.commons.util.concurrent.jdk8backported.BoundedEquivalentConcurrentHashMapV8$LIRSEvictionPolicy.findIfEntriesNeedEvicting(BoundedEquivalentConcurrentHashMapV8.java:1532) [infinispan-commons-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.commons.util.concurrent.jdk8backported.BoundedEquivalentConcurrentHashMapV8.compute(BoundedEquivalentConcurrentHashMapV8.java:3658) [infinispan-commons-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.container.DefaultDataContainer.compute(DefaultDataContainer.java:323) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.persistence.PersistenceUtil.loadAndStoreInDataContainer(PersistenceUtil.java:91) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.CacheLoaderInterceptor.loadInContext(CacheLoaderInterceptor.java:367) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeeded(CacheLoaderInterceptor.java:362) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.CacheLoaderInterceptor.visitDataCommand(CacheLoaderInterceptor.java:183) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.CacheLoaderInterceptor.visitGetKeyValueCommand(CacheLoaderInterceptor.java:137) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.EntryWrappingInterceptor.visitDataReadCommand(EntryWrappingInterceptor.java:133) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.EntryWrappingInterceptor.visitGetKeyValueCommand(EntryWrappingInterceptor.java:123) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.locking.NonTransactionalLockingInterceptor.visitDataReadCommand(NonTransactionalLockingInterceptor.java:31) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.locking.AbstractLockingInterceptor.visitGetKeyValueCommand(AbstractLockingInterceptor.java:77) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.CacheMgmtInterceptor.visitDataReadCommand(CacheMgmtInterceptor.java:103) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.CacheMgmtInterceptor.visitGetKeyValueCommand(CacheMgmtInterceptor.java:91) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:107) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:76) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:85) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:336) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.cache.impl.CacheImpl.get(CacheImpl.java:411) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.cache.impl.CacheImpl.get(CacheImpl.java:403) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at org.infinispan.cache.impl.AbstractDelegatingCache.get(AbstractDelegatingCache.java:286) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
at our code
{noformat}
h3. Our cache config (boiled down):
{code:java|title=Cache Config}
ConfigurationBuilder configBuilder = new ConfigurationBuilder();
configBuilder
.locking()
.useLockStriping(false)
.isolationLevel(IsolationLevel.READ_COMMITTED)
.concurrencyLevel(12)
.eviction()
.strategy(EvictionStrategy.LIRS)
.type(EvictionType.COUNT).size(10000)
.clustering()
.cacheMode(CacheMode.INVALIDATION_SYNC)
.persistence()
.passivation(false)
.addStore(RedisStoreConfigurationBuilder.class)
.connectionPool()
.minIdle(6)
.maxIdle(10)
.maxTotal(20)
.minEvictableIdleTime(30000)
.timeBetweenEvictionRuns(30000)
.topology(Topology.SERVER)
.fetchPersistentState(true)
.database(1)
.addServer()
.host("127.0.0.1")
.port(REDIS_PORT)
.socketTimeout(5000)
.connectionTimeout(5000);
{code}
> NPE in BoundedEquivalentConcurrentHashMapV8 at load
> ---------------------------------------------------
>
> Key: ISPN-7133
> URL: https://issues.jboss.org/browse/ISPN-7133
> Project: Infinispan
> Issue Type: Bug
> Affects Versions: 8.1.0.Final
> Environment: Wildfly 10.0.0.Final, Infinispan 8.1.0.Final, Oracle Java 8u60, Ubuntu 14.04, Redis.
> Reporter: Gregory Ramsperger
> Assignee: William Burns
>
> During performance tests, we have encountered a small but consistent level of NullPointerExceptions in BoundedEquivalentConcurrentHashMapV8$LIRSEvictionPolicy.findIfEntriesNeedEvicting.
> In our system, we have multiple servers acting as a sort of registry. Infinispan is configured with a with a Redis cache store Items are added, removed, and read frequently. We were handling around 8k puts/min, 8k removes per minute, and about 1k gets per minute. We see 0-5 failures per minute on the cache.get calls with the stack below (mostly 0 with sporadic failures).
> The relevant code can be [seen on 8.2.x branch|https://github.com/infinispan/infinispan/blob/8.2.x/commons/src/ma...]. The node is null when `node.val` is called.
> {code:java|title=BoundedEquivalentConcurrentHashMapV8.java|linenumbers=true|firstline=1530}
> } else if (evict.state == Recency.HIR_NONRESIDENT) {
> Node<K, V> node = f.find(hash, evict.getKey());
> V prevValue = node.val;
> if (prevValue != NULL_VALUE) {
> node.val = (V) NULL_VALUE;
> map.addCount(-1, -1);
> Node<K, V> nonResidentNode = new Node<K, V>(-1, null, evict.getKey(),
> prevValue, null);
> removedNodes.add(nonResidentNode);
> map.notifyListenerOfRemoval(nonResidentNode, true);
> }
> }
> {code}
> I believe this just needs a {{node != null}} check.
> h3. Backtrace
> {noformat}
> 2016-10-18 03:37:46,678 i-baa20229 ERROR [org.infinispan.interceptors.InvocationContextInterceptor] (EE-ManagedExecutorService-LechmereDefault-Thread-1) ISPN000136: Error executing command GetKeyValueCommand, writing keys []: java.lang.NullPointerException
> at org.infinispan.commons.util.concurrent.jdk8backported.BoundedEquivalentConcurrentHashMapV8$LIRSEvictionPolicy.findIfEntriesNeedEvicting(BoundedEquivalentConcurrentHashMapV8.java:1532) [infinispan-commons-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.commons.util.concurrent.jdk8backported.BoundedEquivalentConcurrentHashMapV8.compute(BoundedEquivalentConcurrentHashMapV8.java:3658) [infinispan-commons-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.container.DefaultDataContainer.compute(DefaultDataContainer.java:323) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.persistence.PersistenceUtil.loadAndStoreInDataContainer(PersistenceUtil.java:91) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.CacheLoaderInterceptor.loadInContext(CacheLoaderInterceptor.java:367) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeeded(CacheLoaderInterceptor.java:362) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.CacheLoaderInterceptor.visitDataCommand(CacheLoaderInterceptor.java:183) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.CacheLoaderInterceptor.visitGetKeyValueCommand(CacheLoaderInterceptor.java:137) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.EntryWrappingInterceptor.visitDataReadCommand(EntryWrappingInterceptor.java:133) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.EntryWrappingInterceptor.visitGetKeyValueCommand(EntryWrappingInterceptor.java:123) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.locking.NonTransactionalLockingInterceptor.visitDataReadCommand(NonTransactionalLockingInterceptor.java:31) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.locking.AbstractLockingInterceptor.visitGetKeyValueCommand(AbstractLockingInterceptor.java:77) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.CacheMgmtInterceptor.visitDataReadCommand(CacheMgmtInterceptor.java:103) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.CacheMgmtInterceptor.visitGetKeyValueCommand(CacheMgmtInterceptor.java:91) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:107) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:76) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:85) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:336) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.cache.impl.CacheImpl.get(CacheImpl.java:411) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.cache.impl.CacheImpl.get(CacheImpl.java:403) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at org.infinispan.cache.impl.AbstractDelegatingCache.get(AbstractDelegatingCache.java:286) [infinispan-core-8.1.0.Final.jar:8.1.0.Final]
> at our code
> {noformat}
> h3. Our cache config (boiled down):
> {code:java|title=Cache Config}
> ConfigurationBuilder configBuilder = new ConfigurationBuilder();
> configBuilder
> .locking()
> .useLockStriping(false)
> .isolationLevel(IsolationLevel.READ_COMMITTED)
> .concurrencyLevel(12)
> .eviction()
> .strategy(EvictionStrategy.LIRS)
> .type(EvictionType.COUNT).size(10000)
> .clustering()
> .cacheMode(CacheMode.INVALIDATION_SYNC)
> .persistence()
> .passivation(false)
> .addStore(RedisStoreConfigurationBuilder.class)
> .connectionPool()
> .minIdle(6)
> .maxIdle(10)
> .maxTotal(20)
> .minEvictableIdleTime(30000)
> .timeBetweenEvictionRuns(30000)
> .topology(Topology.SERVER)
> .fetchPersistentState(true)
> .database(1)
> .addServer()
> .host("127.0.0.1")
> .port(REDIS_PORT)
> .socketTimeout(5000)
> .connectionTimeout(5000);
> {code}
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
7 years, 4 months
[JBoss JIRA] (ISPN-3618) Cannot retrieve evicted entries from Microsoft SQL Server 2012/2008R2
by Ryan Emerson (JIRA)
[ https://issues.jboss.org/browse/ISPN-3618?page=com.atlassian.jira.plugin.... ]
Ryan Emerson updated ISPN-3618:
-------------------------------
Git Pull Request: https://github.com/infinispan/infinispan/pull/4737, https://github.com/infinispan/infinispan/pull/4740 (was: https://github.com/infinispan/infinispan/pull/4737)
> Cannot retrieve evicted entries from Microsoft SQL Server 2012/2008R2
> ---------------------------------------------------------------------
>
> Key: ISPN-3618
> URL: https://issues.jboss.org/browse/ISPN-3618
> Project: Infinispan
> Issue Type: Bug
> Components: Loaders and Stores, Server
> Affects Versions: 6.0.0.CR1
> Reporter: Jakub Markos
> Assignee: Ryan Emerson
> Attachments: server_mssql2012_mysql55.log.zip
>
>
> When using this configuration:
> {code:xml}
> <local-cache name="default" start="EAGER" batching="false">
> <locking isolation="READ_COMMITTED" acquire-timeout="20000" concurrency-level="500" striping="false" />
> <transaction mode="NONE" />
> <eviction strategy="LRU" max-entries="2"/>
> <string-keyed-jdbc-store name="defaultStoreName" datasource="java:jboss/datasources/JdbcDS" passivation="false" preload="true" purge="false">
> <string-keyed-table prefix="EDG_STRING">
> <id-column name="id" type="VARCHAR(255)"/>
> <data-column name="datum" type="VARBINARY(1000)"/>
> <timestamp-column name="version" type="BIGINT"/>
> </string-keyed-table>
> </string-keyed-jdbc-store>
> </local-cache>
> {code}
> and running this code:
> {code}
> RemoteCache<Object, Object> cache = new RemoteCacheManager(conf).getCache();
> cache.clear();
> cache.put(new Double(10), new Double(10));
> cache.put(new Double(20), new Double(20));
> cache.put(new Double(30), new Double(30)); // key 10 is evicted
> System.out.println(cache.get(new Double(10)));
> System.out.println(cache.get(new Double(20)));
> System.out.println(cache.get(new Double(30)));
> {code}
> output:
> {quote}
> null
> 20.0
> 30.0
> {quote}
> Attached are logs for mssql2012 and mysql55 (where it works).
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
7 years, 4 months
[JBoss JIRA] (ISPN-3618) Cannot retrieve evicted entries from Microsoft SQL Server 2012/2008R2
by Ryan Emerson (JIRA)
[ https://issues.jboss.org/browse/ISPN-3618?page=com.atlassian.jira.plugin.... ]
Ryan Emerson updated ISPN-3618:
-------------------------------
Status: Pull Request Sent (was: Coding In Progress)
Git Pull Request: https://github.com/infinispan/infinispan/pull/4737
> Cannot retrieve evicted entries from Microsoft SQL Server 2012/2008R2
> ---------------------------------------------------------------------
>
> Key: ISPN-3618
> URL: https://issues.jboss.org/browse/ISPN-3618
> Project: Infinispan
> Issue Type: Bug
> Components: Loaders and Stores, Server
> Affects Versions: 6.0.0.CR1
> Reporter: Jakub Markos
> Assignee: Ryan Emerson
> Attachments: server_mssql2012_mysql55.log.zip
>
>
> When using this configuration:
> {code:xml}
> <local-cache name="default" start="EAGER" batching="false">
> <locking isolation="READ_COMMITTED" acquire-timeout="20000" concurrency-level="500" striping="false" />
> <transaction mode="NONE" />
> <eviction strategy="LRU" max-entries="2"/>
> <string-keyed-jdbc-store name="defaultStoreName" datasource="java:jboss/datasources/JdbcDS" passivation="false" preload="true" purge="false">
> <string-keyed-table prefix="EDG_STRING">
> <id-column name="id" type="VARCHAR(255)"/>
> <data-column name="datum" type="VARBINARY(1000)"/>
> <timestamp-column name="version" type="BIGINT"/>
> </string-keyed-table>
> </string-keyed-jdbc-store>
> </local-cache>
> {code}
> and running this code:
> {code}
> RemoteCache<Object, Object> cache = new RemoteCacheManager(conf).getCache();
> cache.clear();
> cache.put(new Double(10), new Double(10));
> cache.put(new Double(20), new Double(20));
> cache.put(new Double(30), new Double(30)); // key 10 is evicted
> System.out.println(cache.get(new Double(10)));
> System.out.println(cache.get(new Double(20)));
> System.out.println(cache.get(new Double(30)));
> {code}
> output:
> {quote}
> null
> 20.0
> 30.0
> {quote}
> Attached are logs for mssql2012 and mysql55 (where it works).
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
7 years, 4 months