Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-16319

NPE thrown when attempting to remove entry with xsite.

This issue belongs to an archived project. You can view it, but you can't modify it. Learn more

XMLWordPrintable

      There is a primary cluster with multiple caches all configured from the same template in RHDG 8.4.6.

      When the backup cluster is brought online most of the caches are backed up fine except this one cache and only some entries in the cache cause an issue.

      The issue is seen in their secondary cluster logs, as a repeated error showing a NullPointerException. Below is the stack trace:

       

      2024-07-20 08:18:20,222 ERROR (jgroups-1426,xsite,node1:2) [org.infinispan.interceptors.impl.InvocationContextInterceptor] ISPN000136: Error executing command IracPutKeyValueCommand on Cache 'DataCache', writing keys [WrappedByteArray[\B\F\0\0 (13 bytes)]] java.lang.NullPointerException: Cannot invoke "Object.getClass()" because "o" is null
      at org.infinispan.interceptors.impl.IsMarshallableInterceptor.throwNotSerializable(IsMarshallableInterceptor.java:144)
      at org.infinispan.interceptors.impl.IsMarshallableInterceptor.checkMarshallable(IsMarshallableInterceptor.java:135)
      at org.infinispan.interceptors.impl.IsMarshallableInterceptor.visitIracPutKeyValueCommand(IsMarshallableInterceptor.java:71)
      at org.infinispan.commands.write.IracPutKeyValueCommand.acceptVisitor(IracPutKeyValueCommand.java:109)
      at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:59)
      at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:54)
      at org.infinispan.interceptors.DDAsyncInterceptor.visitIracPutKeyValueCommand(DDAsyncInterceptor.java:105)
      at org.infinispan.commands.write.IracPutKeyValueCommand.acceptVisitor(IracPutKeyValueCommand.java:109)
      at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndExceptionally(BaseAsyncInterceptor.java:128)
      at org.infinispan.interceptors.impl.InvocationContextInterceptor.visitCommand(InvocationContextInterceptor.java:90)
      at org.infinispan.interceptors.impl.AsyncInterceptorChainImpl.invokeAsync(AsyncInterceptorChainImpl.java:220)
      at org.infinispan.cache.impl.InvocationHelper.doInvokeAsync(InvocationHelper.java:318)
      at org.infinispan.cache.impl.InvocationHelper.invokeAsync(InvocationHelper.java:156)
      at org.infinispan.xsite.ClusteredCacheBackupReceiver.removeKey(ClusteredCacheBackupReceiver.java:221)
      at org.infinispan.xsite.commands.remote.IracPutManyRequest$Remove.execute(IracPutManyRequest.java:155)
      at org.infinispan.xsite.commands.remote.IracPutManyRequest.executeOperation(IracPutManyRequest.java:61)
      at org.infinispan.xsite.commands.remote.IracUpdateKeyRequest.invokeInLocalCache(IracUpdateKeyRequest.java:24)
      at org.infinispan.xsite.commands.remote.XSiteCacheRequest.invokeInLocalSite(XSiteCacheRequest.java:47)
      at org.infinispan.remoting.inboundhandler.GlobalInboundInvocationHandler.handleFromRemoteSite(GlobalInboundInvocationHandler.java:93)
      at org.infinispan.remoting.transport.jgroups.JGroupsTransport.processRequest(JGroupsTransport.java:1543)
      at org.infinispan.remoting.transport.jgroups.JGroupsTransport.processMessage(JGroupsTransport.java:1465)
      at org.infinispan.remoting.transport.jgroups.JGroupsTransport$ChannelCallbacks.up(JGroupsTransport.java:1642)
      at org.jgroups.JChannel.up(JChannel.java:733)
      at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:936)
      at org.jgroups.protocols.relay.RELAY2.deliver(RELAY2.java:460)
      at org.jgroups.protocols.relay.RELAY2.route(RELAY2.java:352)
      at org.jgroups.protocols.relay.RELAY2.handleMessage(RELAY2.java:332)
      at org.jgroups.protocols.relay.RELAY2.handleRelayMessage(RELAY2.java:285)
      at org.jgroups.protocols.relay.Relayer2$Bridge.receive(Relayer2.java:135)
      at org.jgroups.JChannel.up(JChannel.java:736)
      at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:936)
      at org.jgroups.protocols.FRAG2.up(FRAG2.java:139)
      at org.jgroups.protocols.FlowControl.up(FlowControl.java:253)
      at org.jgroups.protocols.FlowControl.up(FlowControl.java:261)
      at org.jgroups.protocols.pbcast.GMS.up(GMS.java:845)
      at org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:226)
      at org.jgroups.protocols.UNICAST3.deliverMessage(UNICAST3.java:1083)
      at org.jgroups.protocols.UNICAST3.addMessage(UNICAST3.java:822)
      at org.jgroups.protocols.UNICAST3.handleDataReceived(UNICAST3.java:804)
      at org.jgroups.protocols.UNICAST3.up(UNICAST3.java:453)
      at org.jgroups.protocols.pbcast.NAKACK2.up(NAKACK2.java:680)
      at org.jgroups.protocols.VERIFY_SUSPECT2.up(VERIFY_SUSPECT2.java:105)
      at org.jgroups.protocols.FailureDetection.up(FailureDetection.java:180)
      at org.jgroups.protocols.FD_SOCK2.up(FD_SOCK2.java:188)
      at org.jgroups.protocols.MERGE3.up(MERGE3.java:274)
      at org.jgroups.protocols.Discovery.up(Discovery.java:294)
      at org.jgroups.stack.Protocol.up(Protocol.java:340)
      at org.jgroups.protocols.TP.passMessageUp(TP.java:1184)
      at org.jgroups.util.SubmitToThreadPool$SingleMessageHandler.run(SubmitToThreadPool.java:107)
      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
      at java.base/java.lang.Thread.run(Thread.java:833)

      What they have found different with this one cache is that it is the only cache where their process can make a call to remove an entry from the cache.

              pruivo@redhat.com Pedro Ruivo
              rhn-support-dstephan David Stephan
              Archiver:
              rhn-support-adongare Amol Dongare

                Created:
                Updated:
                Resolved:
                Archived: