One follow up, addressing Ewen's comment: It seems an older KIP update was not reflected (maybe I forgot to hit save or only though I updated the KIP -- sorry for that). The new API will be
> public ProducerConfig(Properties props); > public ProducerConfig(Map<String, Object> props); > public ConsumerConfig(Properties props); > public ConsumerConfig(Map<String, Object> props); -Matthias On 1/8/18 1:29 PM, Matthias J. Sax wrote: > We cannot simply change to <String,?> without breaking a lot of code and > making it a nightmare to fix it up... :( > > I will leave the VOTE open for some more time if people still want to > comment. Otherwise, we would have 3 bindings vote now. > > > -Matthias > > On 1/8/18 10:58 AM, Ewen Cheslack-Postava wrote: >> +1 (binding), though I still think the Map should be <String, ?> instead of >> <?, ?>. >> >> I also think its better to just expose the defaults as constants on the >> class. Apparently there was discussion of this before and the concern is >> that people write code that rely on the default configs and we might break >> their code if we change it. I don't really buy this as using the constant >> allows you to to symbolically reference the value rather than making your >> own copy of it. Usually if we change a default like that there is an >> important reason why and having the old copied value might be worse than >> having the value change out from under you. Having the defaults explicitly >> exposed can also be helpful when writing tests sometimes. >> >> -Ewen >> >> On Wed, Jan 3, 2018 at 9:30 AM, Colin McCabe <cmcc...@apache.org> wrote: >> >>> On Thu, Dec 21, 2017, at 10:28, Jason Gustafson wrote: >>>> Hey Matthias, >>>> >>>> Let me suggest an alternative. As you have mentioned, these config >>> classes >>>> do not give users much benefit currently. Maybe we change that? I think >>>> many users would appreciate having a builder for configuration since it >>>> provides type safety and is generally a much friendlier pattern to work >>>> with programmatically. Users could then do something like this: >>>> >>>> ConsumerConfig config = ConsumerConfig.newBuilder() >>>> .setBootstrapServers("localhost:9092") >>>> .setGroupId("group") >>>> .setRequestTimeout(15, TimeUnit.SECONDS) >>>> .build(); >>>> >>>> Consumer consumer = new KafkaConsumer(config); >>>> >>>> An additional benefit of this is that it gives us a better way to expose >>>> config deprecations. In any case, it would make it less odd to expose the >>>> public constructor without giving users anything useful to do with the >>>> class. >>> >>> Yeah, that would be good. The builder idea would definitely make it a lot >>> easier to configure clients programmatically. >>> >>> I do wonder if there are some cross-version compatibility issues here. If >>> there's any configuration that needs to be set by the client, but then >>> propagated to the broker to be applied, the validation of that >>> configuration really needs to be done by the broker itself. The client >>> code doesn't know the broker version, so it can't validate these configs. >>> One example is topic configurations (although those are not set by >>> ProducerConfig). I'm not sure how big of an issue this is with our current >>> configurations. >>> >>> Another problem here is that all these builder functions become API, and >>> cannot easily be changed. So if we want to change a configuration key that >>> formerly accepted an int to accept a long, it will be difficult to do >>> that. We would have to add a new function with a separate name. >>> >>> best, >>> Colin >>> >>> >>>> >>>> What do you think? >>>> >>>> -Jason >>>> >>>> On Wed, Dec 20, 2017 at 5:59 PM, Matthias J. Sax <matth...@confluent.io> >>>> wrote: >>>> >>>>> It's tailored for internal usage. I think client constructors don't >>>>> benefit from accepting those config objects. We just want to be able to >>>>> access the default values for certain parameters. >>>>> >>>>> From a user point of view, it's actually boiler plate code if you pass >>>>> in a config object instead of a plain Properties object because the >>>>> config object itself is immutable. >>>>> >>>>> I actually create a JIRA to remove the constructors from KafkaStreams >>>>> that do accept StreamsConfig for exact this reason: >>>>> https://issues.apache.org/jira/browse/KAFKA-6386 >>>>> >>>>> >>>>> -Matthias >>>>> >>>>> >>>>> On 12/20/17 3:33 PM, Jason Gustafson wrote: >>>>>> Hi Matthias, >>>>>> >>>>>> Isn't it a little weird to make these constructors public but not >>> also >>>>>> expose the corresponding client constructors that use them? >>>>>> >>>>>> -Jason >>>>>> >>>>>> On Tue, Dec 19, 2017 at 9:30 AM, Bill Bejeck <bbej...@gmail.com> >>> wrote: >>>>>> >>>>>>> +1 >>>>>>> >>>>>>> On Tue, Dec 19, 2017 at 12:09 PM, Guozhang Wang <wangg...@gmail.com >>>> >>>>>>> wrote: >>>>>>> >>>>>>>> +1 >>>>>>>> >>>>>>>> On Tue, Dec 19, 2017 at 1:49 AM, Tom Bentley < >>> t.j.bent...@gmail.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> +1 >>>>>>>>> >>>>>>>>> On 18 December 2017 at 23:28, Vahid S Hashemian < >>>>>>>> vahidhashem...@us.ibm.com >>>>>>>>>> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> +1 >>>>>>>>>> >>>>>>>>>> Thanks for the KIP. >>>>>>>>>> >>>>>>>>>> --Vahid >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> From: Ted Yu <yuzhih...@gmail.com> >>>>>>>>>> To: dev@kafka.apache.org >>>>>>>>>> Date: 12/18/2017 02:45 PM >>>>>>>>>> Subject: Re: [VOTE] KIP-243: Make ProducerConfig and >>>>>>>>> ConsumerConfig >>>>>>>>>> constructors public >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> +1 >>>>>>>>>> >>>>>>>>>> nit: via "copy and past" an 'e' is missing at the end. >>>>>>>>>> >>>>>>>>>> On Mon, Dec 18, 2017 at 2:38 PM, Matthias J. Sax < >>>>>>>> matth...@confluent.io> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> Hi, >>>>>>>>>>> >>>>>>>>>>> I want to propose the following KIP: >>>>>>>>>>> >>>>>>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__cwiki. >>>>>>>>>> apache.org_confluence_display_KAFKA_KIP-2D&d=DwIBaQ&c=jf_ >>>>>>>>>> iaSHvJObTbx-siA1ZOg&r=Q_itwloTQj3_xUKl7Nzswo6KE4Nj- >>>>>>>>>> kjJc7uSVcviKUc&m=JToRX4-HeVsRoOekIz18ht-YLMe-T21MttZTgbxB4ag&s= >>>>>>>>>> 6aZjPCc9e00raokVPKvx1BxwDOHyCuKNgtBXPMeoHy4&e= >>>>>>>>>> >>>>>>>>>>> 243%3A+Make+ProducerConfig+and+ConsumerConfig+ >>> constructors+public >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> This is a rather straight forward change, thus I skip the >>> DISCUSS >>>>>>>>>>> thread and call for a vote immediately. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -Matthias >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> -- Guozhang >>>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>> >> >
signature.asc
Description: OpenPGP digital signature