[ 
https://issues.apache.org/jira/browse/CASSANDRA-18617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17737637#comment-17737637
 ] 

Andres de la Peña commented on CASSANDRA-18617:
-----------------------------------------------

Placing all the system table names in a static constant would work, and we 
could have a utest verifying that that constants matches the actual schema. 
Although that would be quite a big constant, since there are 45 system tables 
to be manually put in it.

Maybe another way we could do this is keeping {{table_count_warn_threshold}} in 
{{Config.java}} but not in {{{}cassandra.yaml{}}}, and then do the calculations 
in {{{}GuardrailsOptions#getTablesWarnThreshold{}}}, instead of using a 
converter? That method is called every time the guardrail is called, when 
schema initialization has already happened. So something like:
{code:java}
@Override
public int getTablesWarnThreshold()
{
    if (config.tables_warn_threshold < 0 && config.table_count_warn_threshold > 
0)
    {
        int totalSystemTables = SchemaConstants.getSystemKeyspaces()
                                               .stream()
                                               .filter(keyspace -> 
!SchemaConstants.isVirtualSystemKeyspace(keyspace))
                                               .map(Keyspace::open)
                                               .mapToInt(keyspace -> 
keyspace.getColumnFamilyStores().size())
                                               .sum();
        return Math.min(-1, config.table_count_warn_threshold - 
totalSystemTables);
    }
    return config.tables_warn_threshold;
}
{code}
wdyt?

> Disable the deprecated keyspace/table thresholds and convert them to 
> Guardrails
> -------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-18617
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-18617
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Feature/Guardrails
>            Reporter: dan jatnieks
>            Assignee: dan jatnieks
>            Priority: Normal
>             Fix For: 5.x
>
>
> The non-guardrail thresholds 'keyspace_count_warn_threshold' and 
> 'table_count_warn_threshold' configuration settings were first added with 
> CASSANDRA-16309 in 4.0-beta4 and have subsequently been deprecated since 
> 4.1-alpha in CASSANDRA-17195 when they were replaced/migrated to guardrails 
> as part of CEP-3 (Guardrails).
> These thresholds should now be removed from cassandra.yaml, while still 
> allowed in existing yaml files.
> The old thresholds will be disabled by removing their default values from 
> Config.java, and any existing values for these thresholds will be converted 
> to the new guardrails using the '@Replaces' tag on the corresponding 
> guardrail values.
> Since the old thresholds considered the number of system keyspace/tables in 
> their values, the '@Replaces' conversion will subtract the current number of 
> system tables from the old value and log a descriptive message.
> See dev list discussion: 
> https://lists.apache.org/thread/0zjg08hrd6xv7lhvo96frz456b2rvr8b



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