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

Don't compute expensive MaxPurgeableTimestamp until we've verified there's an expired tombstone

    Details

    • Severity:
      Low

      Description

      In LCR's get reduced, we currently do this:

                      if (t.timestamp() < getMaxPurgeableTimestamp() && t.data.isGcAble(controller.gcBefore))
      

      Should call the expensive getMaxPurgeableTimestamp only after we have called the cheap isGcAble.

      Marking this as a bug since it can cause pathological performance problems (CASSANDRA-11831).

      Have verified that this is not a problem in 3.0 (CompactionIterator does the check in the correct order).

        Attachments

        1. 11834.txt
          0.8 kB
          Jonathan Ellis

          Activity

            People

            • Assignee:
              jbellis Jonathan Ellis
              Reporter:
              jbellis Jonathan Ellis
              Authors:
              Jonathan Ellis
              Reviewers:
              Marcus Eriksson
            • Votes:
              1 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: