Thanks for updating the KIP. One more comment. Even if we don't expect users to call `StreamsConfig#getConsumerConfigs()` it is still public API. Thus, we cannot just rename the method.
I think we have two options: either we keep the current name or we deprecate the method and introduce `getMainConsumerConfigs()` in parallel. The deprecated method would just call the new method. I am not sure if we gain a lot renaming the method, thus I have a slight preference in just keeping the method name as is. (But I am also ok to rename it, if people prefer this) -Matthias On 4/3/18 1:59 PM, Bill Bejeck wrote: > Boyang, > > Thanks for making changes to the KIP, I'm +1 on the updated version. > > -Bill > > On Tue, Apr 3, 2018 at 1:14 AM, Boyang Chen <bche...@outlook.com> wrote: > >> Hey friends, >> >> >> both KIP<https://cwiki.apache.org/confluence/display/KAFKA/KIP- >> 276+Add+StreamsConfig+prefix+for+different+consumers> and pull request< >> https://github.com/apache/kafka/pull/4805> are updated. Feel free to take >> another look. >> >> >> >> Thanks for your valuable feedback! >> >> >> Best, >> >> Boyang >> >> ________________________________ >> From: Boyang Chen <bche...@outlook.com> >> Sent: Tuesday, April 3, 2018 11:39 AM >> To: dev@kafka.apache.org >> Subject: Re: [DISCUSS] KIP-276: Add StreamsConfig prefix for different >> consumers >> >> Thanks Matthias, Ted and Guozhang for the inputs. I shall address them in >> next round. >> >> >> ________________________________ >> From: Matthias J. Sax <matth...@confluent.io> >> Sent: Tuesday, April 3, 2018 4:43 AM >> To: dev@kafka.apache.org >> Subject: Re: [DISCUSS] KIP-276: Add StreamsConfig prefix for different >> consumers >> >> Yes, your examples make sense to me. That was the idea behind the proposal. >> >> >> -Matthias >> >> On 4/2/18 11:25 AM, Guozhang Wang wrote: >>> @Matthias >>> >>> That's a good question: I think adding another config for the main >> consumer >>> makes good tradeoffs between compatibility and new user convenience. Just >>> to clarify, from user's pov on upgrade: >>> >>> 1) I'm already overriding some consumer configs, and now I want to >> override >>> these values differently for restore consumers, I'd add one new line for >>> the restore consumer prefix. >>> >>> 2) I'm already overriding some consumer configs, and now I want to NOT >>> overriding them for restore consumers, I'd change my override from >>> `consumer.X` to `main.consumer.X`. >>> >>> 3) I'm new and have not any consumer overrides, and now if I want to >>> override some, I'd use `main.consumer`, `restore.consumer` for specific >>> consumer types, and ONLY consider `consumer` for the ones that I want to >>> apply universally. >>> >>> 4) I'm already overriding some consumer configs and I'm happy with what I >>> get, I do not change anything. >>> >>> >>> Guozhang >>> >>> On Mon, Apr 2, 2018 at 11:10 AM, Ted Yu <yuzhih...@gmail.com> wrote: >>> >>>> bq. to introduce one more prefix `main.consumer.` >>>> >>>> Makes sense. >>>> >>>> On Mon, Apr 2, 2018 at 11:06 AM, Matthias J. Sax <matth...@confluent.io >>> >>>> wrote: >>>> >>>>> Boyang, >>>>> >>>>> thanks a lot for the KIP. >>>>> >>>>> Couple of questions: >>>>> >>>>>> (MODIFIED) public Map<String, Object> getRestoreConsumerConfigs(final >>>>> String clientId); >>>>> >>>>> You mean that the implementation/semantics of this method changes, but >>>>> not the API itself? Might be good to add this as "comment style" >> instead >>>>> of "(MODIFIED)" prefix. >>>>> >>>>>> By rewriting the getRestoreConsumerConfigs() function and adding the >>>>> getGlobalConsumerConfigs() function, if one user uses >>>>> restoreConsumerPrefix() or globalConsumerPrefix() when adding new >>>>> configurations, the configs shall overwrite base consumer config. If >> not >>>>> specified, restore consumer and global consumer shall share the same >>>> config >>>>> with base consumer. >>>>> >>>>> While this does make sense for backward compatibility, I am wonder if >> it >>>>> makes the config "inheritance logic" (ie, hierarchy) too complex? We >>>>> basically introduce a second level of overwrites. It might be simpler >> to >>>>> not introduce this hierarchy with the cost to break backward >>>> compatibility. >>>>> >>>>> For example, config `request.timeout.ms`: >>>>> >>>>> User sets `request.timeout.ms=<user-value>` >>>>> To change it for the main consumer, user also sets >>>>> `consumer.request.timeout.ms=<consumer-value>` >>>>> >>>>> If user only wants to change the config for main consumer, but not for >>>>> global or restore consumer, user needs to add two more configs: >>>>> >>>>> `restore.consumer.request.timeout.ms=<user-value>` >>>>> and >>>>> `global.consumer.request.timeout.ms=<user-value>` >>>>> >>>>> to reset both back to the default config. IMHO, this is not an optimal >>>>> user experience. Thus, it might be worth to change the semantics for >>>>> `consumer.` prefix to only apply those configs to the main consumer. >>>>> >>>>> >>>>> Not sure what other think what the better solution is (I am not sure by >>>>> myself to be honest---just wanted to point it out and discuss the >>>>> pros/cons for both). >>>>> >>>>> >>>>> Another though would be, to introduce one more prefix `main.consumer.` >>>>> -- using this, the existing `consumer.` prefix would apply to all >>>>> consumers (keeping it's current semantics) while we have overwrites for >>>>> all three consumers -- this allow to directly set `main.consumer` >>>>> instead of `consumer` avoiding the weird pattern from my example above >>>>> and preserves backward compatibility. Ie, if we introduce an hierarchy >>>>> of overwrite, a "full" hierarchy might be better than a "partial" >>>>> hierarchy. >>>>> >>>>> >>>>> Looking forward to your thoughts. >>>>> >>>>> >>>>> -Matthias >>>>> >>>>> >>>>> On 4/1/18 5:55 PM, Guozhang Wang wrote: >>>>>> Thanks for the KIP Boyang, the KIP looks good to me. >>>>>> >>>>>> For config values, we use underscore for keeping a single word; for >>>>> config >>>>>> keys, though, we do not use underscores or dashes. I'd suggest using >>>> dots >>>>>> to be consistent with others. >>>>>> >>>>>> >>>>>> Otherwise I'm +1 on the KIP. >>>>>> >>>>>> >>>>>> Guozhang >>>>>> >>>>>> >>>>>> On Sun, Apr 1, 2018 at 10:56 AM, Ted Yu <yuzhih...@gmail.com> wrote: >>>>>> >>>>>>> Looks good overall. >>>>>>> >>>>>>> public static final String RESTORE_CONSUMER_PREFIX = >>>>> "restore-consumer."; >>>>>>> >>>>>>> For other constants in StreamsConfig, underscore is used instead of >>>>> dash. >>>>>>> >>>>>>> Cheers >>>>>>> >>>>>>> On Sun, Apr 1, 2018 at 9:38 AM, Boyang Chen <bche...@outlook.com> >>>>> wrote: >>>>>>> >>>>>>>> Hey friends, >>>>>>>> >>>>>>>> >>>>>>>> I would like to start a discussion thread for KIP 276: >>>>>>>> >>>>>>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP- >>>>>>>> 276+Add+StreamsConfig+prefix+for+different+consumers >>>>>>>> >>>>>>>> >>>>>>>> And pull request is here: >>>>>>>> >>>>>>>> https://github.com/apache/kafka/pull/4805 >>>>>>>> >>>>>>>> [https://avatars3.githubusercontent.com/u/5845561?s=400&v=4 >>>> ]<https:// >>>>>>>> github.com/apache/kafka/pull/4805> >>>>>>>> >>>>>>>> KAFKA-6657: Add StreamsConfig prefix for different consumers by >>>>> abbccdda >>>>>>> · >>>>>>>> Pull Request #4805 · apache/kafka<https://github. >>>>>>>> com/apache/kafka/pull/4805> >>>>>>>> github.com >>>>>>>> This pull request is for jira 6657. The KIP proposal is here Added >>>> unit >>>>>>>> tests for new getGlobalConsumerConfigs API and make sure existing >>>>> restore >>>>>>>> consumer tests are passing. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Boyang >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>> >>> >>> >>> >> >> >
signature.asc
Description: OpenPGP digital signature