On 08/01/2013 01:16 PM, Andrey Ilinykh wrote:

TTL is effectively DELETE; you need to run a repair once every gc_grace_seconds. If you don't, data might un-delete itself. 

How is it possible? Every replica has TTL, so it when it expires every replica has tombstone. I don't see how you can get data with no tombstone. What do I miss?


The only way I can think of is this scenario:

   - value "A" for some key is written with ttl=30days, to all replicas   (i.e a long ttl or no ttl at all)
   - value "B" for the same key is written with ttl=1day, but doesn't reach all replicas
   - one day passes and the ttl=1day values turn into deletes
   - gc_grace passes and the tombstones are purged

at this point, the replica that didn't get the ttl=1day value will think the older value "A" is live.

I'm no expert on this so I may be mistaken, but in any case it's a corner case as overwriting columns with shorter ttls would be unusual.


- Erik -