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

slice offset breaks read repair

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Normal
    • Resolution: Fixed
    • 0.4
    • None
    • None
    • Normal

    Description

      [code]
      int liveColumns = 0;
      int limit = offset + count;

      for (IColumn column : reducedColumns)

      { if (liveColumns >= limit) break; if (!finish.isEmpty() && ((isAscending && column.name().compareTo(finish) > 0)) || (!isAscending && column.name().compareTo(finish) < 0)) break; if (!column.isMarkedForDelete()) liveColumns++; if (liveColumns > offset) returnCF.addColumn(column); }

      [code]

      The problem is that for offset to return the correct "live" columns, it has to ignore tombstones it scans before the first live one post-offset.

      This means that instead of being corrected within a few ms of a read, a node can continue returning deleted data indefinitely (until the next anti-entropy pass).

      Coupled with offset's inherent inefficiency (see CASSANDRA-261) I think this means we should take it out and leave offset to be computed client-side (which, for datasets under which it was reasonable server-side, will still be reasonable).

      Attachments

        Activity

          People

            jbellis Jonathan Ellis
            jbellis Jonathan Ellis
            Jonathan Ellis
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: