[
https://issues.jboss.org/browse/ISPN-7975?page=com.atlassian.jira.plugin....
]
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)