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

Performing a "Select count(*)" when replication factor < node count causes assertion error and timeout

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Normal
    • Resolution: Fixed
    • 2.0.1
    • Legacy/CQL
    • None
    • Two node setup
      Ubuntu Server 12.04
      Tested on JDK 1.6 and 1.7

    • Normal

    Description

      When performing a "Select Count()" query on a table belonging to a keyspace with a replication factor less than the total node count, the following error is encountered which ultimately results in an rpc_timeout for the request:

      ERROR 18:47:54,660 Exception in thread Thread[Thread-5,5,main]
      java.lang.AssertionError
      at org.apache.cassandra.db.filter.IDiskAtomFilter$Serializer.deserialize(IDiskAtomFilter.java:116)
      at org.apache.cassandra.db.RangeSliceCommandSerializer.deserialize(RangeSliceCommand.java:247)
      at org.apache.cassandra.db.RangeSliceCommandSerializer.deserialize(RangeSliceCommand.java:156)
      at org.apache.cassandra.net.MessageIn.read(MessageIn.java:99)
      at org.apache.cassandra.net.IncomingTcpConnection.receiveMessage(IncomingTcpConnection.java:148)
      at org.apache.cassandra.net.IncomingTcpConnection.handleModernVersion(IncomingTcpConnection.java:125)
      at org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:73)

      The issue is not encountered when the replication factor is >= node count

      To replicate the issue:
      1) Create the keyspace: CREATE KEYSPACE demodb WITH REPLICATION =

      {'class' : 'SimpleStrategy', 'replication_factor': 1}

      ;

      2) Create the table CREATE TABLE users (
      user_name varchar,
      password varchar,
      gender varchar,
      session_token varchar,
      state varchar,
      birth_year bigint,
      PRIMARY KEY (user_name));

      3) Do a CQL query: "SELECT count( * ) FROM demodb.users" ;

      The issue is reproducible even if the table is empty. Both CQLSH and client (astyanax) api calls are affected. Tested on two different clusters (2-node and 8-node)

      Attachments

        1. 6004.txt
          2 kB
          Sylvain Lebresne

        Activity

          People

            slebresne Sylvain Lebresne
            james0915 James P
            Sylvain Lebresne
            Jonathan Ellis
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: