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

Implement a guardrail for not having zero default ttl on tables with TWCS

    XMLWordPrintableJSON

Details

    Description

      A user was surprised that his data have not started to expire after 90 days on his TWCS, he noticed that default_time_to_live on the table was set to 0 (by accident from his side) and inserts were using TTL = 0 too.

      It is questionable why it it possible to create a table with TWCS and enable a user to specify default_time_to_live to be zero.

      On the other hand, I would argue that having default_time_to_live set to 0 on TWCS does not necessarily mean that such combination is illegal. It is about people just using that with advantage very often so tables are compacted away nicely. However, that does not have to mean that they could not use it with 0. But I yet have to see a use-case where TWCS was used and default ttl was set to 0 on purpose. Merely looking into Cassandra codebase, there are only cases when this parameter is not 0.

      There are three approaches:

      1) just reject such statements (for CreateTable and AlterTable statements) where default_time_to_live = 0
      2) Implement a guardrail for 1) so it can be enabled / disabled on demand
      3) Leave possibility to set default_time_to_live to 0 on a table but make a guardrail for UpdateStatement so it might reject queries for tables with default_time_to_live is zero and for which its TTL (on that update statement) is set to 0 too.

      I would be careful about making the current configuration illegal because of backward compatibility. For that reason 2) makes the most sense to me.

      Maybe implementing 3) would make sense as well. There might be a table which has default ttl set to 0 as it expects a user to supply TTL every time. However, as it is not currently enforced anywhere, a client might still insert TTLs to be set to 0 even by accident.

      POC for 2) is here https://github.com/instaclustr/cassandra/commit/0b4dcc3d3deeffa393c02a3b80e27482007f9579

      Attachments

        Activity

          People

            smiklosovic Stefan Miklosovic
            smiklosovic Stefan Miklosovic
            Stefan Miklosovic
            Andres de la Peña, Brad Schoening, Brandon Williams, Josh McKenzie
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 3h 20m
                3h 20m