To move this forward, I took the liberty to create a PR to bump the version to 3.0.0-SNAPSHOT
https://github.com/apache/kafka/pull/10186 Please let us know if there are any concerns. -Matthias On 2/16/21 5:18 PM, Ismael Juma wrote: > I'm +1 on 3.0 for the mid year release. > > On Tue, Feb 16, 2021 at 5:08 PM Matthias J. Sax <mj...@apache.org> wrote: > >> Hi, >> >> given that we passed 2.8 feature freeze, I wanted to restart this >> thread. Currently, `trunk` is at `2.9.0-SNAPSHOT` and I am wondering if >> the decision for the 3.0 release is final and if we should bump the >> version number? >> >> I am asking particularly because there a many Jiras with a 3.0 target >> release version for breaking changes and we should ensure that we have >> enough time to work on those tickets. -- As long as we don't agree that >> the next release will indeed be 3.0, those tickets are effectively >> blocked/pending. >> >> Thoughts? >> >> >> -Matthias >> >> >> On 10/15/20 4:28 PM, Matthias J. Sax wrote: >>> Thanks for clarifying Colin. Works for me. Overall, 3.0 should be guided >>> by the ZK removal progress and if we are not there yet, it's better to >>> have a 2.8 first. >>> >>> >>> -Matthias >>> >>> >>> On 10/15/20 2:41 PM, Colin McCabe wrote: >>>> Hi all, >>>> >>>> Just to follow up on this... since we're not quite ready for 3.0 yet, >> it's probably best if we release a 2.8 next, and then go to 3.0 after >> that. Sorry for any confusion. >>>> >>>> best, >>>> Colin >>>> >>>> >>>> On Mon, Jul 20, 2020, at 12:52, Matthias J. Sax wrote: >>>>> Did we reach any conclusion on the subject? >>>>> >>>>> It seems we are aiming for 2.7 after 2.6 and plan the major version >> bump >>>>> to 3.0 after 2.7 (assuming we make progress on ZK removal as planned?) >>>>> >>>>> >>>>> -Matthias >>>>> >>>>> >>>>> On 5/18/20 1:11 PM, Boyang Chen wrote: >>>>>> One more thing I would like to see deprecated (hopefully no one >> mentioned >>>>>> before) is the zk based consumer offset support. >>>>>> >>>>>> On Mon, May 11, 2020 at 2:15 PM Colin McCabe <cmcc...@apache.org> >> wrote: >>>>>> >>>>>>> Hi Michael, >>>>>>> >>>>>>> It would be better to discuss the background behind KIP-500 in a >> separate >>>>>>> thread, since this thread is about the Kafka 3.0 release. As others >> have >>>>>>> said, your questions are answered in the KIP. For example, "what is >> the >>>>>>> actual goal?" is addressed in the motivation section. >>>>>>> >>>>>>> I agree that Kafka's usage of Apache ZooKeeper could be optimized. >> But >>>>>>> there are fundamental limitations to this approach compared to >> storing our >>>>>>> metadata internally. For example, having to contact a remote server >> to >>>>>>> reload all your metadata on a controller failover simply doesn't >> scale past >>>>>>> a certain point. >>>>>>> >>>>>>> Apache Curator is a nice API, and if we were starting again today we >> would >>>>>>> certainly consider using it. But it doesn't allow us to do anything >> more >>>>>>> efficiently than ZooKeeper could already do it. >>>>>>> >>>>>>> Finally, Kafka's core competence is logs. While our replication >> protocol >>>>>>> is not Raft, it shares many similarities with that protocol. So I >> think >>>>>>> it's a bit unfair to say that it is "catastrophic hubris" to believe >> we can >>>>>>> implement the protocol. >>>>>>> >>>>>>> best, >>>>>>> Colin >>>>>>> >>>>>>> >>>>>>> On Sun, May 10, 2020, at 11:02, Michael K. Edwards wrote: >>>>>>>> Yes, I've read the KIP. But all it really says to me is "we have >> never >>>>>>>> gotten around to using ZooKeeper properly." To the extent that any >> of >>>>>>> the >>>>>>>> distributed-state-maintenance problems discussed in "Metadata as an >> Event >>>>>>>> Log" can be solved — and some of them intrinsically can't, because >> CAP >>>>>>>> theorem — most of them are already implemented very effectively in >>>>>>> Curator >>>>>>>> recipes. (For instance, Curator's Tree Cache >>>>>>>> https://curator.apache.org/curator-recipes/tree-cache.html is a >> good >>>>>>> fit to >>>>>>>> some of the state-maintenance needs.) >>>>>>>> >>>>>>>> Kafka does have some usage patterns that don't map neatly onto >> existing >>>>>>>> Curator recipes. For instance, neither LeaderSelector nor >> LeaderLatch >>>>>>>> implements leader preference in the way that the existing Kafka >> partition >>>>>>>> leadership election procedure does. But why not handle that by >> improving >>>>>>>> and extending Curator? That way, other Curator users benefit, and >> we get >>>>>>>> additional highly experienced reviewers' eyes on the distributed >>>>>>>> algorithms, which are very very tricky to get right. >>>>>>>> >>>>>>>> >>>>>>>> On Sun, May 10, 2020 at 10:47 AM Ron Dagostino <rndg...@gmail.com> >>>>>>> wrote: >>>>>>>> >>>>>>>>> Hi Michael. This is discussed in the KIP. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>> >> https://cwiki.apache.org/confluence/display/KAFKA/KIP-500%3A+Replace+ZooKeeper+with+a+Self-Managed+Metadata+Quorum#KIP-500:ReplaceZooKeeperwithaSelf-ManagedMetadataQuorum-Motivation >>>>>>>>> >>>>>>>>> Ron >>>>>>>>> >>>>>>>>>> On May 10, 2020, at 1:35 PM, Michael K. Edwards < >>>>>>> m.k.edwa...@gmail.com> >>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> What is the actual goal of removing the ZooKeeper dependency? In >> my >>>>>>>>>> experience, if ZooKeeper is properly provisioned and deployed, >> it's >>>>>>>>> largely >>>>>>>>>> trouble-free. (You do need to know how to use observers >> properly.) >>>>>>>>> There >>>>>>>>>> are some subtleties about timeouts and leadership changes, but >>>>>>> they're >>>>>>>>>> pretty small stuff. Why go to all the trouble of building a new >>>>>>>>>> distributed-consensus system that's going to have catastrophic >> bugs >>>>>>> for >>>>>>>>>> years to come? It seems like such an act of hubris to me, as well >>>>>>> as a >>>>>>>>>> massive waste of engineering effort. What is there to be gained? >>>>>>>>>> >>>>>>>>>>> On Fri, May 8, 2020 at 4:11 PM Matthias J. Sax <mj...@apache.org >>> >>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> Sure, we can compile a list for Kafka Streams. But the KIP would >> be >>>>>>> for >>>>>>>>>>> 3.0, so I don't think it's urgent to do it now? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -Matthias >>>>>>>>>>> >>>>>>>>>>>> On 5/8/20 3:47 PM, Colin McCabe wrote: >>>>>>>>>>>> Thanks, Guozhang-- sounds like a good plan. >>>>>>>>>>>> >>>>>>>>>>>> I think it would be good to have a list of deprecated streams >> APIs >>>>>>> that >>>>>>>>>>> we want to remove in 3.0. Maybe it's easiest to do that as its >> own >>>>>>> KIP? >>>>>>>>>>>> >>>>>>>>>>>> For MirrorMaker 1, we should have a KIP to deprecate its use in >>>>>>> 2.6 if >>>>>>>>>>> we want to remove it in 3.0. I don't have a good sense of how >>>>>>>>> practical it >>>>>>>>>>> is to deprecate this now, so I will defer to others here. But >> the >>>>>>> KIP >>>>>>>>>>> freeze for 2.6 is coming soon, so if we want to make the case, >> now >>>>>>> is >>>>>>>>> the >>>>>>>>>>> time. >>>>>>>>>>>> >>>>>>>>>>>> best, >>>>>>>>>>>> Colin >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> On Thu, May 7, 2020, at 16:28, Guozhang Wang wrote: >>>>>>>>>>>>> Hey folks, >>>>>>>>>>>>> >>>>>>>>>>>>> Sorry for stating that the bridge release would not break any >>>>>>>>>>> compatibility >>>>>>>>>>>>> before, which is incorrect and confused many people. >>>>>>>>>>>>> >>>>>>>>>>>>> I think one way to think about the versioning is that: >>>>>>>>>>>>> >>>>>>>>>>>>> 0) In a 2.x version moving ahead we would deprecate the >>>>>>> ZK-dependent >>>>>>>>>>> tools >>>>>>>>>>>>> such as --zookeeper flags from various scripts (KIP-555) >>>>>>>>>>>>> >>>>>>>>>>>>> 1) In 3.0 we would at least make one incompatible change for >>>>>>> example >>>>>>>>> to >>>>>>>>>>>>> remove the deprecated ZK flags. >>>>>>>>>>>>> >>>>>>>>>>>>> 2) In a future major version (e.g. 4.0) we would drop ZK >> entirely, >>>>>>>>>>>>> including usages such as security credentials / broker >>>>>>> registration / >>>>>>>>>>> etc >>>>>>>>>>>>> which are via ZK today as well. >>>>>>>>>>>>> >>>>>>>>>>>>> Then for the bridge release(s), it can be any or all of 3.x. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> For 1), I'd love to add a few more incompatibility changes in >> 3.0 >>>>>>> from >>>>>>>>>>>>> Kafka Streams: we evolve Streams public APIs by deprecating and >>>>>>> then >>>>>>>>>>> remove >>>>>>>>>>>>> in major releases, and since 2.0 we've accumulated quite a few >>>>>>>>>>> deprecated >>>>>>>>>>>>> APIs, and I can compile a list of KIPs that contain those if >>>>>>> people >>>>>>>>> are >>>>>>>>>>>>> interested. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Guozhang >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> On Thu, May 7, 2020 at 3:53 PM Colin McCabe < >> cmcc...@apache.org> >>>>>>>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Wed, May 6, 2020, at 21:33, Ryanne Dolan wrote: >>>>>>>>>>>>>>>> In fact, we know that the bridge release will involve at >> least >>>>>>> one >>>>>>>>>>>>>>>> incompatible change. We will need to drop support for the >>>>>>>>>>> --zookeeper >>>>>>>>>>>>>>>> flags in the command-line tools. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> If the bridge release(s) and the subsequent post-ZK release >> are >>>>>>>>> _both_ >>>>>>>>>>>>>>> breaking changes, I think we only have one option: the 3.x >> line >>>>>>> are >>>>>>>>>>> the >>>>>>>>>>>>>>> bridge release(s), and ZK is removed in 4.0, as suggested by >>>>>>> Andrew >>>>>>>>>>>>>>> Schofield. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Specifically: >>>>>>>>>>>>>>> - in order to _remove_ (not merely deprecate) the --zookeeper >>>>>>> args, >>>>>>>>> we >>>>>>>>>>>>>> will >>>>>>>>>>>>>>> need a major release. >>>>>>>>>>>>>>> - in oder to drop support for ZK entirely (e.g. break a >> bunch of >>>>>>>>>>> external >>>>>>>>>>>>>>> tooling like Cruise Control), we will need a major release. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I count two major releases. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Hi Ryanne, >>>>>>>>>>>>>> >>>>>>>>>>>>>> I agree that dropping ZK completely will need a new major >> release >>>>>>>>> after >>>>>>>>>>>>>> 3.0. I think that's OK and in keeping with how we've handled >>>>>>>>>>> deprecation >>>>>>>>>>>>>> and removal in the past. It's important for users to have a >>>>>>> smooth >>>>>>>>>>> upgrade >>>>>>>>>>>>>> path. >>>>>>>>>>>>>> >>>>>>>>>>>>>> best, >>>>>>>>>>>>>> Colin >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Ryanne >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> - >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Wed, May 6, 2020 at 10:52 PM Colin McCabe < >>>>>>> cmcc...@apache.org> >>>>>>>>>>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Mon, May 4, 2020, at 17:12, Ryanne Dolan wrote: >>>>>>>>>>>>>>>>> Hey Colin, I think we should wait until after KIP-500's >>>>>>> "bridge >>>>>>>>>>>>>>>>> release" so there is a clean break from Zookeeper after >> 3.0. >>>>>>> The >>>>>>>>>>>>>>>>> bridge release by definition is an attempt to not break >>>>>>> anything, >>>>>>>>> so >>>>>>>>>>>>>>>>> it theoretically doesn't warrant a major release. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi Ryanne, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I think it's important to clarify this a little bit. The >>>>>>> bridge >>>>>>>>>>>>>> release >>>>>>>>>>>>>>>> (really, releases, plural) allow you to upgrade from a >> cluster >>>>>>> that >>>>>>>>>>> is >>>>>>>>>>>>>>>> using ZooKeeper to one that is not using ZooKeeper. But, >> that >>>>>>>>>>> doesn't >>>>>>>>>>>>>>>> imply that the bridge release itself doesn't break anything. >>>>>>>>>>> Upgrading >>>>>>>>>>>>>>>> to the bridge release itself might involve some minor >>>>>>>>>>> incompatibility. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Kafka does occasionally have incompatible changes. In those >>>>>>> cases, >>>>>>>>>>> we >>>>>>>>>>>>>>>> bump the major version number. One example is that when we >>>>>>> went >>>>>>>>> from >>>>>>>>>>>>>>>> Kafka 1.x to Kafka 2.0, we dropped support for JDK7. This >> is >>>>>>> an >>>>>>>>>>>>>>>> incompatible change. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> In fact, we know that the bridge release will involve at >> least >>>>>>> one >>>>>>>>>>>>>>>> incompatible change. We will need to drop support for the >>>>>>>>>>> --zookeeper >>>>>>>>>>>>>>>> flags in the command-line tools. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> We've been preparing for this change for a long time. >> People >>>>>>> have >>>>>>>>>>>>>> spent >>>>>>>>>>>>>>>> a lot of effort designing new APIs that can be used instead >> of >>>>>>> the >>>>>>>>>>> old >>>>>>>>>>>>>>>> zookeeper-based code that some of the command-line tools >>>>>>> used. We >>>>>>>>>>> have >>>>>>>>>>>>>>>> also deprecated the old ZK-based flags. But at the end of >> the >>>>>>> day, >>>>>>>>>>> it >>>>>>>>>>>>>>>> is still an incompatible change. So it's unfortunately not >>>>>>>>> possible >>>>>>>>>>>>>> for >>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>> bridge release to be a 2.x release. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> If that's not the case (i.e. if a single "bridge release" >>>>>>> turns >>>>>>>>> out >>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>> be impractical), we should consider forking 3.0 while >>>>>>> maintaining >>>>>>>>> a >>>>>>>>>>>>>>>>> line of Zookeeper-dependent Kafka in 2.x. That way 3.x can >>>>>>> evolve >>>>>>>>>>>>>>>>> dramatically without breaking the 2.x line. In particular, >>>>>>>>> anything >>>>>>>>>>>>>>>>> related to removing Zookeeper could land in pre-3.0 while >>>>>>> every >>>>>>>>>>> other >>>>>>>>>>>>>>>>> feature targets 2.6. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Just to be super clear about this, what we want to do here >> is >>>>>>>>> support >>>>>>>>>>>>>>>> operating in __either__ KIP-500 mode and legacy mode for a >>>>>>> while. >>>>>>>>> So >>>>>>>>>>>>>> the >>>>>>>>>>>>>>>> same branch will have support for both the old way and the >> new >>>>>>> way >>>>>>>>> of >>>>>>>>>>>>>>>> managing metadata. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> This will allow us to get an "alpha" version of the KIP-500 >>>>>>> mode >>>>>>>>> out >>>>>>>>>>>>>> early >>>>>>>>>>>>>>>> for people to experiment with. It also greatly reduces the >>>>>>> number >>>>>>>>> of >>>>>>>>>>>>>> Kafka >>>>>>>>>>>>>>>> releases we have to make, and the amount of backporting we >>>>>>> have to >>>>>>>>>>> do. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> If you are proposing 2.6 should be the "bridge release", I >>>>>>> think >>>>>>>>>>> this >>>>>>>>>>>>>>>>> is premature given Kafka's time-based release schedule. If >> the >>>>>>>>>>> bridge >>>>>>>>>>>>>>>>> features happen to be merged before 2.6's feature freeze, >> then >>>>>>>>> sure >>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>> let's make that the bridge release in retrospect. And if we >>>>>>> get >>>>>>>>> all >>>>>>>>>>>>>>>>> the post-Zookeeper features merged before 2.7, I'm onboard >>>>>>> with >>>>>>>>>>>>>> naming >>>>>>>>>>>>>>>>> it "3.0" instead. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> That said, we should aim to remove legacy MirrorMaker >> before >>>>>>> 3.0 >>>>>>>>> as >>>>>>>>>>>>>>>>> well. I'm happy to drive that additional breaking change. >>>>>>> Maybe >>>>>>>>> 2.6 >>>>>>>>>>>>>>>>> can be the "bridge" for MM2 as well. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I don't have a strong opinion either way about this, but if >> we >>>>>>> want >>>>>>>>>>> to >>>>>>>>>>>>>>>> remove the original MirrorMaker, we have to deprecate it >> first, >>>>>>>>>>>>>> right? Are >>>>>>>>>>>>>>>> we ready to do that? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> best, >>>>>>>>>>>>>>>> Colin >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Ryanne >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Mon, May 4, 2020, 5:05 PM Colin McCabe < >> cmcc...@apache.org >>>>>>>> >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> We've had a few proposals recently for incompatible >>>>>>> changes. One >>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>> them is my KIP-604: Remove ZooKeeper Flags from the >>>>>>>>> Administrative >>>>>>>>>>>>>>>>>> Tools. The other is Boyang's KIP-590: Redirect ZK >> Mutation >>>>>>>>>>>>>>>>>> Protocols to the Controller. I think it's time to start >>>>>>> thinking >>>>>>>>>>>>>>>>>> about Kafka 3.0. Specifically, I think we should move to >> 3.0 >>>>>>>>> after >>>>>>>>>>>>>>>>>> the 2.6 release. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> From the perspective of KIP-500, in Kafka 3.x we'd like to >>>>>>> make >>>>>>>>>>>>>>>>>> running in a ZooKeeper-less mode possible (but not yet the >>>>>>>>>>>>>> default.) >>>>>>>>>>>>>>>>>> This is the motivation behind KIP-590 and KIP-604, as >> well as >>>>>>>>> some >>>>>>>>>>>>>>>>>> of the other KIPs we've done recently. Since it will take >>>>>>> some >>>>>>>>>>>>>> time >>>>>>>>>>>>>>>>>> to stabilize the new ZooKeeper-free Kafka code, we will >> hide >>>>>>> it >>>>>>>>>>>>>>>>>> behind an option initially. (We'll have a KIP describing >>>>>>> this all >>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>> detail soon.) >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> What does everyone think about having Kafka 3.0 come up >> next >>>>>>>>> after >>>>>>>>>>>>>>>>>> 2.6? Are there any other things we should change in the >> 2.6 >>>>>>> -> >>>>>>>>> 3.0 >>>>>>>>>>>>>>>>>> transition? >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> best, Colin >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> -- Guozhang >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>>>> Attachments: >>>>> * signature.asc >> >