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

Stefan Miklosovic edited comment on CASSANDRA-12937 at 4/4/24 4:13 PM:
-----------------------------------------------------------------------

I want to write this down explicitly ... It is not possible to alter system 
schema already, on CQL level. So preventing a user to change a compressor for 
system tables, even replicated ones, to some which is not the default is not 
possible already. What we want to prevent is to not be even able configure it 
via cassandra.yaml to something else. These are two different problems.

I write this because as I go through the patch and polishing it, it broke a 
test which is changing compressors for each distributed table - and system_auth 
is distributed, but it is system one. So changing the compressor on that failed 
because we are preventing that on code level while constructing TableMetadata, 
not just when we execute a respective CQL command. 

This might be a little bit surprising to see at first but I think it makes 
sense. We just prevent that from happening one "level" deeper, not only CQL but 
it is not possible to configure it programmatically too.

However, just thinking out loud, what if we would start to have a system tables 
with different compressors? For now it is just same for every table. Right now, 
for system tables, we check if set compressor is equal to the default one. If 
we have "more defaults", then we would need to take care of this so default 
compressor(s) would not be a set. However, that means that we might probably 
change compressor for system tables as long as it is found among the default 
ones. We would need to probably keep track of what is the default compressor 
for a specific system table and error out if it is different. 

I do not think this is on the table for now, just thinking out aloud about all 
the possible consequences in the future.


was (Author: smiklosovic):
I want to write this down explicitly ... It is not possible to alter system 
schema already, on CQL level. So preventing a user to change a compressor for 
system tables, even replicated ones, to some which is not the default is not 
possible already. What we want to prevent is to not be even able configure it 
via cassandra.yaml to something else. These are two different problems.

I write this because as I go through the patch and polishing it, it broke a 
test which is changing compressors for each distributed table - and system_auth 
is distributed, but it is system one. So changing the compressor on that failed 
because we are preventing that on code level while constructing TableMetadata, 
not just when we execute a respective CQL command. 

This might be a little bit surprising to see at first but I think it makes 
sense. We just prevent that from happening one "level" deeper, not only CQL but 
it is not possible to configure it programmatically too.

> Default setting (yaml) for SSTable compression
> ----------------------------------------------
>
>                 Key: CASSANDRA-12937
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-12937
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Local/Config
>            Reporter: Michael Semb Wever
>            Assignee: Stefan Miklosovic
>            Priority: Low
>              Labels: AdventCalendar2021
>             Fix For: 5.x
>
>          Time Spent: 8h
>  Remaining Estimate: 0h
>
> In many situations the choice of compression for sstables is more relevant to 
> the disks attached than to the schema and data.
> This issue is to add to cassandra.yaml a default value for sstable 
> compression that new tables will inherit (instead of the defaults found in 
> {{CompressionParams.DEFAULT}}.
> Examples where this can be relevant are filesystems that do on-the-fly 
> compression (btrfs, zfs) or specific disk configurations or even specific C* 
> versions (see CASSANDRA-10995 ).
> +Additional information for newcomers+
> Some new fields need to be added to {{cassandra.yaml}} to allow specifying 
> the field required for defining the default compression parameters. In 
> {{DatabaseDescriptor}} a new {{CompressionParams}} field should be added for 
> the default compression. This field should be initialized in 
> {{DatabaseDescriptor.applySimpleConfig()}}. At the different places where 
> {{CompressionParams.DEFAULT}} was used the code should call 
> {{DatabaseDescriptor#getDefaultCompressionParams}} that should return some 
> copy of configured {{CompressionParams}}.
> Some unit test using {{OverrideConfigurationLoader}} should be used to test 
> that the table schema use the new default when a new table is created (see 
> CreateTest for some example).



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

Reply via email to