[JBoss JIRA] (ISPN-9315) Cache Store Striping
by Tristan Tarrant (JIRA)
[ https://issues.jboss.org/browse/ISPN-9315?page=com.atlassian.jira.plugin.... ]
Tristan Tarrant updated ISPN-9315:
----------------------------------
Description: Local Cache Loaders/Stores should be able to store data in a shared persistent location by splitting up into segments (was: Cache Loaders/Stores should be segment-aware.)
> Cache Store Striping
> --------------------
>
> Key: ISPN-9315
> URL: https://issues.jboss.org/browse/ISPN-9315
> Project: Infinispan
> Issue Type: Bug
> Components: Loaders and Stores
> Reporter: Tristan Tarrant
> Assignee: William Burns
> Fix For: 9.4.0.Final
>
>
> Local Cache Loaders/Stores should be able to store data in a shared persistent location by splitting up into segments
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
6 years, 6 months
[JBoss JIRA] (ISPN-9314) AtomicKeySetImpl deserialization should not modify running transaction
by Dan Berindei (JIRA)
[ https://issues.jboss.org/browse/ISPN-9314?page=com.atlassian.jira.plugin.... ]
Dan Berindei updated ISPN-9314:
-------------------------------
Status: Pull Request Sent (was: Open)
Git Pull Request: https://github.com/infinispan/infinispan/pull/6082
> AtomicKeySetImpl deserialization should not modify running transaction
> ----------------------------------------------------------------------
>
> Key: ISPN-9314
> URL: https://issues.jboss.org/browse/ISPN-9314
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Affects Versions: 9.3.0.CR1
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Fix For: 9.3.0.Final
>
>
> {{AtomicKeySetImpl.Externalizer.readObject()}} invokes a {{GetKeysInGroupCommand}} with a new context, but if a transaction is already running on the same thread it will reuse the transaction. Since tx contexts are just a wrapper over the {{CacheTransaction}}, looking up entries for the {{GetKeysInGroupCommand}} modifies the parent invocation context as well.
> Every time an {{AtomicKeySetImpl}} is read in a transaction and then passivated before commit, the externalizer thus adds the members of the group in the parent transaction's context:
> {noformat}
> testng-test: Committing {AtomicKeySetImpl.Key{group=key1, key=second}=VersionedRepeatableReadEntry(58cf8f94){key=AtomicKeySetImpl.Key{group=key1, key=second}, value=second component of object with key=key1, isCreated=true, isChanged=true, isRemoved=false, isExpired=false, skipLookup=true, metadata=EmbeddedExpirableMetadata{lifespan=-1, maxIdle=-1, version=NumericVersion{version=0}}}, key1=VersionedRepeatableReadEntry(66c38e51)
> {key=key1, value=AtomicKeySetImpl{keys=[AtomicKeySetImpl.Key{group=key1, key=first}, first], added=[second], removed=null}, isCreated=false, isChanged=true, isRemoved=false, isExpired=false, skipLookup=true, metadata=MetaParamsInternalMetadata{params=MetaParams{length=1, metas=[MetaEntryVersion=NumericVersion{version=2}]}}}}
> Breakpoint reached
> at org.infinispan.transaction.impl.LocalTransaction.putLookedUpEntry(LocalTransaction.java:107)
> at org.infinispan.context.impl.AbstractTxInvocationContext.putLookedUpEntry(AbstractTxInvocationContext.java:105)
> at org.infinispan.container.impl.EntryFactoryImpl.wrapExternalEntry(EntryFactoryImpl.java:173)
> at org.infinispan.interceptors.impl.CacheLoaderInterceptor.lambda$visitGetKeysInGroupCommand$2(CacheLoaderInterceptor.java:208)
> at org.infinispan.interceptors.impl.CacheLoaderInterceptor$$Lambda$304.1315908533.accept(Unknown Source:-1)
> at io.reactivex.Flowable.blockingForEach(Flowable.java:5325)
> at org.infinispan.interceptors.impl.CacheLoaderInterceptor.visitGetKeysInGroupCommand(CacheLoaderInterceptor.java:208)
> at org.infinispan.commands.remote.GetKeysInGroupCommand.acceptVisitor(GetKeysInGroupCommand.java:91)
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextThenAccept(BaseAsyncInterceptor.java:98)
> at org.infinispan.interceptors.impl.EntryWrappingInterceptor.visitGetKeysInGroupCommand(EntryWrappingInterceptor.java:427)
> at org.infinispan.commands.remote.GetKeysInGroupCommand.acceptVisitor(GetKeysInGroupCommand.java:91)
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndFinally(BaseAsyncInterceptor.java:150)
> at org.infinispan.interceptors.impl.GroupingInterceptor.visitGetKeysInGroupCommand(GroupingInterceptor.java:50)
> at org.infinispan.commands.remote.GetKeysInGroupCommand.acceptVisitor(GetKeysInGroupCommand.java:91)
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:54)
> at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:54)
> at org.infinispan.interceptors.DDAsyncInterceptor.visitGetKeysInGroupCommand(DDAsyncInterceptor.java:177)
> at org.infinispan.commands.remote.GetKeysInGroupCommand.acceptVisitor(GetKeysInGroupCommand.java:91)
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:54)
> at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:54)
> at org.infinispan.interceptors.DDAsyncInterceptor.visitGetKeysInGroupCommand(DDAsyncInterceptor.java:177)
> at org.infinispan.commands.remote.GetKeysInGroupCommand.acceptVisitor(GetKeysInGroupCommand.java:91)
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:54)
> at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:54)
> at org.infinispan.interceptors.DDAsyncInterceptor.visitGetKeysInGroupCommand(DDAsyncInterceptor.java:177)
> at org.infinispan.commands.remote.GetKeysInGroupCommand.acceptVisitor(GetKeysInGroupCommand.java:91)
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:54)
> at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:54)
> at org.infinispan.interceptors.DDAsyncInterceptor.visitGetKeysInGroupCommand(DDAsyncInterceptor.java:177)
> at org.infinispan.commands.remote.GetKeysInGroupCommand.acceptVisitor(GetKeysInGroupCommand.java:91)
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndExceptionally(BaseAsyncInterceptor.java:123)
> at org.infinispan.interceptors.impl.InvocationContextInterceptor.visitCommand(InvocationContextInterceptor.java:90)
> at org.infinispan.interceptors.impl.AsyncInterceptorChainImpl.invoke(AsyncInterceptorChainImpl.java:248)
> at org.infinispan.atomic.impl.AtomicKeySetImpl$Externalizer.readObject(AtomicKeySetImpl.java:498)
> at org.infinispan.atomic.impl.AtomicKeySetImpl$Externalizer.readObject(AtomicKeySetImpl.java:466)
> at org.infinispan.marshall.core.GlobalMarshaller.readWithExternalizer(GlobalMarshaller.java:708)
> at org.infinispan.marshall.core.GlobalMarshaller.readNonNullableObject(GlobalMarshaller.java:691)
> at org.infinispan.marshall.core.GlobalMarshaller.readNullableObject(GlobalMarshaller.java:361)
> at org.infinispan.marshall.core.BytesObjectInput.readObject(BytesObjectInput.java:40)
> at org.infinispan.util.KeyValuePair$Externalizer.readObject(KeyValuePair.java:49)
> at org.infinispan.util.KeyValuePair$Externalizer.readObject(KeyValuePair.java:37)
> at org.infinispan.marshall.core.GlobalMarshaller.readWithExternalizer(GlobalMarshaller.java:708)
> at org.infinispan.marshall.core.GlobalMarshaller.readNonNullableObject(GlobalMarshaller.java:691)
> at org.infinispan.marshall.core.GlobalMarshaller.readNullableObject(GlobalMarshaller.java:361)
> at org.infinispan.marshall.core.GlobalMarshaller.objectFromObjectInput(GlobalMarshaller.java:194)
> at org.infinispan.marshall.core.GlobalMarshaller.objectFromByteBuffer(GlobalMarshaller.java:190)
> at org.infinispan.persistence.dummy.DummyInMemoryStore.deserialize(DummyInMemoryStore.java:363)
> at org.infinispan.persistence.dummy.DummyInMemoryStore.load(DummyInMemoryStore.java:160)
> at org.infinispan.persistence.manager.PersistenceManagerImpl.loadFromAllStores(PersistenceManagerImpl.java:551)
> at org.infinispan.persistence.PersistenceUtil.loadAndCheckExpiration(PersistenceUtil.java:219)
> at org.infinispan.persistence.PersistenceUtil.lambda$loadAndComputeInDataContainer$2(PersistenceUtil.java:196)
> at org.infinispan.persistence.PersistenceUtil$$Lambda$295.869610006.compute(Unknown Source:-1)
> at org.infinispan.container.impl.AbstractInternalDataContainer.lambda$compute$3(AbstractInternalDataContainer.java:231)
> at org.infinispan.container.impl.AbstractInternalDataContainer$$Lambda$274.1969969319.apply(Unknown Source:-1)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$remap$16(BoundedLocalCache.java:2199)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache$$Lambda$275.2081595126.apply(Unknown Source:-1)
> at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1853)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache.remap(BoundedLocalCache.java:2194)
> at com.github.benmanes.caffeine.cache.BoundedLocalCache.compute(BoundedLocalCache.java:2146)
> at com.github.benmanes.caffeine.cache.LocalCache.compute(LocalCache.java:100)
> at org.infinispan.container.impl.AbstractInternalDataContainer.compute(AbstractInternalDataContainer.java:230)
> at org.infinispan.persistence.PersistenceUtil.loadAndComputeInDataContainer(PersistenceUtil.java:206)
> at org.infinispan.statetransfer.CommitManager.commitEntry(CommitManager.java:129)
> at org.infinispan.statetransfer.CommitManager.commit(CommitManager.java:97)
> at org.infinispan.interceptors.locking.ClusteringDependentLogic$LocalLogic.commitSingleEntry(ClusteringDependentLogic.java:352)
> at org.infinispan.interceptors.locking.ClusteringDependentLogic$AbstractClusteringDependentLogic.commitEntry(ClusteringDependentLogic.java:189)
> at org.infinispan.interceptors.impl.VersionedEntryWrappingInterceptor.commitContextEntry(VersionedEntryWrappingInterceptor.java:116)
> at org.infinispan.interceptors.impl.EntryWrappingInterceptor.commitEntryIfNeeded(EntryWrappingInterceptor.java:813)
> at org.infinispan.interceptors.impl.EntryWrappingInterceptor.lambda$commitContextEntries$7(EntryWrappingInterceptor.java:570)
> at org.infinispan.interceptors.impl.EntryWrappingInterceptor$$Lambda$293.268086000.accept(Unknown Source:-1)
> at java.util.HashMap.forEach(HashMap.java:1289)
> at org.infinispan.context.EntryLookup.forEachEntry(EntryLookup.java:38)
> at org.infinispan.interceptors.impl.EntryWrappingInterceptor.commitContextEntries(EntryWrappingInterceptor.java:569)
> at org.infinispan.interceptors.impl.VersionedEntryWrappingInterceptor.doCommit(VersionedEntryWrappingInterceptor.java:95)
> at org.infinispan.interceptors.impl.VersionedEntryWrappingInterceptor.lambda$visitCommitCommand$1(VersionedEntryWrappingInterceptor.java:87)
> at org.infinispan.interceptors.impl.VersionedEntryWrappingInterceptor$$Lambda$288.836170750.accept(Unknown Source:-1)
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndFinally(BaseAsyncInterceptor.java:163)
> at org.infinispan.interceptors.impl.VersionedEntryWrappingInterceptor.visitCommitCommand(VersionedEntryWrappingInterceptor.java:86)
> at org.infinispan.commands.tx.CommitCommand.acceptVisitor(CommitCommand.java:38)
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:54)
> at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:54)
> at org.infinispan.interceptors.DDAsyncInterceptor.visitCommitCommand(DDAsyncInterceptor.java:142)
> at org.infinispan.commands.tx.CommitCommand.acceptVisitor(CommitCommand.java:38)
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextThenAccept(BaseAsyncInterceptor.java:98)
> at org.infinispan.interceptors.impl.NotificationInterceptor.visitCommitCommand(NotificationInterceptor.java:46)
> at org.infinispan.commands.tx.CommitCommand.acceptVisitor(CommitCommand.java:38)
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndFinally(BaseAsyncInterceptor.java:150)
> at org.infinispan.interceptors.locking.AbstractTxLockingInterceptor.visitCommitCommand(AbstractTxLockingInterceptor.java:51)
> at org.infinispan.commands.tx.CommitCommand.acceptVisitor(CommitCommand.java:38)
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextThenAccept(BaseAsyncInterceptor.java:98)
> at org.infinispan.interceptors.impl.TxInterceptor.finishCommit(TxInterceptor.java:189)
> at org.infinispan.interceptors.impl.TxInterceptor.visitCommitCommand(TxInterceptor.java:183)
> at org.infinispan.commands.tx.CommitCommand.acceptVisitor(CommitCommand.java:38)
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:54)
> at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:54)
> at org.infinispan.interceptors.DDAsyncInterceptor.visitCommitCommand(DDAsyncInterceptor.java:142)
> at org.infinispan.commands.tx.CommitCommand.acceptVisitor(CommitCommand.java:38)
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndExceptionally(BaseAsyncInterceptor.java:123)
> at org.infinispan.interceptors.impl.InvocationContextInterceptor.visitCommand(InvocationContextInterceptor.java:90)
> at org.infinispan.interceptors.impl.AsyncInterceptorChainImpl.invoke(AsyncInterceptorChainImpl.java:248)
> at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:137)
> at org.infinispan.transaction.impl.TransactionCoordinator.commitInternal(TransactionCoordinator.java:219)
> at org.infinispan.transaction.impl.TransactionCoordinator.commit(TransactionCoordinator.java:161)
> at org.infinispan.transaction.xa.XaTransactionTable.commit(XaTransactionTable.java:125)
> at org.infinispan.transaction.xa.TransactionXaAdapter.commit(TransactionXaAdapter.java:68)
> at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelOnePhaseCommit(XAResourceRecord.java:698)
> at com.arjuna.ats.arjuna.coordinator.BasicAction.onePhaseCommit(BasicAction.java:2364)
> at com.arjuna.ats.arjuna.coordinator.BasicAction.End(BasicAction.java:1518)
> at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:96)
> at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:162)
> at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1200)
> at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:126)
> at org.infinispan.atomic.impl.TransactionHelper.run(TransactionHelper.java:75)
> at org.infinispan.atomic.impl.FineGrainedAtomicMapProxyImpl.put(FineGrainedAtomicMapProxyImpl.java:186)
> at org.infinispan.atomic.LocalDeltaAwareEvictionTest$5.createObject(LocalDeltaAwareEvictionTest.java:279)
> at org.infinispan.atomic.LocalDeltaAwareEvictionTest$5.createObject(LocalDeltaAwareEvictionTest.java:273)
> at org.infinispan.atomic.LocalDeltaAwareEvictionTest$1.call(LocalDeltaAwareEvictionTest.java:95)
> at org.infinispan.atomic.LocalDeltaAwareEvictionTest.withTx(LocalDeltaAwareEvictionTest.java:78)
> at org.infinispan.atomic.LocalDeltaAwareEvictionTest.test(LocalDeltaAwareEvictionTest.java:92)
> at org.infinispan.atomic.LocalDeltaAwareEvictionTest.testFineGrainedAtomicMap(LocalDeltaAwareEvictionTest.java:269)
> testng-test: Adding entry AtomicKeySetImpl.Key{group=key1, key=first} : VersionedRepeatableReadEntry(fabb651){key=AtomicKeySetImpl.Key{group=key1, key=first}, value=first component of object with key=key1, isCreated=false, isChanged=false, isRemoved=false, isExpired=false, skipLookup=false, metadata=EmbeddedExpirableMetadata{lifespan=-1, maxIdle=-1, version=NumericVersion{version=2}}}
> {noformat}
> Interesting enough, the {{Iterator}}-based iteration in {{EntryWrappingInterceptor.commitContextEntries}} doesn't throw a {{ConcurrentModificationException}} after this modification (at least in {{LocalDeltaAwareEvictionTest}}). It only started failing after I replaced the iterator with {{HashMap.forEach()}}.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
6 years, 6 months
[JBoss JIRA] (ISPN-6026) Segment-aware shared cache stores
by Tristan Tarrant (JIRA)
[ https://issues.jboss.org/browse/ISPN-6026?page=com.atlassian.jira.plugin.... ]
Tristan Tarrant updated ISPN-6026:
----------------------------------
Fix Version/s: (was: 9.3.0.Final)
Sprint: Sprint 9.4.0.Alpha1
> Segment-aware shared cache stores
> ---------------------------------
>
> Key: ISPN-6026
> URL: https://issues.jboss.org/browse/ISPN-6026
> Project: Infinispan
> Issue Type: Enhancement
> Components: Loaders and Stores
> Reporter: Tristan Tarrant
> Assignee: William Burns
>
> Shared cache stores (e.g. JDBC) should be segment-aware so that they only load the keys they own.
> Possible implementation: add a segment id column, so that the store can SELECT * FROM table WHERE segment_id = segment
> Need to think about how to reconstruct segment ids.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
6 years, 6 months
[JBoss JIRA] (ISPN-9305) NullPointerException in cache.size() after cache.containsKey()
by Dan Berindei (JIRA)
[ https://issues.jboss.org/browse/ISPN-9305?page=com.atlassian.jira.plugin.... ]
Dan Berindei updated ISPN-9305:
-------------------------------
Status: Pull Request Sent (was: Open)
Git Pull Request: https://github.com/infinispan/infinispan/pull/6082
> NullPointerException in cache.size() after cache.containsKey()
> --------------------------------------------------------------
>
> Key: ISPN-9305
> URL: https://issues.jboss.org/browse/ISPN-9305
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Affects Versions: 9.3.0.CR1
> Reporter: Dan Berindei
> Fix For: 9.3.0.Final
>
>
> {{containsKey(missingKey)}} registers a {{NullCacheEntry}} in the transaction context to signal that the entry was already checked and it does not exist.
> If the cache is repl/dist, {{size()}} uses distributed streams. {{TxDistributedCacheStream}} doesn't know about {{NullCacheEntry}} and tries to compute the segment of its key, causing a {{NullPointerException}}:
> {noformat}
> 14:52:36,645 ERROR (testng-test) [InvocationContextInterceptor] ISPN000136: Error executing command SizeCommand, writing keys []
> java.lang.NullPointerException: null
> at org.infinispan.commons.hash.MurmurHash3.hash(MurmurHash3.java:399) ~[classes/:?]
> at org.infinispan.distribution.ch.impl.HashFunctionPartitioner.getSegment(HashFunctionPartitioner.java:45) ~[classes/:?]
> at org.infinispan.stream.impl.AbstractCacheStream.isPrimaryOwner(AbstractCacheStream.java:425) ~[classes/:?]
> at org.infinispan.stream.impl.tx.TxDistributedCacheStream.lambda$null$0(TxDistributedCacheStream.java:68) ~[classes/:?]
> at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174) ~[?:1.8.0_171]
> at java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1625) ~[?:1.8.0_171]
> at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[?:1.8.0_171]
> at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_171]
> at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[?:1.8.0_171]
> at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_171]
> at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[?:1.8.0_171]
> at org.infinispan.stream.impl.tx.TxDistributedCacheStream.lambda$supplierForSegments$2(TxDistributedCacheStream.java:70) ~[classes/:?]
> at org.infinispan.stream.impl.termop.SegmentRetryingOperation.performOperation(SegmentRetryingOperation.java:78) ~[classes/:?]
> at org.infinispan.stream.impl.AbstractCacheStream.performOperationRehashAware(AbstractCacheStream.java:288) ~[classes/:?]
> at org.infinispan.stream.impl.AbstractCacheStream.performOperation(AbstractCacheStream.java:232) ~[classes/:?]
> at org.infinispan.stream.impl.DistributedCacheStream.count(DistributedCacheStream.java:426) ~[classes/:?]
> at org.infinispan.commands.read.SizeCommand.perform(SizeCommand.java:45) ~[classes/:?]
> at org.infinispan.commands.read.SizeCommand.perform(SizeCommand.java:20) ~[classes/:?]
> at org.infinispan.interceptors.impl.CallInterceptor.visitCommand(CallInterceptor.java:29) ~[classes/:?]
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:56) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:54) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.visitSizeCommand(DDAsyncInterceptor.java:100) ~[classes/:?]
> at org.infinispan.interceptors.distribution.BaseDistributionInterceptor.visitSizeCommand(BaseDistributionInterceptor.java:122) ~[classes/:?]
> at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35) ~[classes/:?]
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:54) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:54) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.visitSizeCommand(DDAsyncInterceptor.java:100) ~[classes/:?]
> at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35) ~[classes/:?]
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:54) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:54) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.visitSizeCommand(DDAsyncInterceptor.java:100) ~[classes/:?]
> at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35) ~[classes/:?]
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:54) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:54) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.visitSizeCommand(DDAsyncInterceptor.java:100) ~[classes/:?]
> at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35) ~[classes/:?]
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:54) ~[classes/:?]
> at org.infinispan.interceptors.impl.TxInterceptor.visitSizeCommand(TxInterceptor.java:270) ~[classes/:?]
> at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35) ~[classes/:?]
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:54) ~[classes/:?]
> at org.infinispan.statetransfer.TransactionSynchronizerInterceptor.visitCommand(TransactionSynchronizerInterceptor.java:41) ~[classes/:?]
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:56) ~[classes/:?]
> at org.infinispan.statetransfer.StateTransferInterceptor.handleDefault(StateTransferInterceptor.java:352) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.visitSizeCommand(DDAsyncInterceptor.java:100) ~[classes/:?]
> at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35) ~[classes/:?]
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:54) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:54) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.visitSizeCommand(DDAsyncInterceptor.java:100) ~[classes/:?]
> at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35) ~[classes/:?]
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndExceptionally(BaseAsyncInterceptor.java:123) ~[classes/:?]
> at org.infinispan.interceptors.impl.InvocationContextInterceptor.visitCommand(InvocationContextInterceptor.java:90) ~[classes/:?]
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:56) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:54) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.visitSizeCommand(DDAsyncInterceptor.java:100) ~[classes/:?]
> at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.visitCommand(DDAsyncInterceptor.java:50) ~[classes/:?]
> at org.infinispan.interceptors.impl.AsyncInterceptorChainImpl.invoke(AsyncInterceptorChainImpl.java:248) ~[classes/:?]
> at org.infinispan.cache.impl.CacheImpl.size(CacheImpl.java:443) ~[classes/:?]
> at org.infinispan.cache.impl.CacheImpl.size(CacheImpl.java:438) ~[classes/:?]
> at org.infinispan.cache.impl.AbstractDelegatingCache.size(AbstractDelegatingCache.java:313) ~[classes/:?]
> {noformat}
> {{CacheAPIOptimisticTest.testSizeInExplicitTxWithNonExistent}} tests this scenario, but only with a local cache.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
6 years, 6 months