[infinispan-issues] [JBoss JIRA] (ISPN-7975) NullPointerException in PutMapHelper.transformResult

Dan Berindei (JIRA) issues at jboss.org
Fri Jun 23 12:23:00 EDT 2017


    [ https://issues.jboss.org/browse/ISPN-7975?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13426105#comment-13426105 ] 

Dan Berindei commented on ISPN-7975:
------------------------------------

[~rvansa] the NPE seems to come from {{PutMapCommand.perform()}} not adding null previous values to the result map:

{code}
            // No need to add key -> null to the map
            if (previousValues != null && previousValue != null) {
{code}

If the previous value is missing from the remote response, some {{MergingCompletableFuture.results}} entries will be {{null}}, causing the NPE. The reason {{testPutMapAsync}} fails and {{testPutMap}} doesn't is that {{testPutMap}} only overwrites existing keys, it doesn't create new ones.

Also, the core test suite is missing a test for {{PutMapCommand(!IGNORE_RETURN_VALUES)}}.

> NullPointerException in PutMapHelper.transformResult
> ----------------------------------------------------
>
>                 Key: ISPN-7975
>                 URL: https://issues.jboss.org/browse/ISPN-7975
>             Project: Infinispan
>          Issue Type: Bug
>          Components: Core, Test Suite - Query
>            Reporter: Dan Berindei
>            Assignee: Radim Vansa
>            Priority: Blocker
>              Labels: testsuite_stability
>             Fix For: 9.1.0.CR1
>
>
> After the ISPN-7884 fix was integrated, several query tests are failing with a {{NullPointerException}} in {{PutMapHelper.transformResult}}:
> {noformat}
> 13:35:09,406 ERROR (testng-Test:[]) [TestSuiteProgress] Test failed: org.infinispan.query.blackbox.ClusteredCacheTest.testPutMapAsync
> java.util.concurrent.ExecutionException: org.infinispan.commons.CacheException: java.lang.NullPointerException
> 	at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895) ~[?:1.8.0_121]
> 	at org.infinispan.query.blackbox.ClusteredCacheTest.testPutMapAsync(ClusteredCacheTest.java:415) ~[test-classes/:?]
>         ...
> Caused by: org.infinispan.commons.CacheException: java.lang.NullPointerException
> 	at org.infinispan.interceptors.impl.InvocationContextInterceptor.rethrowException(InvocationContextInterceptor.java:144) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at org.infinispan.interceptors.impl.InvocationContextInterceptor.access$000(InvocationContextInterceptor.java:44) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at org.infinispan.interceptors.impl.InvocationContextInterceptor$1.apply(InvocationContextInterceptor.java:61) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at org.infinispan.interceptors.InvocationExceptionFunction.apply(InvocationExceptionFunction.java:21) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at org.infinispan.interceptors.impl.QueueAsyncInvocationStage.invokeQueuedHandlers(QueueAsyncInvocationStage.java:118) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at org.infinispan.interceptors.impl.QueueAsyncInvocationStage.accept(QueueAsyncInvocationStage.java:81) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at org.infinispan.interceptors.impl.QueueAsyncInvocationStage.accept(QueueAsyncInvocationStage.java:30) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:760) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:736) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977) ~[?:1.8.0_121]
> 	at org.infinispan.interceptors.distribution.BaseDistributionInterceptor$CountDownCompletableFuture.countDown(BaseDistributionInterceptor.java:752) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at org.infinispan.interceptors.distribution.NonTxDistributionInterceptor.lambda$handleRemoteSegmentsForReadWriteManyCommand$7(NonTxDistributionInterceptor.java:395) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:760) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:736) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1962) ~[?:1.8.0_121]
> 	at org.infinispan.remoting.transport.jgroups.SingleResponseFuture.requestDone(SingleResponseFuture.java:28) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at org.infinispan.remoting.transport.jgroups.SingleResponseFuture.accept(SingleResponseFuture.java:58) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at org.infinispan.remoting.transport.jgroups.SingleResponseFuture.accept(SingleResponseFuture.java:16) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:760) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:736) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1962) ~[?:1.8.0_121]
> 	at org.jgroups.blocks.UnicastRequest.receiveResponse(UnicastRequest.java:56) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.infinispan.remoting.transport.jgroups.CustomRequestCorrelator.handleResponse(CustomRequestCorrelator.java:50) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at org.jgroups.blocks.RequestCorrelator.dispatch(RequestCorrelator.java:363) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.blocks.RequestCorrelator.receiveMessage(RequestCorrelator.java:307) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:579) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.JChannel.up(JChannel.java:816) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:893) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.protocols.RSVP.up(RSVP.java:163) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.protocols.FlowControl.up(FlowControl.java:345) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.protocols.tom.TOA.up(TOA.java:112) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.protocols.pbcast.GMS.up(GMS.java:867) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:240) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.protocols.UNICAST3.deliverMessage(UNICAST3.java:1059) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.protocols.UNICAST3.handleDataReceived(UNICAST3.java:785) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.protocols.UNICAST3.up(UNICAST3.java:438) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.protocols.pbcast.NAKACK2.up(NAKACK2.java:598) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.protocols.Discovery.up(Discovery.java:262) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.protocols.TP.passMessageUp(TP.java:1204) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	at org.jgroups.util.SubmitToThreadPool$SingleMessageHandler.run(SubmitToThreadPool.java:87) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	... 3 more
> Caused by: java.lang.NullPointerException
> 	at org.infinispan.interceptors.distribution.NonTxDistributionInterceptor$PutMapHelper.transformResult(NonTxDistributionInterceptor.java:595) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at org.infinispan.interceptors.distribution.BaseDistributionInterceptor$MergingCompletableFuture.result(BaseDistributionInterceptor.java:790) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at org.infinispan.interceptors.distribution.BaseDistributionInterceptor$CountDownCompletableFuture.countDown(BaseDistributionInterceptor.java:750) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at org.infinispan.interceptors.distribution.NonTxDistributionInterceptor.lambda$handleRemoteSegmentsForReadWriteManyCommand$7(NonTxDistributionInterceptor.java:395) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:760) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:736) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1962) ~[?:1.8.0_121]
> 	at org.infinispan.remoting.transport.jgroups.SingleResponseFuture.requestDone(SingleResponseFuture.java:28) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at org.infinispan.remoting.transport.jgroups.SingleResponseFuture.accept(SingleResponseFuture.java:58) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at org.infinispan.remoting.transport.jgroups.SingleResponseFuture.accept(SingleResponseFuture.java:16) ~[infinispan-core-9.1.0-SNAPSHOT.jar:9.1.0-SNAPSHOT]
> 	at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:760) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:736) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) ~[?:1.8.0_121]
> 	at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1962) ~[?:1.8.0_121]
> 	at org.jgroups.blocks.UnicastRequest.receiveResponse(UnicastRequest.java:56) ~[jgroups-4.0.3.Final.jar:4.0.3.Final]
> 	...
> {noformat}



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


More information about the infinispan-issues mailing list