Hi, Colin,

Thanks for the reply.

4. "A developer could modify the code to allow unstable features outside of
JUnit, and then run whatever they want."
Hmm, it's inconvenient for a developer to make some temporary change just
to test an unstable feature outside of junit, right?

Also, how does a user test an EA feature in a release? It's inconvenient
for a user to change code and recompile the binary.

Jun


On Wed, Jun 26, 2024 at 1:38 PM Colin McCabe <cmcc...@apache.org> wrote:

> On Wed, Jun 26, 2024, at 13:16, Jun Rao wrote:
> > Hi, Colin,
> >
> > Thanks for the reply.
> >
> > 1.
> https://kafka.apache.org/protocol.html#The_Messages_ConsumerGroupDescribe
> > lists ConsumerGroupDescribeRequest, whose latest version is unstable.
> >
>
> Hi Jun,
>
> I think that is a bug.
>
> >
> > 4. "As devlopers, they can change the code to do this if they want."
> > Just to be clear. A developer could be able to test unstable MV/RPCs by
> > enabling unstable.features.enable in a real cluster, right?
>
> A developer could modify the code to allow unstable features outside of
> JUnit, and then run whatever they want.
>
> >
> > "But I think it's important that this should NOT work in our actual Kafka
> > releases"
> > Are you saying unstable MV/RPCs can't be enabled in Kafka releases with
> > unstable.features.enable set to true? How do we plan to enforce that?
> >
>
> We can just unset the configuration key in KafkaRaftServer.scala, which is
> not used by JUnit, but which is used by the normal broker and controller
> startup processes.
>
> best,
> Colin
>
> > Jun
> >
> > On Wed, Jun 26, 2024 at 12:52 PM Colin McCabe <cmcc...@apache.org>
> wrote:
> >
> >> On Wed, Jun 26, 2024, at 12:09, Jun Rao wrote:
> >> > Hi, Colin,
> >> >
> >> > Thanks for restarting the discussion. A few comments.
> >> >
> >> > 1. "An unstable RPC version can be changed at any time, until it
> becomes
> >> > stable."
> >> >
> >> > What's our recommendation to non-java developers? Should they start
> >> > building a new version of an RPC until it is stable?
> >> >
> >>
> >> Hi Jun,
> >>
> >> Non-Java developers will always be using only stable APIs. Unstable APIs
> >> are only available to JUnit tests (that run inside the JUnit JVM).
> >>
> >> > Should we explicitly mark unstable versions of PRC in
> >> > https://kafka.apache.org/protocol.html? Currently, it's not clear
> which
> >> > versions are unstable.
> >> >
> >>
> >> Hmm, I don't think the unstable APIs should be documented at all in our
> >> public docs. Since they're just "possibilities for the future" that
> haven't
> >> actually been released.
> >>
> >> > 2. enable.unstable.features: Our current convention is to put enable
> in
> >> the
> >> > suffix in config names.
> >> >
> >>
> >> OK. I changed it to "unstable.features.enable"
> >>
> >> > 3. It would be useful to explicitly mention the removal of the
> following
> >> > two configs in the public interfaces section.
> >> > unstable.api.versions.enable
> >> > unstable.feature.versions.enable
> >> >
> >>
> >> OK. I added this to that section.
> >>
> >> > 4. "Clusters can be created with unstable MVs, but only in JUnit
> tests."
> >> > Hmm, we should allow developers to test unstable MVs in a real
> cluster,
> >> > right?
> >> >
> >>
> >> As devlopers, they can change the code to do this if they want. But I
> >> think it's important that this should NOT work in our actual Kafka
> >> releases, to avoid blurring the lines between released features and
> >> unreleased ones.
> >>
> >> > 5. "This also implies that if there are no stable MVs for a release,
> >> > parsing will fail."
> >> > So for every release, we need to have at least one stable MV in that
> >> > release number (e.g 3.8)? It would be useful to document that.
> >>
> >> I added a note that "prior to a release, all metadata versions for that
> >> release must be stable."
> >>
> >> best,
> >> Colin
> >>
> >>
> >> >
> >> > Jun
> >> >
> >> >
> >> > On Tue, Jun 25, 2024 at 3:39 PM Colin McCabe <cmcc...@apache.org>
> wrote:
> >> >
> >> >> Hi all,
> >> >>
> >> >> We previously discussed this KIP for documenting how we deal with
> >> unstable
> >> >> MetadataVersions. At that time, we didn't bring it to a vote.
> >> >>
> >> >> Proven handed this off to me, and I've made some changes to the
> proposal
> >> >> since then:
> >> >>
> >> >> - I expanded the scope to also cover "RPCs with
> latestVersionUnstable"
> >> >>
> >> >> - I expanded the scope to cover other unstable KIP-584 features
> >> >> (MetadataVersion is just one KIP-584 feature, after all)
> >> >>
> >> >> - Made a single configuration cover all of the above. Since it's
> silly
> >> to
> >> >> enable an unstable MV, but have it fail because you have not also set
> >> some
> >> >> other configurations to get unstable things.
> >> >>
> >> >> - Clarified that unstable features will be usable only from JUnit,
> >> nowhere
> >> >> else
> >> >>
> >> >> - Added a "rejected alternatives" section
> >> >>
> >> >> - Clarified that there is no need to "reserve" previously used but no
> >> >> longer extant unstable features, MVs, or RPCs.
> >> >>
> >> >> Please take a look.
> >> >>
> >> >> best,
> >> >> Colin
> >> >>
> >>
>

Reply via email to