Stefan Miklosovic created CASSANDRA-18042:
---------------------------------------------

             Summary: Disable zero default ttl on tables with TWCS
                 Key: CASSANDRA-18042
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-18042
             Project: Cassandra
          Issue Type: Improvement
          Components: Feature/Guardrails, Legacy/Core
            Reporter: Stefan Miklosovic


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 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 two 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.

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



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to