Hi all,

KIP updated:
- No deprecation
- Factory method back onto Admin interface

I'd like to kick off another round of voting please.

Thanks,

Andy

On Mon, 24 Jun 2019 at 16:03, Andy Coates <a...@confluent.io> wrote:

> I agree Matthias.
>
> (In Scala, such factory methods are on a companion object. As Java doesn't
> have the concept of a companion object, an equivalent would be a utility
> class with a similar name...)
>
> However, I'll update the KIP to include the factory method on the
> interface.
>
> On Fri, 21 Jun 2019 at 23:40, Matthias J. Sax <matth...@confluent.io>
> wrote:
>
>> I still think, that an interface does not need to know anything about
>> its implementation. But I am also fine if we add a factory method to the
>> new interface if that is preferred by most people.
>>
>>
>> -Matthias
>>
>> On 6/21/19 7:10 AM, Ismael Juma 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
>> >>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>>>>
>> >>>>>>
>> >>>>>
>> >>>>
>> >>
>> >>
>> >
>>
>>

Reply via email to