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

Index building fails to start CFS.readOrdering when reading

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Urgent
    • Resolution: Fixed
    • Fix Version/s: 3.0.7, 3.6
    • Component/s: None
    • Labels:
      None
    • Severity:
      Critical

      Description

      This code for indexing partition when building index in 3.0 is:

      SinglePartitionReadCommand cmd = SinglePartitionReadCommand.fullPartitionRead(cfs.metadata, FBUtilities.nowInSeconds(), key);
      
      try (OpOrder.Group opGroup = cfs.keyspace.writeOrder.start();
            UnfilteredRowIterator partition = cmd.queryMemtableAndDisk(cfs, opGroup))
      {
          cfs.indexManager.indexPartition(partition, opGroup, indexes, cmd.nowInSec());
      }
      

      which is clearly incorrect as the OpOrder that queryMemtableAndDisk expects is the one from cfs.readOrdering, not the one for writes on the keyspace.
      This wasn't a problem prior to 3.0 as the similar code was using the pager, which ended up properly taking the read OpOrder internally but I messed this up in CASSANDRA-8099.

      Thanks to Stefania for pointing that out.

        Attachments

          Activity

            People

            • Assignee:
              slebresne Sylvain Lebresne
              Reporter:
              slebresne Sylvain Lebresne
              Authors:
              Sylvain Lebresne
              Reviewers:
              Stefania
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: