cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sylvain Lebresne <>
Subject Re: repair, compaction, and tombstone rows
Date Sun, 04 Nov 2012 10:31:22 GMT
On Sat, Nov 3, 2012 at 10:23 PM, horschi <> wrote:
> Do you mind if I ask where you stand on making...
> - ... ExpiringColumn not create any tombstones? Imo this could be safely
> done if the columns TTL is >= gcgrace.

Yes, if the TTL >= gcgrace this would be safe and I'm pretty sure we
use to have a ticket for that (can't find it back with a quick search
but JIRA search suck and I didn't bother long). But basically we
decided to not do it for now for 2 reasons:
1) it's not trivial from the code point of view. Long story short,
expired columns are converted to tombstone at deserialization time,
and not generating the tombstone would means deserialization sometime
skipping a column. Turns out there is a bunch of fairly sensible code
to update to make that work.
2) in the main cases where this would be really useful, i.e. if all
the columns of your column family are ttled and with a ttl >= gcgrace,
you can just set gcgrace = 0 and achieve a fairly similar effect.

In other words, based on both of those argument, we've decided to see
that later and focus on other things. I'm certainly not closed in
revisiting this, especially since some code change in 1.2 make my
point 1) a little bit less of an issue. But I'd lie if I said this was
on my priority list (and for the record, I think that if
CASSANDRA-4905 is solved, then this won't be much of a problem as far
as repair is concerned).

> - ... ExpiringColumn not add local timestamp to digest?

As I said in a previous thread, I don't see what the problem is here.
The timestamp is not local to the node, it is assigned once and for
all by the coordinator at insert time. I can agree that it's not
really useful per se to the digest, but I don't think it matters in
any case.


View raw message