[ https://issues.apache.org/jira/browse/CASSANDRA-18042?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17637373#comment-17637373 ]
Andres de la Peña commented on CASSANDRA-18042: ----------------------------------------------- I was thinking on {{_warned}} instead of {{{}_warn{}}}, so it's more similar to the existing {{{}_enabled{}}}: {code:java} zero_default_ttl_on_twcs_warned: true zero_default_ttl_on_twcs_enabled: true {code} Or it could also be: {code:java} zero_default_ttl_on_twcs_discouraged: true zero_default_ttl_on_twcs_enabled: true {code} It's a bit odd however that the two boolean properties have different behaviours, where {{_enabled}} triggers the guardrails when it's {{{}false{}}}, whereas and {{_warned}} triggers it when it's {{{}true{}}}. That would be solved by: {code:java} zero_default_ttl_on_twcs_fail: false zero_default_ttl_on_twcs_warn: true {code} However, we already have multiple guardrails using {{_enabled}} in 4.1, and we have to preserve them. So using {{_fail}} for this guardrail would mean that {{EnableFlag}} sometimes would receive {{_enabled}} properties, and sometimes would receive {{_fail}} properties. That's not ideal and it might be problematic if at some point we want to automatically generate property names from guardrail names. Maybe [~jmckenzie], who has added a bunch of enable flags, has an opinion on this. As for how we manage the true/false properties, we could easily reverse the predicates that we pass to the constructor. > Implement a guardrail for not having 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 > Assignee: Stefan Miklosovic > Priority: Normal > Fix For: 4.x > > Time Spent: 40m > Remaining Estimate: 0h > > 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 -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org