Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-15946

NPE when sending REQUEST_RSP from 3.0 to 4.0 in in-jvm dtests

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Normal
    • Resolution: Fixed
    • Fix Version/s: 4.0-beta2
    • Component/s: Test/dtest/java
    • Labels:
      None

      Description

      There is a communication problem when testing upgrades using in-JVM dtest between Cassandra 3 and 4.

      In a method registerInboundFilter of Instance, we get a message which was just received and we prepare it for filtering as part of which, we serialize the payload again. This is fine when dealing with incoming Cassandra 4 message, because we can serialize it. However when we get the Cassandra 3 message, which uses a different protocol, and we get something like REQUEST_RSP, we can surely deserialize it through some special deserialization path, but we cannot serialize the payload for it as there is no serializer defined for REQUEST_RSP - no wonder, why would Cassandra 4.0 need to be able to serialize Cassandra 3.0 payloads?

      java.lang.NullPointerException: null
      	at org.apache.cassandra.net.Message$Serializer.serializePost40(Message.java:760)
      	at org.apache.cassandra.net.Message$Serializer.serialize(Message.java:618)
      	at org.apache.cassandra.distributed.impl.Instance.serializeMessage(Instance.java:267)
      	at org.apache.cassandra.distributed.impl.Instance.lambda$registerInboundFilter$4(Instance.java:234)
      	at org.apache.cassandra.net.InboundSink$Filtered.accept(InboundSink.java:62)
      	at org.apache.cassandra.net.InboundSink$Filtered.accept(InboundSink.java:49)
      	at org.apache.cassandra.net.InboundSink.accept(InboundSink.java:93)
      	at org.apache.cassandra.distributed.impl.Instance.lambda$null$6(Instance.java:305)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      	at org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$FutureTask.run(AbstractLocalAwareExecutorService.java:165)
      	at org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$LocalSessionFutureTask.run(AbstractLocalAwareExecutorService.java:137)
      	at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:119)
      	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
      	at java.lang.Thread.run(Thread.java:748)
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                jlewandowski Jacek Lewandowski
                Reporter:
                jlewandowski Jacek Lewandowski
                Authors:
                Jacek Lewandowski
                Reviewers:
                Alex Petrov, Jordan West
              • Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: