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