Details
-
Improvement
-
Status: In Progress
-
Normal
-
Resolution: Unresolved
-
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:
- This will make fine tuning of gc_grace a little less of a black art.
- This will be more efficient for CF mixing deletes and expiring columns (we'll remove tombstones for the expiring one sooner).
- 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
- supercedes
-
CASSANDRA-6909 A way to expire columns without converting to tombstones
- Resolved