Can't we promote these behavioural flags to keyspace properties (with suitable 
permissions to edit necessary)?

I agree that enabling/disabling features shouldn't require a rolling restart, 
and nor should switching their consistency safety level.

I think this would be the most suitable equivalent to ALLOW FILTERING for MVs.



> On 4 Oct 2017, at 12:31, Jeremy Hanna <jeremy.hanna1...@gmail.com> wrote:
> 
> Not to detract from the discussion about whether or not to classify X or Y as 
> experimental but https://issues.apache.org/jira/browse/CASSANDRA-8303 
> <https://issues.apache.org/jira/browse/CASSANDRA-8303> was originally about 
> operators preventing users from abusing features (e.g. allow filtering).  
> Could that concept be extended to features like MVs or SASI or anything else? 
>  On the one hand it is nice to be able to set those things dynamically 
> without a rolling restart as well as by user.  On the other it’s less clear 
> about defaults.  There could be a property file or just in the yaml, the 
> operator could specify the default features that are enabled for users and 
> then it could be overridden within that framework.
> 
>> On Oct 4, 2017, at 10:24 AM, Aleksey Yeshchenko <alek...@apple.com> wrote:
>> 
>> We already have those for UDFs and CDC.
>> 
>> We should have more: for triggers, SASI, and MVs, at least. Operators need a 
>> way to disable features they haven’t validated.
>> 
>> We already have sufficient consensus to introduce the flags, and we should. 
>> There also seems to be sufficient consensus on emitting warnings.
>> 
>> The debate is now on their defaults for MVs in 3.0, 3.11, and 4.0. I agree 
>> with Sylvain that flipping the default in a minor would be invasive. We 
>> shouldn’t do that.
>> 
>> For trunk, though, I think we should default to off. When it comes to 
>> releasing 4.0 we can collectively decide if there is sufficient trust in MVs 
>> at the time to warrant flipping the default to true. Ultimately we can 
>> decide this in a PMC vote. If I misread the consensus regarding the default 
>> for 4.0, then we might as well vote on that. What I see is sufficient 
>> distrust coming from core committers, including the author of the v1 design, 
>> to warrant opt-in for MVs.
>> 
>> If we don’t trust in them as developers, we shouldn’t be cavalier with the 
>> users, either. Not until that trust is gained/regained.
>> 
>> —
>> AY
>> 
>> On 4 October 2017 at 13:26:10, Stefan Podkowinski (s...@apache.org) wrote:
>> 
>> Introducing feature flags for enabling or disabling different code paths  
>> is not sustainable in the long run. It's hard enough to keep up with  
>> integration testing with the couple of Jenkins jobs that we have.  
>> Running jobs for all permutations of flags that we keep around, would  
>> turn out impractical. But if we don't, I'm pretty sure something will  
>> fall off the radar and it won't take long until someone reports that  
>> enabling feature X after the latest upgrade will simply not work anymore.  
>> 
>> There may also be some more subtle assumptions and cross dependencies  
>> between features that may cause side effects by disabling a feature (or  
>> parts of it), even if it's just e.g. a metric value that suddenly won't  
>> get updated anymore, but is used somewhere else. We'll also have to  
>> consider migration paths for turning a feature on and off again without  
>> causing any downtime. If I was to turn on e.g. MVs on a single node in  
>> my cluster, then this should not cause any issues on the other nodes  
>> that still have MV code paths disabled. Again, this would need to be tested. 
>>  
>> 
>> So to be clear, my point is that any flags should be implemented in a  
>> really non-invasive way on the user facing side only, e.g. by emitting a  
>> log message or cqlsh error. At this point, I'm not really sure if it  
>> would be a good idea to add them to cassandra.yaml, as I'm pretty sure  
>> that eventually they will be used to change the behaviour of our code,  
>> beside printing a log message.  
>> 
>> 
>> On 04.10.17 10:03, Mick Semb Wever wrote:  
>>>>> CDC sounds like it is in the same basket, but it already has the  
>>>>> `cdc_enabled` yaml flag which defaults false.  
>>>> I went this route because I was incredibly wary of changing the CL  
>>>> code and wanted to shield non-CDC users from any and all risk I  
>>>> reasonably could.  
>>> 
>>> This approach so far is my favourite. (Thanks Josh.)  
>>> 
>>> The flag name `cdc_enabled` is simple and, without adjectives, does not  
>>> imply "experimental" or "beta" or anything like that.  
>>> It does make life easier for both operators and the C* developers.  
>>> 
>>> I'm also fond of how Apache projects often vote both on the release as well 
>>>  
>>> as its stability flag: Alpha|Beta|GA (General Availability).  
>>> https://httpd.apache.org/dev/release.html  
>>> http://www.apache.org/legal/release-policy.html#release-types  
>>> 
>>> Given the importance of The Database, i'd be keen to see attached such  
>>> community-agreed quality references. And going further, not just to the  
>>> releases but also to substantial new features (those yet to reach GA). Then 
>>>  
>>> the downloads page could provide a table something like  
>>> https://paste.apache.org/FzrQ  
>>> 
>>> It's just one idea to throw out there, and while it hijacks the thread a  
>>> bit, it could even with just the quality tag on releases go a long way with 
>>>  
>>> user trust. Especially if we really are humble about it and use GA  
>>> appropriately. For example I'm perfectly happy using a beta in production  
>>> if I see the community otherwise has good processes in place and there's  
>>> strong testing and staging resources to take advantage of. And as Kurt has  
>>> implied many users are indeed smart and wise enough to know how to safely  
>>> test and cautiously use even alpha features in production.  
>>> 
>>> Anyway, with or without the above idea, yaml flag names that don't  
>>> use adjectives could address Kurt's concerns about pulling the rug from  
>>> under the feet of existing users. Such a flag is but a small improvement  
>>> suitable for a minor release (you must read the NEWS.txt before even a  
>>> patch upgrade), and the documentation is only making explicit what should  
>>> have been all along. Users shouldn't feel that we're returning features  
>>> into "alpha|beta" mode when what we're actually doing is improving the  
>>> community's quality assurance documentation.  
>>> 
>>> Mick  
>>> 
>> 
>> 
>> ---------------------------------------------------------------------  
>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org  
>> For additional commands, e-mail: dev-h...@cassandra.apache.org  
>> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
For additional commands, e-mail: dev-h...@cassandra.apache.org

Reply via email to