That makes a lot of sense. OK, no deprecation. On Fri, 21 Jun 2019 at 15:11, Ismael Juma <ism...@juma.me.uk> wrote:
> This is even more reason not to deprecate immediately, there is very little > maintenance cost for us. We should be mindful that many of our users (eg > Spark, Flink, etc.) typically allow users to specify the kafka clients > version and hence avoid using new classes/interfaces for some time. They > would get a bunch of warnings they cannot do anything about apart from > suppressing. > > Ismael > > On Fri, Jun 21, 2019 at 4:00 AM Andy Coates <a...@confluent.io> wrote: > > > Hi Ismael, > > > > I’m happy enough to not deprecate the existing `AdminClient` class as > part > > of this change. > > > > However, note that, the class will likely be empty, i.e. all methods and > > implementations will be inherited from the interface: > > > > public abstract class AdminClient implements Admin { > > } > > > > Not marking it as deprecated has the benefit that users won’t see any > > deprecation warnings on the next release. Conversely, deprecating it will > > mean we can choose to remove this, now pointless class, in the future if > we > > choose. > > > > That’s my thinking for deprecation, but as I’ve said I’m happy either > way. > > > > Andy > > > > > On 18 Jun 2019, at 16:09, Ismael Juma <ism...@juma.me.uk> wrote: > > > > > > I agree with Ryanne, I think we should avoid deprecating AdminClient > and > > > causing so much churn for users who don't actually care about this > niche > > > use case. > > > > > > Ismael > > > > > > On Tue, Jun 18, 2019 at 6:43 AM Andy Coates <a...@confluent.io> wrote: > > > > > >> Hi Ryanne, > > >> > > >> If we don't change the client code, then everywhere will still expect > > >> subclasses of `AdminClient`, so the interface will be of no use, i.e. > I > > >> can't write a class that implements the new interface and pass it to > the > > >> client code. > > >> > > >> Thanks, > > >> > > >> Andy > > >> > > >> On Mon, 17 Jun 2019 at 19:01, Ryanne Dolan <ryannedo...@gmail.com> > > wrote: > > >> > > >>> Andy, while I agree that the new interface is useful, I'm not > convinced > > >>> adding an interface requires deprecating AdminClient and changing so > > much > > >>> client code. Why not just add the Admin interface, have AdminClient > > >>> implement it, and have done? > > >>> > > >>> Ryanne > > >>> > > >>> On Mon, Jun 17, 2019 at 12:09 PM Andy Coates <a...@confluent.io> > > wrote: > > >>> > > >>>> Hi all, > > >>>> > > >>>> I think I've addressed all concerns. Let me know if I've not. Can I > > >> call > > >>>> another round of votes please? > > >>>> > > >>>> Thanks, > > >>>> > > >>>> Andy > > >>>> > > >>>> On Fri, 14 Jun 2019 at 04:55, Satish Duggana < > > satish.dugg...@gmail.com > > >>> > > >>>> wrote: > > >>>> > > >>>>> Hi Andy, > > >>>>> Thanks for the KIP. This is a good change and it gives the user a > > >>> better > > >>>>> handle on Admin client usage. I agree with the proposal except the > > >> new > > >>>>> `Admin` interface having all the methods from `AdminClient` > abstract > > >>>> class. > > >>>>> It should be kept clean having only the admin operations as methods > > >>> from > > >>>>> KafkaClient abstract class but not the factory methods as mentioned > > >> in > > >>>> the > > >>>>> earlier mail. > > >>>>> > > >>>>> I know about dynamic proxies(which were widely used in RMI/EJB > > >> world). > > >>> I > > >>>> am > > >>>>> curious about the usecase using dynamic proxies with Admin client > > >>>>> interface. Dynamic proxy can have performance penalty if it is used > > >> in > > >>>>> critical path. Is that the primary motivation for creating the KIP? > > >>>>> > > >>>>> Thanks, > > >>>>> Satish. > > >>>>> > > >>>>> On Wed, Jun 12, 2019 at 8:43 PM Andy Coates <a...@confluent.io> > > >> wrote: > > >>>>> > > >>>>>> I'm not married to that part. That was only done to keep it more > > >> or > > >>>> less > > >>>>>> inline with what's already there, (an abstract class that has a > > >>> factory > > >>>>>> method that returns a subclass.... sounds like the same > > >> anti-pattern > > >>>> ;)) > > >>>>>> > > >>>>>> An alternative would to have an `AdminClients` utility class to > > >>> create > > >>>>> the > > >>>>>> admin client. > > >>>>>> > > >>>>>> On Mon, 10 Jun 2019 at 19:31, Matthias J. Sax < > > >> matth...@confluent.io > > >>>> > > >>>>>> wrote: > > >>>>>> > > >>>>>>> Hmmm... > > >>>>>>> > > >>>>>>> So the new interface, returns an instance of a class that > > >>> implements > > >>>>> the > > >>>>>>> interface. This sounds a little bit like an anti-pattern? > > >> Shouldn't > > >>>>>>> interfaces actually not know anything about classes that > > >> implement > > >>>> the > > >>>>>>> interface? > > >>>>>>> > > >>>>>>> > > >>>>>>> -Matthias > > >>>>>>> > > >>>>>>> On 6/10/19 11:22 AM, Andy Coates wrote: > > >>>>>>>> `AdminClient` would be deprecated purely because it would no > > >>> longer > > >>>>>> serve > > >>>>>>>> any purpose and would be virtually empty, getting all of its > > >>>>>>> implementation > > >>>>>>>> from the new interfar. It would be nice to remove this from the > > >>> API > > >>>>> at > > >>>>>>> the > > >>>>>>>> next major version bump, hence the need to deprecate. > > >>>>>>>> > > >>>>>>>> `AdminClient.create()` would return what it does today, (so > > >> not a > > >>>>>>> breaking > > >>>>>>>> change). > > >>>>>>>> > > >>>>>>>> On Tue, 4 Jun 2019 at 22:24, Ryanne Dolan < > > >> ryannedo...@gmail.com > > >>>> > > >>>>>> wrote: > > >>>>>>>> > > >>>>>>>>>> The existing `AdminClient` will be marked as deprecated. > > >>>>>>>>> > > >>>>>>>>> What's the reasoning behind this? I'm fine with the other > > >>> changes, > > >>>>> but > > >>>>>>>>> would prefer to keep the existing public API intact if it's > > >> not > > >>>>>> hurting > > >>>>>>>>> anything. > > >>>>>>>>> > > >>>>>>>>> Also, what will AdminClient.create() return? Would it be a > > >>>> breaking > > >>>>>>> change? > > >>>>>>>>> > > >>>>>>>>> Ryanne > > >>>>>>>>> > > >>>>>>>>> On Tue, Jun 4, 2019, 11:17 AM Andy Coates <a...@confluent.io> > > >>>>> wrote: > > >>>>>>>>> > > >>>>>>>>>> Hi folks > > >>>>>>>>>> > > >>>>>>>>>> As there's been no chatter on this KIP I'm assuming it's > > >>>>>>> non-contentious, > > >>>>>>>>>> (or just boring), hence I'd like to call a vote for KIP-476: > > >>>>>>>>>> > > >>>>>>>>>> > > >>>>>>>>>> > > >>>>>>> > > >>>>>> > > >>>>> > > >>>> > > >>> > > >> > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-476%3A+Add+Java+AdminClient+Interface > > >>>>>>>>>> > > >>>>>>>>>> Thanks, > > >>>>>>>>>> > > >>>>>>>>>> Andy > > >>>>>>>>>> > > >>>>>>>>> > > >>>>>>>> > > >>>>>>> > > >>>>>>> > > >>>>>> > > >>>>> > > >>>> > > >>> > > >> > > > > >