No objections, I'm +1 ether way. On Fri, Nov 3, 2023, 18:50 Sophie Blee-Goldman <sop...@responsive.dev> wrote:
> I am fine with making them public. Of course in that case we should also > change the corresponding constructors in ConsumerConfig, AdminConfig, and > StreamsConfig from protected to public as well, to be consistent. But > Matthias seems to feel that these should never be instantiated by a user > and that the correct course of action would be to move in the opposite > direction. > > I don't personally feel strongly either way -- honestly I had thought it > was an abuse of internal APIs to extend the other Config classes in order > to access the protected constructor and disable logging. So I would be > happy to officially pull it into the public API with all-public > constructors, because I do feel it is valid/useful to be able to > instantiate these objects. We do so in order to access config values in a > way that accounts for any overrides on top of the default, for example when > multiple overrides are in play (eg user overrides on top of framework > overrides on top of Kafka Streams overrides on top of > Consumer/Consumer/Admin client defaults). Using them is also (slightly) > more type-safe than going through a Properties or config Map<> > > Any objections to expanding the KIP to the ConsumerConfig, AdminConfig, and > StreamsConfig constructors and making them public as well? From Matthias or > otherwise? > > On Fri, Nov 3, 2023 at 11:09 AM Ismael Juma <m...@ismaeljuma.com> wrote: > > > It seems wrong to require inheritance for this and we already have a > public > > constructor. I would make both of them public. > > > > Ismael > > > > On Fri, Nov 3, 2023 at 10:47 AM Matthias J. Sax <mj...@apache.org> > wrote: > > > > > +1 (binding) > > > > > > > > > About "why not public" question: > > > > > > I think we need to distinguish between "end users" who create a > producer > > > instance, and "external parties" that might implement their own > > > `Producer` (or wrap/extend `KafkaProducer`). > > > > > > In the end, I would not expect an "end user" to actually call `new > > > ProducerConfig` to begin with. If one creates a `KafkaProducer` they > > > pass the config via a `Map` or `Properties`, and the producer creates > > > `ProducerConfig` internally only. -- Thus, there is no need to make it > > > `public`. (To this end, I don't actually understand why there is public > > > `ProducerConfig` constructors to begin with -- sounds like a leaky > > > abstraction to me.) > > > > > > On the other hand, if a "third party" implements `Producer` interface > to > > > ship their own producer implementation, they might want to create > > > `ProducerConfig` internally, so for them it's different, but still, > they > > > don't need public access because they can extend `ProducerConfig`, too > > > for this case). -- To me, this falls into the category "simple thing > > > should be easy, and hard things should be possible). > > > > > > > > > -Matthias > > > > > > > > > On 11/3/23 6:06 AM, Ismael Juma wrote: > > > > Hi Sophie, > > > > > > > > I was trying to understand the goal of the change and it's not > totally > > > > clear to me. If the goal is to allow third party applications to > > > customize > > > > the logging behavior, why is the method protected instead of public? > > > > > > > > Ismael > > > > > > > > On Thu, Nov 2, 2023 at 9:55 PM Sophie Blee-Goldman < > > > sop...@responsive.dev> > > > > wrote: > > > > > > > >> Hey all, > > > >> > > > >> This is a trivial one-liner change that it was determined should go > > > through > > > >> a KIP during the PR review process (see this thread > > > >> <https://github.com/apache/kafka/pull/14681#discussion_r1378591228> > > for > > > >> context). Since the change itself was already reviewed and approved > > I'm > > > >> skipping the discussion thread and bringing it to a vote right away, > > > but of > > > >> course I'm open to feedback and can create a discussion thread if > > there > > > is > > > >> need for it. > > > >> > > > >> The change itself is simply adding the `protected` modifier to the > > > >> ProducerConfig constructor that allows for silencing the config > > logging. > > > >> This just brings the ProducerConfig in alignment with the other > client > > > >> configs, all of which already had this constructor as protected. > > > >> > > > >> KIP: > > > >> > > > >> > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-998%3A+Give+ProducerConfig%28props%2C+doLog%29+constructor+protected+access > > > >> PR: https://github.com/apache/kafka/pull/14681 > > > >> > > > >> Thanks! > > > >> Sophie > > > >> > > > > > > > > > >