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]