Hi Matthias,

Two quick comments:

1. Yes, please help edit the KIP directly. It's easy enough to revert if
Kuan disagrees.
2. Regarding client upgrades, the test in
https://github.com/apache/kafka/pull/18193/files is an example of test that
only starts from 2.1 (since we did not merge #18193).

Ismael

On Thu, Feb 27, 2025 at 11:36 PM Matthias J. Sax <mj...@apache.org> wrote:

> Thanks all. I am happy that we are making progress to close this out.
>
> As mentioned in my (long) email last Friday, I also think that the KIP
> makes a lot of implicit assumptions, and it might benefit from begin
> more explicit, even explaining things that are "set in stone" already,
> and the KIP does not change them (like API deprecation timelines and
> guarantees). But as Bruno said, it would help a lot to make it easier to
> understand the KIP.
>
> Only a very small number of people seems to fully understand all the
> nuances, and it took quite a while to collect and curate all the cases,
> to shape this KIP... And we know that a lot of people actually read
> KIPs, and the title for KIP-1124 is or sure click-bait...
>
> I am also happy to edit the wiki page directly if that's ok with Kuan,
> to add background information that I believe is missing and important.
>
>
>
> My overall understanding of the state of the KIP, ie, its actual content
> seems to be, that there is a high level agreement, and the content of
> the KIP is ok.
>
> The only open question seems to be, if we want to recommend `2.8.x` as a
> bridge release for Kafka Streams or not. As said in my email on Friday,
> I am personally ok either way, with a preference to add `2.8.x` as
> bridge release, as it simplifies updating the code by avoiding
> compilation errors. With a 2.8.x bridge release, KS application code
> would _always_ compile, and the JavaDocs help a lot to guide users how
> to migrate off deprecated APIs. -- With a direct upgrade from older
> versions to 3.9.x, code does not compile, and there is no guidance as
> the old methods (and corresponding JavaDocs) are already removed, making
> it significant harder for user to update their code and make it compile
> again.
>
> In the end, we would only _recommend_ 2.8.x as a bridge release to
> users, and there won't be any claim that an direct upgrade to 3.9.x is
> not supported. If one wants to do this, it's tested, and ok. Knock
> yourself out -- there is for sure apps out there, that are just a simple
> `builder.stream(...).filter(...).to(...)` the there won't be an API
> incompatibility issues.
>
> But I don't think it would be wise to _recommend_ a direct upgrade to
> 3.9.x for the reasons stated, as many apps are more complex.
>
> Thoughts?
>
>
>
> About testing: I did look into the system tests, and it seems we
> actually don't really have a real upgrade test for clients, ie, a test
> that is running an consumer or producer with some older versions, and
> executes a rolling bounce to upgrade the app...
>
> But maybe such a test is not necessary for clients (compare to Kafka
> Streams), and the existing client-broker forward/backward compatibility
> test are good enough? (At least in the last 10 years, it seems this test
> coverage was sufficient?)
>
> I want to point out though that I agree with Bruno: If we assume that
> the client-broker compatibility tests are sufficient to verify client
> upgrades, we do effectively/implicitly test upgrading 2.0 (and older
> clients) to 4.0 using 3.9 and older brokers. These test coverage does
> not exist in a single branch so, but test from different branches
> combined, implicitly cover this. Nevertheless, is it tested.
>
> So it seems both Bruno and Ismael are right, depending how you look at
> the problem. In any case, even if we test such an upgrade implicitly, I
> agree that it's good to exclude these upgrades officially as unsupported.
>
>
>
> -Matthias
>
>
>
>
> On 2/27/25 6:10 AM, Ismael Juma wrote:
> > Hi Bruno,
> >
> > A comment below.
> >
> > On Thu, Feb 27, 2025, 1:20 AM Bruno Cadonna <cado...@apache.org> wrote:
> >
> >> BC2:
> >> Another aspect that confuses me in the KIP is the bridge version for
> >> clients. If my broker version is 3.9.x, I can do a direct upgrade from
> >> 1.0.x to 4.0.x (let apart the Java API compatibility mentioned above).
> >> The 4.0.x release tests 4.0.x clients against 3.9.x brokers and the
> >> 3.9.x release tests 1.0.x clients against 3.9.x brokers. It is not clear
> >> to me why we need a bridge release in this case.
> >>
> >
> > We don't test client upgrades from 1.0.x to 4.0.x. They may work, but
> it's
> > untested. Again, we are focusing on simplicity versus flexibility for
> edge
> > cases. The number of people upgrading from 1.0 to 4.0 is very low (if not
> > zero).
> >
> > That's why I still think the simple description I provided in my other
> > message is the way to go
> >
> > Deprecated APIs may or may not affect users, so that has to be evaluated
> on
> > a case by case basis.
> >
> > Ismael
> >
>
>

Reply via email to