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