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

NullPointerException when executing RemoveExpiredCommand

    XMLWordPrintable

Details

    Description

      I'm running Infinispan 8.0.2 in a clustered environment with a replicated cache with a single file cache store. I'm seeing some NullPointerExceptions when Infinispan executes the RemoveExpiredCommand. Here's a snippet from the stack trace:

      ISPN000136: Error executing command RemoveExpiredCommand, writing keys [...large key here...]
      ...
      Caused by: java.lang.NullPointerException: null
      	at org.infinispan.commands.write.RemoveExpiredCommand.setParameters(RemoveExpiredCommand.java:142)
      

      Here's RemoveExpiredCommand#setParameters(...):

         @Override
         public void setParameters(int commandId, Object[] args) {
            if (commandId != COMMAND_ID) throw new IllegalStateException("Invalid method id");
            int i = 0;
            commandInvocationId = (CommandInvocationId) args[i++];
            key = args[i++];
            value = args[i++];
            lifespan = (long) args[i++];
         }

      Line 142 is the cast of assignment of args[3] to primitive type long, which is causing the NPE. lifespan is actually a Long, not a long, and the perform() method seems to anticipate null lifespans at line 72:

               // If the provided lifespan is null, that means it is a store removal command, so we can't compare lifespan
               if (lifespan == null) {}

      Could this be fixed by simply changing the cast at line 142 from (long) to (Long)?

      Attachments

        Issue Links

          Activity

            People

              wburns@redhat.com Will Burns
              jekh_jira Jason Hoetger (Inactive)
              Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: