Hi Federico,

Thank you for the suggestions. I've added them to the KIP.

--Proven

On Wed, Jan 10, 2024 at 4:16 AM Federico Valeri <fedeval...@gmail.com>
wrote:

> Hi folks,
>
> > If you use an unstable MV, you probably won't be able to upgrade your
> software. Because whenever something changes, you'll probably get
> serialization exceptions being thrown inside the controller. Fatal ones.
>
> Thanks for this clarification. I think this concrete risk should be
> highlighted in the KIP and in the "unstable.metadata.versions.enable"
> documentation.
>
> In the test plan, should we also have one system test checking that
> "features with a stable MV will never have that MV changed"?
>
> On Wed, Jan 10, 2024 at 8:16 AM Colin McCabe <cmcc...@apache.org> wrote:
> >
> > On Tue, Jan 9, 2024, at 18:56, Proven Provenzano wrote:
> > > Hi folks,
> > >
> > > Thank you for the questions.
> > >
> > > Let me clarify about reorder first. The reorder of unstable metadata
> > > versions should be infrequent.
> >
> > Why does it need to be infrequent? We should be able to reorder unstable
> metadata versions as often as we like. There are no guarantees about
> unstable MVs.
> >
> > > The time you reorder is when a feature that
> > > requires a higher metadata version to enable becomes "production
> ready" and
> > > the features with unstable metadata versions less than the new stable
> one
> > > are moved to metadata versions greater than the new stable feature.
> When we
> > > reorder, we are always allocating a new MV and we are never reusing an
> > > existing MV even if it was also unstable. This way a developer
> upgrading
> > > their environment with a specific unstable MV might see existing
> > > functionality stop working but they won't see new MV dependent
> > > functionality magically appear. The feature set for a given unstable MV
> > > version can only decrease with reordering.
> >
> > If you use an unstable MV, you probably won't be able to upgrade your
> software. Because whenever something changes, you'll probably get
> serialization exceptions being thrown inside the controller. Fatal ones.
> >
> > Given that this is true, there's no reason to have special rules about
> what we can and can't do with unstable MVs. We can do anything.
> >
> > >
> > > How do we define "production ready" and when should we bump
> > > LATEST_PRODUCTION? I would like to define it to be the point where the
> > > feature is code complete with tests and the KIP for it is approved.
> However
> > > even with this definition if the feature later develops a major issue
> it
> > > could still block future features until the issue is fixed which is
> what we
> > > are trying to avoid here. We could be much more formal about this and
> let
> > > the release manager for a release define what is stable for a given
> release
> > > and then do the bump just after the branch is created on the branch.
> When
> > > an RC candidate is accepted, the bump would be backported. I would
> like to
> > > hear other ideas here.
> > >
> >
> > Yeah, it's an interesting question. Overall, I think developers should
> define when a feature is production ready.
> >
> > The question to ask is, "are you ready to take this feature to
> production in your workplace?" I think most developers do have a sense of
> this. Obviously bugs and mistakes can happen, but I think this standard
> would avoid most of the issues that we're trying to avoid by having
> unstable MVs in the first place.
> >
> > ELR is a good example. Nobody would have said that it was production
> ready in 3.7 ... hence it belonged (and still belongs) in an unstable MV,
> until that changes (hopefully soon :) )
> >
> > best,
> > Colin
> >
> > > --Proven
> > >
> > > On Tue, Jan 9, 2024 at 3:26 PM Colin McCabe <cmcc...@apache.org>
> wrote:
> > >
> > >> Hi Justine,
> > >>
> > >> Yes, this is an important point to clarify. Proven can comment more,
> but
> > >> my understanding is that we can do anything to unstable metadata
> versions.
> > >> Reorder them, delete them, change them in any other way. There are no
> > >> stability guarantees. If the current text is unclear let's add more
> > >> examples of what we can do (which is anything) :)
> > >>
> > >> best,
> > >> Colin
> > >>
> > >>
> > >> On Mon, Jan 8, 2024, at 14:18, Justine Olshan wrote:
> > >> > Hey Colin,
> > >> >
> > >> > I had some offline discussions with Proven previously and it seems
> like
> > >> he
> > >> > said something different so I'm glad I brought it up here.
> > >> >
> > >> > Let's clarify if we are ok with reordering unstable metadata
> versions :)
> > >> >
> > >> > Justine
> > >> >
> > >> > On Mon, Jan 8, 2024 at 1:56 PM Colin McCabe <cmcc...@apache.org>
> wrote:
> > >> >
> > >> >> On Mon, Jan 8, 2024, at 13:19, Justine Olshan wrote:
> > >> >> > Hey all,
> > >> >> >
> > >> >> > I was wondering how often we plan to update LATEST_PRODUCTION
> metadata
> > >> >> > version. Is this something we should do as soon as the feature is
> > >> >> complete
> > >> >> > or something we do when we are releasing kafka. When is the time
> we
> > >> >> abandon
> > >> >> > a MV so that other features can be unblocked?
> > >> >>
> > >> >> Hi Justine,
> > >> >>
> > >> >> Thanks for reviewing.
> > >> >>
> > >> >> The idea is that you should bump LATEST_PRODUCTION when you want to
> > >> take a
> > >> >> feature to production. That could mean deploying it internally
> > >> somewhere to
> > >> >> production, or doing an Apache release that lets everyone deploy
> the
> > >> thing
> > >> >> to production.
> > >> >>
> > >> >> Not in production? No need to care about this. Make any changes you
> > >> like.
> > >> >>
> > >> >> As a corollary, we should keep the LATEST_PRODUCTION version as
> low as
> > >> it
> > >> >> can be. If you haven't tested the feature, don't freeze it in
> stone yet.
> > >> >>
> > >> >> >
> > >> >> > I am just considering a feature that may end up missing a
> release. It
> > >> >> seems
> > >> >> > like maybe that MV would block future metadata versions until we
> > >> decide
> > >> >> the
> > >> >> > feature won't make the cut. From that point, all "ready" features
> > >> should
> > >> >> be
> > >> >> > able to be released.
> > >> >>
> > >> >> The intention is the opposite. A feature in an unstable metadata
> version
> > >> >> doesn't block anything. You can always move a feature from one
> unstable
> > >> >> metadata version to another if the feature starts taking too long
> to
> > >> finish.
> > >> >>
> > >> >> > I'm also wondering if the KIP should include some information
> about
> > >> how a
> > >> >> > metadata should be abandoned. Maybe there is a specific message
> to
> > >> write
> > >> >> in
> > >> >> > the file? So folks who were maybe waiting on that version know
> they
> > >> can
> > >> >> > release their feature?
> > >> >> >
> > >> >> > I am also assuming that we don't shift all the waiting metadata
> > >> versions
> > >> >> > when we abandon a version, but it would be good to clarify and
> > >> include in
> > >> >> > the KIP.
> > >> >>
> > >> >> I'm not sure what you mean by abandoning a version. We never
> abandon a
> > >> >> version once it's stable.
> > >> >>
> > >> >> Unstable versions can change. I wouldn't describe this as
> "abandonment",
> > >> >> just the MV changing prior to release.
> > >> >>
> > >> >> In a similar way, the contents of the 3.7 branch will change up
> until
> > >> >> 3.7.0 is released. Once it gets released, it's never unreleased.
> We just
> > >> >> move on to 3.7.1. Same thing here.
> > >> >>
> > >> >> best,
> > >> >> Colin
> > >> >>
> > >> >> >
> > >> >> > Thanks,
> > >> >> >
> > >> >> > Justine
> > >> >> >
> > >> >> > On Mon, Jan 8, 2024 at 12:44 PM Colin McCabe <cmcc...@apache.org
> >
> > >> wrote:
> > >> >> >
> > >> >> >> Hi Proven,
> > >> >> >>
> > >> >> >> Thanks for the KIP. I think there is a need for this
> capability, for
> > >> >> those
> > >> >> >> of us who deploy from trunk (or branches dervied from trunk).
> > >> >> >>
> > >> >> >> With regard to "unstable.metadata.versions.enable": is this
> going to
> > >> be
> > >> >> a
> > >> >> >> documented configuration, or an internal one? I am guessing we
> want
> > >> it
> > >> >> to
> > >> >> >> be documented, so that users can use it. If we do, we should
> probably
> > >> >> also
> > >> >> >> very prominently warn that THIS WILL BREAK UPGRADES FOR YOUR
> CLUSTER.
> > >> >> That
> > >> >> >> includes logging an ERROR message on startup, etc.
> > >> >> >>
> > >> >> >> It would be good to document if a release can go out that
> contains
> > >> >> "future
> > >> >> >> MVs" that are unstable. Like can we make a 3.8 release that
> contains
> > >> >> >> IBP_4_0_IV0 in MetadataVersion.java, as an unstable future MV?
> > >> >> Personally I
> > >> >> >> think the answer should be "yes," but with the usual caveats.
> When
> > >> the
> > >> >> >> actual 4.0 comes out, the unstable 4.0 MV that shipped in 3.8
> > >> probably
> > >> >> >> won't work, and you won't be able to upgrade. (It was unstable,
> we
> > >> told
> > >> >> you
> > >> >> >> not to use it.)
> > >> >> >>
> > >> >> >> best,
> > >> >> >> Colin
> > >> >> >>
> > >> >> >>
> > >> >> >> On Fri, Jan 5, 2024, at 07:32, Proven Provenzano wrote:
> > >> >> >> > Hey folks,
> > >> >> >> >
> > >> >> >> > I am starting a discussion thread for managing unstable
> metadata
> > >> >> >> > versions
> > >> >> >> > in Apache Kafka.
> > >> >> >> >
> > >> >> >>
> > >> >>
> > >>
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1014%3A+Managing+Unstable+Metadata+Versions+in+Apache+Kafka
> > >> >> >> >
> > >> >> >> > This KIP is actually already implemented in 3.7 with PR
> > >> >> >> > https://github.com/apache/kafka/pull/14860.
> > >> >> >> > I have created this KIP to explain the motivation and how
> managing
> > >> >> >> Metadata
> > >> >> >> > Versions is expected to work.
> > >> >> >> > Comments are greatly appreciated as this process can always be
> > >> >> improved.
> > >> >> >> >
> > >> >> >> > --
> > >> >> >> > --Proven
> > >> >> >>
> > >> >>
> > >>
>

Reply via email to