On Fri, May 29, 2015 at 1:31 PM, Robert Wille <rwi...@fold3.com> wrote:
> > I was wondering how that compares to cells with expired TTLs. Does the > node get to skip sending data back to the coordinator for an expired TTL? No, it has to send expired cells. > > Suppose you wrote a cell with no TTL, and then updated it with a TTL. > Suppose that node 1 got both writes, but node 2 only got the first one. If > you asked for the cell after it expired, and node 1 did not send anything > to the coordinator, it seems to me that that could violate consistency > levels. Also, read repair could never fix node 2. So, how does that work? > That's precisely why they have to be sent to the coordinator. > > On a related note, do cells with expired TTLs have to wait > gc_grace_seconds before they can be compacted out? Yes. > It seems to me that if they could get compacted out immediately after > expiration, you could get zombie data, just like you can with tombstones. > For example, write a cell with no TTL to all replicas, shut down one > replica, update the cell with a TTL, compact after the TTL has expired, > then bring the other node back up. Voila, the formerly down node has a > value that will replicate to the other nodes. Correct, that's why they can't be purged immediately. -- Tyler Hobbs DataStax <http://datastax.com/>