[infinispan-issues] [JBoss JIRA] (ISPN-8323) Cache.evict(...) throws NPE if entry was already evicted and an eviction listener is present

Tristan Tarrant (JIRA) issues at jboss.org
Tue Sep 26 08:38:01 EDT 2017


     [ https://issues.jboss.org/browse/ISPN-8323?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tristan Tarrant updated ISPN-8323:
----------------------------------
        Status: Resolved  (was: Pull Request Sent)
    Resolution: Done


> Cache.evict(...) throws NPE if entry was already evicted and an eviction listener is present
> --------------------------------------------------------------------------------------------
>
>                 Key: ISPN-8323
>                 URL: https://issues.jboss.org/browse/ISPN-8323
>             Project: Infinispan
>          Issue Type: Bug
>          Components: Eviction
>    Affects Versions: 9.1.1.Final
>            Reporter: Paul Ferraro
>            Assignee: William Burns
>            Priority: Critical
>             Fix For: 9.1.2.Final, 9.2.0.Alpha1
>
>         Attachments: Test.java
>
>
> Attached reproducer throws:
> {noformat}
> ERROR: ISPN000136: Error executing command EvictCommand, writing keys [1]
> java.lang.NullPointerException
> 	at java.util.HashMap.merge(HashMap.java:1224)
> 	at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320)
> 	at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
> 	at java.util.Collections$2.tryAdvance(Collections.java:4717)
> 	at java.util.Collections$2.forEachRemaining(Collections.java:4725)
> 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
> 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
> 	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
> 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> 	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
> 	at org.infinispan.notifications.cachelistener.CacheNotifierImpl.notifyCacheEntriesEvicted(CacheNotifierImpl.java:509)
> 	at org.infinispan.commands.write.EvictCommand.notify(EvictCommand.java:56)
> 	at org.infinispan.notifications.cachelistener.NotifyHelper.entryCommitted(NotifyHelper.java:25)
> 	at org.infinispan.interceptors.locking.ClusteringDependentLogic$LocalLogic.commitSingleEntry(ClusteringDependentLogic.java:332)
> 	at org.infinispan.interceptors.locking.ClusteringDependentLogic$AbstractClusteringDependentLogic.commitEntry(ClusteringDependentLogic.java:183)
> 	at org.infinispan.interceptors.impl.EntryWrappingInterceptor.commitContextEntry(EntryWrappingInterceptor.java:578)
> 	at org.infinispan.interceptors.impl.EntryWrappingInterceptor.commitEntryIfNeeded(EntryWrappingInterceptor.java:801)
> 	at org.infinispan.interceptors.impl.EntryWrappingInterceptor.commitContextEntries(EntryWrappingInterceptor.java:555)
> 	at org.infinispan.interceptors.impl.EntryWrappingInterceptor.applyChanges(EntryWrappingInterceptor.java:611)
> 	at org.infinispan.interceptors.impl.EntryWrappingInterceptor.lambda$setSkipRemoteGetsAndInvokeNextForDataCommand$7(EntryWrappingInterceptor.java:667)
> 	at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextThenAccept(BaseAsyncInterceptor.java:109)
> 	at org.infinispan.interceptors.impl.EntryWrappingInterceptor.setSkipRemoteGetsAndInvokeNextForDataCommand(EntryWrappingInterceptor.java:664)
> 	at org.infinispan.interceptors.impl.EntryWrappingInterceptor.visitRemoveCommand(EntryWrappingInterceptor.java:360)
> 	at org.infinispan.interceptors.impl.EntryWrappingInterceptor.visitEvictCommand(EntryWrappingInterceptor.java:398)
> 	at org.infinispan.commands.write.EvictCommand.acceptVisitor(EvictCommand.java:34)
> 	at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:58)
> 	at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:54)
> 	at org.infinispan.interceptors.DDAsyncInterceptor.visitEvictCommand(DDAsyncInterceptor.java:95)
> 	at org.infinispan.commands.write.EvictCommand.acceptVisitor(EvictCommand.java:34)
> 	at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:58)
> 	at org.infinispan.interceptors.impl.CacheMgmtInterceptor.visitEvictCommand(CacheMgmtInterceptor.java:74)
> 	at org.infinispan.commands.write.EvictCommand.acceptVisitor(EvictCommand.java:34)
> 	at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndExceptionally(BaseAsyncInterceptor.java:127)
> 	at org.infinispan.interceptors.impl.InvocationContextInterceptor.visitCommand(InvocationContextInterceptor.java:96)
> 	at org.infinispan.interceptors.impl.AsyncInterceptorChainImpl.invoke(AsyncInterceptorChainImpl.java:248)
> 	at org.infinispan.cache.impl.CacheImpl.evict(CacheImpl.java:863)
> 	at org.infinispan.cache.impl.CacheImpl.evict(CacheImpl.java:853)
> 	at org.infinispan.cache.impl.AbstractDelegatingCache.evict(AbstractDelegatingCache.java:64)
> 	at org.infinispan.cache.impl.EncoderCache.evict(EncoderCache.java:234)
> 	at org.wildfly.clustering.infinispan.spi.persistence.Test.evict(Test.java:52)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:498)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
> 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.2.3#72005)


More information about the infinispan-issues mailing list