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

Sylvain Lebresne commented on CASSANDRA-10898:
----------------------------------------------

I agree that it would be a nice option to have in principle. In fact, while I 
agree that compaction is probably the one option for which this is the most 
useful, I would argue that this could be useful for any setting that 
intrinsically change something local. So sstable compression parameters and 
caching parameters could good candidates for this as it could allow to test 
settings in real situation for extended periods of time but for only one or a 
couple of nodes.

The one imo big gotcha of the strategy in this blog post however is that the 
changes to a node are not persistant so a restarted node will revert back to 
the default strategy and that's really not fun. This is totally called out by 
the post btw and it's not at all a criticism of that post (which I think is a 
great solution given the current status quo), but if we're gonna offer that 
natively, I don't think we can ship with that "limitation".

Not sure what's the best solution for that though but one idea would be to 
allow a list of "exceptions" to the table parameters, that is something like:
{noformat}
ALTER TABLE myTable with compaction = {'class' : 'SizeTieredCompaction', 
'exceptions' : { 1.1.1.1 : { 'class' : 'LeveledCompactionStrategy'} } };
{noformat}
I do note that this solution has currently the one downside that if you want to 
migrate nodes one by one, you'd have to re-sent the _whole_ {{ALTER TABLE}} 
statement with the new
exception added, which, if done manually, is a tad annoying and error prone. We 
could however add some syntax like:
{noformat}
ALTER TABLE myTable with compaction['exceptions'] = compaction['exceptions'] + 
{ 1.1.1.2 : { 'class' : 'LeveledCompactionStrategy'} };
{noformat}


> Migrate Compaction Strategy Node by Node
> ----------------------------------------
>
>                 Key: CASSANDRA-10898
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10898
>             Project: Cassandra
>          Issue Type: Wish
>          Components: Compaction, Tools
>            Reporter: Andrew From
>
> It would be a great feature to be able to slowly change the compaction 
> strategy of a ColumnFamily node-by-node instead of cluster wide. Currently if 
> you change it cluster wide there's no good way to predict how long it will 
> take. Thus the process could run for days while you still need the live data, 
> but the cluster responds much more slowly due to the compaction strategy 
> migration.
> I stumbled across 
> http://blog.alteroot.org/articles/2015-04-20/change-cassandra-compaction-strategy-on-production-cluster.html
>  which gave me the idea. I was thinking this would be a nice feature to add 
> to NodeTool, provided that the strategy in the blog is sound I wouldn't mind 
> going ahead with the dev work to automate it. If not I would love to hear 
> other ideas on how to best make this happen.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to