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

Gc_grace should start at the creation of the column, not when it expires

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: In Progress
    • Normal
    • Resolution: Unresolved
    • 5.x
    • Legacy/Core
    • None

    Description

      Currently, gc_grace determines "the minimum time we keep a column that has been marked for deletion", where "marked for deletion" is creation time for a DeletedColumn or the expiration time for an ExpiringColumn.

      However, in the case of expiring columns, if you want to optimize deletions while making sure you don't resurrect overwritten data, you only care about keeping expired columns gc_grace seconds since their creation time, not since their expiration time. It would thus be better to have gc_grace be "the minimum time we keep a column since it's creation" (which would change nothing for tombstones, but for TTL would basically ensure we remove the expiration time from the time we keep the column once expired).

      To sum it up, this would have the following advantages:

      1. This will make fine tuning of gc_grace a little less of a black art.
      2. This will be more efficient for CF mixing deletes and expiring columns (we'll remove tombstones for the expiring one sooner).
      3. This means gc_grace will be more reliable for things like CASSANDRA-5314.

      Doing this is pretty simple. The one concern is backward compatilibity: it means people that have fine tuned gc_grace to a very low value because they knew it was ok due to their systematic use of ttls might have to update it back to a bigger, more reasonable value before updates.

      Attachments

        Issue Links

          Activity

            People

              slebresne Sylvain Lebresne
              slebresne Sylvain Lebresne
              Sylvain Lebresne
              Votes:
              0 Vote for this issue
              Watchers:
              15 Start watching this issue

              Dates

                Created:
                Updated: