On Wed, Oct 4, 2017 at 12:23 PM, Jon Haddad <j...@jonhaddad.com> wrote:

> The default part I was referring to incremental repair.
>
> SASI still has a pretty fatal issue where nodes OOM:
> https://issues.apache.org/jira/browse/CASSANDRA-12662 <
> https://issues.apache.org/jira/browse/CASSANDRA-12662>
>

If you read the comments in the issue originator of the problem states
that "Cassandra fairly quickly crashes with OOM, a glance over hprof shows
4Gb of PartitionUpdates." which to me doesn't seem like it's a SASI issue
but more of the issue of underlaying storage which SASI uses.



>
>
> > On Oct 4, 2017, at 12:21 PM, Pavel Yaskevich <pove...@gmail.com> wrote:
> >
> > On Wed, Oct 4, 2017 at 12:09 PM, Jon Haddad <j...@jonhaddad.com <mailto:
> j...@jonhaddad.com>> wrote:
> >
> >> MVs work fine for *some use cases*, not the general use case.  That’s
> why
> >> there should be a flag.  To opt into the feature when the behavior is
> only
> >> known to be correct under a certain set of circumstances.  Nobody is
> saying
> >> the flag should be “enable_terrible_feature_
> nobody_tested_and_we_all_hate”,
> >> or something ridiculous like that.  It’s not an attack against the work
> >> done by anyone, the level of effort put in, or minimizing the
> complexity of
> >> the problem.  “enable_materialized_views” would be just fine.
> >>
> >> We should be honest to people about what they’re getting into.  You may
> >> not be aware of this, but a lot of people still believe Cassandra isn’t
> a
> >> DB that you should put in prod.  It’s because features like SASI, MVs,
> or
> >> incremental repair get merged in prematurely (or even made the default),
> >> without having been thoroughly tested, understood and vetted by trusted
> >> community members.  New users hit the snags because they deploy the
> >> bleeding edge code and hit the bugs.
> >>
> >
> > I beg to differ in case of SASI, it has been tested and vetted and ported
> > to different versions. I'm pretty sure it still has better test coverage
> > then most of the project does, it's not a "default" and you actually have
> > to opt-in to it by creating a custom index, how is that premature or
> > misleading to users?
> >
> >
> >>
> >> That’s not how the process should work.
> >>
> >> Ideally, we’d follow a process that looks a lot more like this:
> >>
> >> 1. New feature is built with an opt in flag.  Unknowns are documented,
> the
> >> risk of using the feature is known to the end user.
> >> 2. People test and use the feature that know what they’re doing.  They
> are
> >> able to read the code, submit patches, and help flush out the issues.
> They
> >> do so in low risk environments.  In the case of MVs, they can afford to
> >> drop and rebuild the view over a week, or rebuild the cluster
> altogether.
> >> We may not even need to worry as much about backwards compatibility.
> >> 3. The feature matures.  More tests are written.  More people become
> aware
> >> of how to contribute to the feature’s stability.
> >> 4. After a while, we vote on removing the feature flag and declare it
> >> stable for general usage.
> >>
> >> If nobody actually cares about a feature (why it was it written in the
> >> first place?), then it would never get to 2, 3, 4.  It would take a
> while
> >> for big features like MVs to be marked stable, and that’s fine, because
> it
> >> takes a long time to actually stabilize them.  I think we can all agree
> >> they are really, really hard problems to solve, and maybe it takes a
> while.
> >>
> >> Jon
> >>
> >>
> >>
> >>> On Oct 4, 2017, at 11:44 AM, Josh McKenzie <jmcken...@apache.org>
> wrote:
> >>>
> >>>>
> >>>> So you’d rather continue to lie to users about the stability of the
> >>>> feature rather than admitting it was merged in prematurely?
> >>>
> >>>
> >>> Much like w/SASI, this is something that's in the code-base that for
> >>>> certain use-cases apparently works just fine.
> >>>
> >>> I don't know of any outstanding issues with the feature,
> >>>
> >>> There appear to be varying levels of understanding of the
> implementation
> >>>> details of MV's (that seem to directly correlate with faith in the
> >>>> feature's correctness for the use-cases recommended)
> >>>
> >>> We have users in the wild relying on MV's with apparent success (same
> >> holds
> >>>> true of all the other punching bags that have come up in this thread)
> >>>
> >>> You're right, Jon. That's clearly exactly what I'm saying.
> >>>
> >>>
> >>> On Wed, Oct 4, 2017 at 2:39 PM, Jon Haddad <j...@jonhaddad.com> wrote:
> >>>
> >>>> So you’d rather continue to lie to users about the stability of the
> >>>> feature rather than admitting it was merged in prematurely?  I’d
> rather
> >>>> come clean and avoid future problems, and give people the opportunity
> to
> >>>> stop using MVs rather than let them keep taking risks they’re unaware
> >> of.
> >>>> This is incredibly irresponsible in my opinion.
> >>>>
> >>>>> On Oct 4, 2017, at 11:26 AM, Josh McKenzie <jmcken...@apache.org>
> >> wrote:
> >>>>>
> >>>>>>
> >>>>>> Oh, come on. You're being disingenuous.
> >>>>>
> >>>>> Not my intent. MV's (and SASI, for example) are fairly well isolated;
> >> we
> >>>>> have a history of other changes that are much more broadly and higher
> >>>>> impact risk-wise across the code-base.
> >>>>>
> >>>>> If I were an operator and built a critical part of my business on a
> >>>>> released feature that developers then decided to default-disable as
> >>>>> 'experimental' post-hoc, I'd think long and hard about using any new
> >>>>> features in that project in the future (and revisit my confidence in
> >> all
> >>>>> other features I relied on, and the software as a whole). We have
> users
> >>>> in
> >>>>> the wild relying on MV's with apparent success (same holds true of
> all
> >>>> the
> >>>>> other punching bags that have come up in this thread) and I'd hate to
> >> see
> >>>>> us alienate them by being over-aggressive in the way we handle this.
> >>>>>
> >>>>> I'd much rather we continue to aggressively improve and continue to
> >>>> analyze
> >>>>> MV's stability before a 4.0 release and then use the experimental
> flag
> >> in
> >>>>> the future, if at all possible.
> >>>>>
> >>>>> On Wed, Oct 4, 2017 at 2:01 PM, Benedict Elliott Smith <_@
> >>>> belliottsmith.com>
> >>>>> wrote:
> >>>>>
> >>>>>> 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
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> 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 <mailto:
> dev-unsubscr...@cassandra.apache.org>
> >> For additional commands, e-mail: dev-h...@cassandra.apache.org <mailto:
> dev-h...@cassandra.apache.org>
>

Reply via email to