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

CacheStore throws a NPE when preparing a transaction which includes a key it doesn't own

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

XMLWordPrintable

    • Low

      When a transaction is prepared, the PrepareCommand is broadcast to all participants in the transaction. However, recipients only replay Commands whose keys map to their node (by consulting the DistributionManager). When the PrepareCommand reaches the CacheStoreInterceptor, however, the CacheStoreInterceptor is unable to handle all of the modifications in the prepare as it doesn't filter out modifications based on what is mapped to the node in question. This results in a NullPointerExceptoion on the receiving node, which causes the transaction to abort:

      java.lang.NullPointerException
      	at org.infinispan.interceptors.CacheStoreInterceptor.getStoredEntry(CacheStoreInterceptor.java:337)
      	at org.infinispan.interceptors.CacheStoreInterceptor$StoreModificationsBuilder.visitPutKeyValueCommand(CacheStoreInterceptor.java:288)
      	at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:72)
      	at org.infinispan.interceptors.CacheStoreInterceptor.prepareCacheLoader(CacheStoreInterceptor.java:255)
      	at org.infinispan.interceptors.CacheStoreInterceptor.visitPrepareCommand(CacheStoreInterceptor.java:175)
      	at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:116)
      	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
      	at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:132)
      	at org.infinispan.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:106)
      	at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:116)
      	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
      	at org.infinispan.interceptors.NotificationInterceptor.visitPrepareCommand(NotificationInterceptor.java:48)
      	at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:116)
      	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
      	at org.infinispan.interceptors.TxInterceptor.visitPrepareCommand(TxInterceptor.java:103)
      	at org.infinispan.interceptors.DistTxInterceptor.visitPrepareCommand(DistTxInterceptor.java:59)
      	at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:116)
      	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
      	at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:87)
      	at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:58)
      	at org.infinispan.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:106)
      	at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:116)
      	at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:273)
      	at org.infinispan.commands.tx.PrepareCommand.perform(PrepareCommand.java:107)
      	at org.infinispan.remoting.InboundInvocationHandlerImpl.handle(InboundInvocationHandlerImpl.java:94)
      	at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.executeCommand(CommandAwareRpcDispatcher.java:179)
      	at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.handle(CommandAwareRpcDispatcher.java:153)
      	at org.jgroups.blocks.RequestCorrelator.handleRequest(RequestCorrelator.java:577)
      	at org.jgroups.blocks.RequestCorrelator.receiveMessage(RequestCorrelator.java:488)
      	at org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:364)
      	at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:770)
      	at org.jgroups.JChannel.up(JChannel.java:1467)
      

              manik_jira Manik Surtani (Inactive)
              manik_jira Manik Surtani (Inactive)
              Archiver:
              rhn-support-adongare Amol Dongare

                Created:
                Updated:
                Resolved:
                Archived: