-
Bug
-
Resolution: Done
-
Major
-
13.0.5.Final, 13.0.6.Final
-
None
If I bring up a cluster of infinispan transactional distributed sync caches and try to merge from a node which is not an owner the merge fails with a null pointer from one of the owners (primary?). The exception generated on our server is:
Feb 09, 2022 2:28:36 PM org.infinispan.remoting.inboundhandler.BasePerCacheInboundInvocationHandler exceptionHandlingCommand
WARN: ISPN000071: Caught exception when handling command SingleRpcCommand{cacheName='weather', command=TxReadOnlyKeyCommand{key=A, f=null, mutations=[org.infinispan.commands.functional.Mutations$ReadWrite@6ce4c4c], params=Params=[LOAD_PERSIST, LOCK, ALL, GATHER, SYNC], keyDataConversion=DataConversion
, valueDataConversion=DataConversion{encoderClass=null, wrapperClass=null, requestMediaType=application/x-java-object, storageMediaType=application/x-java-object, encoderId=1, wrapperId=0, encoder=org.infinispan.commons.dataconversion.IdentityEncoder@2f8b17ad, wrapper=null, isKey=false, transcoder=null}}}
org.infinispan.util.UserRaisedFunctionalException: java.lang.NullPointerException
at org.infinispan.commands.functional.functions.MergeFunction.apply(MergeFunction.java:56)
at org.infinispan.commands.functional.functions.MergeFunction.apply(MergeFunction.java:20)
at org.infinispan.commands.functional.Mutations$ReadWrite.apply(Mutations.java:106)
at org.infinispan.interceptors.impl.CallInterceptor.visitTxReadOnlyKeyCommand(CallInterceptor.java:859)
at org.infinispan.interceptors.impl.CallInterceptor.visitReadOnlyKeyCommand(CallInterceptor.java:834)
at org.infinispan.commands.functional.ReadOnlyKeyCommand.acceptVisitor(ReadOnlyKeyCommand.java:79)
at org.infinispan.interceptors.impl.CallInterceptor.visitCommand(CallInterceptor.java:178)
at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:61)
at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:55)
at org.infinispan.interceptors.DDAsyncInterceptor.visitReadOnlyKeyCommand(DDAsyncInterceptor.java:183)
at org.infinispan.commands.functional.ReadOnlyKeyCommand.acceptVisitor(ReadOnlyKeyCommand.java:79)
at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextThenApply(BaseAsyncInterceptor.java:79)
at org.infinispan.interceptors.distribution.BaseDistributionInterceptor.visitReadOnlyKeyCommand(BaseDistributionInterceptor.java:656)
at org.infinispan.commands.functional.ReadOnlyKeyCommand.acceptVisitor(ReadOnlyKeyCommand.java:79)
at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:59)
at org.infinispan.interceptors.BaseAsyncInterceptor.asyncInvokeNext(BaseAsyncInterceptor.java:232)
at org.infinispan.interceptors.impl.EntryWrappingInterceptor.visitReadOnlyKeyCommand(EntryWrappingInterceptor.java:511)
at org.infinispan.commands.functional.ReadOnlyKeyCommand.acceptVisitor(ReadOnlyKeyCommand.java:79)
at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:59)
at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:55)
at org.infinispan.interceptors.DDAsyncInterceptor.visitReadOnlyKeyCommand(DDAsyncInterceptor.java:183)
at org.infinispan.commands.functional.ReadOnlyKeyCommand.acceptVisitor(ReadOnlyKeyCommand.java:79)
at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:59)
at org.infinispan.interceptors.locking.PessimisticLockingInterceptor.visitDataReadCommand(PessimisticLockingInterceptor.java:59)
at org.infinispan.interceptors.locking.AbstractLockingInterceptor.visitReadOnlyKeyCommand(AbstractLockingInterceptor.java:217)
at org.infinispan.commands.functional.ReadOnlyKeyCommand.acceptVisitor(ReadOnlyKeyCommand.java:79)
at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:59)
at org.infinispan.interceptors.impl.TxInterceptor.visitReadOnlyKeyCommand(TxInterceptor.java:352)
at org.infinispan.commands.functional.ReadOnlyKeyCommand.acceptVisitor(ReadOnlyKeyCommand.java:79)
at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:59)
at org.infinispan.statetransfer.TransactionSynchronizerInterceptor.visitCommand(TransactionSynchronizerInterceptor.java:41)
at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndHandle(BaseAsyncInterceptor.java:190)
at org.infinispan.interceptors.impl.BaseStateTransferInterceptor.handleReadCommand(BaseStateTransferInterceptor.java:197)
at org.infinispan.interceptors.impl.BaseStateTransferInterceptor.visitReadOnlyKeyCommand(BaseStateTransferInterceptor.java:270)
at org.infinispan.commands.functional.ReadOnlyKeyCommand.acceptVisitor(ReadOnlyKeyCommand.java:79)
at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:59)
at org.infinispan.interceptors.impl.CacheMgmtInterceptor.visitReadOnlyKeyCommand(CacheMgmtInterceptor.java:272)
at org.infinispan.commands.functional.ReadOnlyKeyCommand.acceptVisitor(ReadOnlyKeyCommand.java:79)
at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndExceptionally(BaseAsyncInterceptor.java:128)
at org.infinispan.interceptors.impl.InvocationContextInterceptor.visitCommand(InvocationContextInterceptor.java:89)
at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:61)
at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:55)
at org.infinispan.interceptors.DDAsyncInterceptor.visitReadOnlyKeyCommand(DDAsyncInterceptor.java:183)
at org.infinispan.commands.functional.ReadOnlyKeyCommand.acceptVisitor(ReadOnlyKeyCommand.java:79)
at org.infinispan.interceptors.DDAsyncInterceptor.visitCommand(DDAsyncInterceptor.java:51)
at org.infinispan.interceptors.impl.AsyncInterceptorChainImpl.invokeAsync(AsyncInterceptorChainImpl.java:220)
at org.infinispan.commands.remote.SingleRpcCommand.invokeAsync(SingleRpcCommand.java:70)
at org.infinispan.remoting.inboundhandler.BasePerCacheInboundInvocationHandler.invokeCommand(BasePerCacheInboundInvocationHandler.java:109)
at org.infinispan.remoting.inboundhandler.BaseBlockingRunnable.invoke(BaseBlockingRunnable.java:107)
at org.infinispan.remoting.inboundhandler.BaseBlockingRunnable.runAsync(BaseBlockingRunnable.java:75)
at org.infinispan.remoting.inboundhandler.BaseBlockingRunnable.run(BaseBlockingRunnable.java:44)
at org.infinispan.remoting.inboundhandler.BasePerCacheInboundInvocationHandler.handleRunnable(BasePerCacheInboundInvocationHandler.java:159)
at org.infinispan.remoting.inboundhandler.TxPerCacheInboundInvocationHandler.handle(TxPerCacheInboundInvocationHandler.java:84)
at org.infinispan.remoting.inboundhandler.GlobalInboundInvocationHandler.handleCacheRpcCommand(GlobalInboundInvocationHandler.java:165)
at org.infinispan.remoting.inboundhandler.GlobalInboundInvocationHandler.handleFromCluster(GlobalInboundInvocationHandler.java:112)
at org.infinispan.remoting.transport.jgroups.JGroupsTransport.processRequest(JGroupsTransport.java:1457)
at org.infinispan.remoting.transport.jgroups.JGroupsTransport.processMessage(JGroupsTransport.java:1380)
at org.infinispan.remoting.transport.jgroups.JGroupsTransport.access$300(JGroupsTransport.java:138)
at org.infinispan.remoting.transport.jgroups.JGroupsTransport$ChannelCallbacks.up(JGroupsTransport.java:1524)
at org.jgroups.JChannel.up(JChannel.java:780)
at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:913)
at org.jgroups.protocols.FRAG3.up(FRAG3.java:165)
at org.jgroups.protocols.FlowControl.up(FlowControl.java:355)
at org.jgroups.protocols.FlowControl.up(FlowControl.java:363)
at org.jgroups.protocols.pbcast.GMS.up(GMS.java:876)
at org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:254)
at org.jgroups.protocols.UNICAST3.deliverMessage(UNICAST3.java:1048)
at org.jgroups.protocols.UNICAST3.addMessage(UNICAST3.java:771)
at org.jgroups.protocols.UNICAST3.handleDataReceived(UNICAST3.java:752)
at org.jgroups.protocols.UNICAST3.up(UNICAST3.java:405)
at org.jgroups.protocols.pbcast.NAKACK2.up(NAKACK2.java:592)
at org.jgroups.protocols.VERIFY_SUSPECT.up(VERIFY_SUSPECT.java:132)
at org.jgroups.protocols.FailureDetection.up(FailureDetection.java:186)
at org.jgroups.protocols.FD_SOCK.up(FD_SOCK.java:254)
at org.jgroups.protocols.MERGE3.up(MERGE3.java:281)
at org.jgroups.protocols.Discovery.up(Discovery.java:300)
at org.jgroups.protocols.TP.passMessageUp(TP.java:1400)
at org.jgroups.util.SubmitToThreadPool$SingleMessageHandler.run(SubmitToThreadPool.java:98)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.NullPointerException
at org.infinispan.encoding.DataConversion.getWrapper(DataConversion.java:271)
at org.infinispan.encoding.DataConversion.toStorage(DataConversion.java:228)
at org.infinispan.commands.functional.functions.MergeFunction.apply(MergeFunction.java:39)
... 80 more