5 Replies Latest reply on Apr 22, 2010 7:54 AM by Thomas Heute

    NullMarkerNodeForRemoval issue

    Thomas Heute Master

      The NullMarkerNodeForRemoval object introduced to solve the following issue:

      https://jira.jboss.org/jira/browse/JBCACHE-1493

       

      is generating a NPE:

      java.lang.NullPointerException
           at org.jboss.cache.invocation.NodeInvocationDelegate.clearDataDirect(NodeInvocationDelegate.java:243)
           at org.jboss.cache.commands.write.ClearDataCommand.perform(ClearDataCommand.java:79)
           at org.jboss.cache.interceptors.CallInterceptor.invokeCommand(CallInterceptor.java:108)
           at org.jboss.cache.interceptors.CallInterceptor.handleAlterCacheMethod(CallInterceptor.java:173)
           at org.jboss.cache.interceptors.CallInterceptor.visitClearDataCommand(CallInterceptor.java:149)
           at org.jboss.cache.commands.write.ClearDataCommand.acceptVisitor(ClearDataCommand.java:86)
           at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
           at org.jboss.cache.interceptors.EvictionInterceptor.visitClearDataCommand(EvictionInterceptor.java:235)
           at org.jboss.cache.commands.write.ClearDataCommand.acceptVisitor(ClearDataCommand.java:86)
           at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
           at org.jboss.cache.interceptors.MVCCLockingInterceptor.handleClearDataCommand(MVCCLockingInterceptor.java:124)
           at org.jboss.cache.interceptors.base.PrePostProcessingCommandInterceptor.visitClearDataCommand(PrePostProcessingCommandInterceptor.java:167)
           at org.jboss.cache.commands.write.ClearDataCommand.acceptVisitor(ClearDataCommand.java:86)
           at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
           at org.jboss.cache.interceptors.ReplicationInterceptor.handleCrudMethod(ReplicationInterceptor.java:150)
           at org.jboss.cache.interceptors.ReplicationInterceptor.visitClearDataCommand(ReplicationInterceptor.java:137)
           at org.jboss.cache.commands.write.ClearDataCommand.acceptVisitor(ClearDataCommand.java:86)
           at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
           at org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:131)
           at org.jboss.cache.commands.AbstractVisitor.visitClearDataCommand(AbstractVisitor.java:80)
           at org.jboss.cache.commands.write.ClearDataCommand.acceptVisitor(ClearDataCommand.java:86)
           at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
           at org.jboss.cache.interceptors.TxInterceptor.replayModifications(TxInterceptor.java:501)
           at org.jboss.cache.interceptors.TxInterceptor.handleRemotePrepare(TxInterceptor.java:388)
           at org.jboss.cache.interceptors.TxInterceptor.visitPrepareCommand(TxInterceptor.java:134)
           at org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:68)
           at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
           at org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:131)
           at org.jboss.cache.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:140)
           at org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:68)
           at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
           at org.jboss.cache.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:178)
           at org.jboss.cache.interceptors.InvocationContextInterceptor.visitPrepareCommand(InvocationContextInterceptor.java:106)
           at org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:68)
           at org.jboss.cache.interceptors.InterceptorChain.invokeRemote(InterceptorChain.java:316)
           at org.jboss.cache.commands.remote.ReplicateCommand.processSingleCommand(ReplicateCommand.java:139)
           at org.jboss.cache.commands.remote.ReplicateCommand.perform(ReplicateCommand.java:115)
           at org.jboss.cache.marshall.CommandAwareRpcDispatcher.executeCommand(CommandAwareRpcDispatcher.java:319)
           at org.jboss.cache.marshall.CommandAwareRpcDispatcher.handle(CommandAwareRpcDispatcher.java:246)
           at org.jgroups.blocks.RequestCorrelator.handleRequest(RequestCorrelator.java:637)
           at org.jgroups.blocks.RequestCorrelator.receiveMessage(RequestCorrelator.java:545)
           at org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:368)
           at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:775)
           at org.jgroups.JChannel.up(JChannel.java:1336)
           at org.jgroups.mux.Multiplexer$Task.run(Multiplexer.java:1185)
           at org.jgroups.mux.Multiplexer$ExecuteTask.run(Multiplexer.java:1208)
           at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
           at java.lang.Thread.run(Thread.java:619)
      
      

      We found out about this while doing more extensive QA on GateIn:

      https://jira.jboss.org/jira/browse/GTNPORTAL-855

       

      The code returning the NPE is simply:

      public void clearDataDirect()
      {
         node.clear();
      }

       

      Looks like a bug, if you confirm I can create the Jira