Rajini, that was not my intent, the intent was to give a user of this api an insight in to what their topic will look like once created. as things stand now a user is unable to (easily) have any knowledge of what their topic configs will be before doing a `CREATE_TOPICS`. as i mentioned in the KIP, another option would be to have the `CreateTopicsOptions.validateOnly=true` version return data, but seems more invasive/questionable.
dan On Wed, Dec 6, 2017 at 5:10 AM, Rajini Sivaram <rajinisiva...@gmail.com> wrote: > Hi Dan, > > Thank you for the KIP. KIP-226 (https://cwiki.apache.org/ > confluence/display/KAFKA/KIP-226+-+Dynamic+Broker+Configuration) proposes > to add an option to include all synonyms of a config option when describing > configs. This includes any defaults. For example (using Dong's example), if > you have topicA with min.cleanable.dirty.ratio=0.6 as an override and the > broker default is 0.5, AdminClient#describeConfigs with synonyms would > return the actual value in use as the config value (I,e. > min.cleanable.dirty.ratio=0.6). And the synonyms list would contain (in > the > order of precedence in which these configs are applied): > > 1. min.cleanable.dirty.ratio=0.6, config source=TOPIC_CONFIG > 2. log.min.cleanable.dirty.ratio=0.5, config > source=STATIC_BROKER_CONFIG > > > KIP-226 doesn't give you exactly what you are proposing in this KIP, but it > gives the mapping of configs. My concern with this KIP is that it assumes > that if the broker config is static, i.e. if the current value of > log.min.cleanable.dirty.ratio=0.6, you can safely create a topic with > default min.cleanable.dirty.ratio relying on that the value to be applied > all the time. This will not work with dynamic broker configs if the broker > defaults can be updated at any time. > > > On Mon, Dec 4, 2017 at 11:22 PM, dan <dan.norw...@gmail.com> wrote: > > > for point 1 i agree, its not too strong. only addition i could come up > with > > is that it allows any utility to have better forwards compatability. a > cli > > written that can inspect how a topic will be created would be able to > give > > insight/expectations about configs that didn't exist at compilation time. > > > > for point 2, i am thinking about a situation where the user creating > topics > > and the user managing brokers are different people with different > > skills/abilities. > > > > so in the given example lets assume a user creating the topic does not > > *really* understand what that config means, so they are likely to just > > leave it as default. and are happy for their admin to change these on the > > broker as needed. > > > > but say we have another user who is creating a topic who has much more > > experience and has done testing, they will be able to determine what the > > value is on the cluster and check to see if it matches expectations or > > needs to be set. possibly if this is set to something incorrect for their > > usecase they will have a reason to verify and speak with the admin about > > their usecase. > > > > > > moreover, i think without this added capability it makes it > > difficult/impossible to accurately use broker defaults for topics. right > > now a user is left to either decide configs a priori and lose this > > functionality, or guess/check what they need to set and end in a possibly > > bad situation until they can get their *live* topic configured. > > > > dan > > > > On Mon, Dec 4, 2017 at 2:50 PM, Dong Lin <lindon...@gmail.com> wrote: > > > > > Hey Dan, > > > > > > Thanks again for the update:) > > > > > > I am not sure I fully understand the points (1) and (2) in the "Always > > > Configure ALL Configs For a Topic". In my previous question, I don't > mean > > > that users should specify full list of topics configs. I mean that user > > can > > > specify the full list of topic configs he/she wants to override. > > > > > > Your KIP proposes to allow user to query the default topic configs. In > my > > > understanding, users want to know the default configs only if he/she > > > already has a specific list of (config, value) pairs for which he/she > > wants > > > to override. The workflow will be that user queries the default > configs, > > > compares the default value with that specific list, and selectively > > > override the configs whose value is different from the default value. > > > Therefore, the alternative solution does not suffer the problem (1) > > because > > > user needs to know that specific list of (config, value) pair anyway. > > Does > > > this make sense? > > > > > > Regarding problem (2), I think you are saying that if the user wants to > > set > > > the min.cleanable.dirty.ratio to be 0.5 and the default value is > > currently > > > set to 0.5, then user would not want to explicitly override the config > > > during topic creation. The purpose is for the min.cleanable.dirty.ratio > > of > > > this topic to be changed to 0.6 if admin change the default > > > min.cleanable.dirty.ratio to 0.6 in the future. > > > > > > But I am not sure this is a reasonable example. If user wants to > > > compare default value of min.cleanable.dirty.ratio with its expected > > value > > > 0.5, then it seems reasonable for user to override it to be 0.5 during > > > topic creation if the default value is currently 0.6. The question is, > > why > > > would user not want to override the default value to be 0.5 if the > > default > > > value is changed from 0.5 to 0.6 later? > > > > > > Thanks, > > > Dong > > > > > > > > > On Mon, Dec 4, 2017 at 2:36 PM, dan <dan.norw...@gmail.com> wrote: > > > > > > > updated again :) > > > > > > > > by having users always set all configs you lose the ability to use > the > > > > broker defaults as intended, since topic configs are overlaid. > example > > in > > > > the kip doc. > > > > > > > > dan > > > > > > > > On Mon, Dec 4, 2017 at 11:47 AM, Dong Lin <lindon...@gmail.com> > wrote: > > > > > > > > > Hey Dan, > > > > > > > > > > Thanks for the update. I just want to push the discussion a bit > > > further. > > > > > Another alternative, which currently is not described in the KIP, > is > > > for > > > > > user to always create the topic with the full list of configs it > may > > > want > > > > > to override. Can you help me understand what is the drawback of > this > > > > > approach? > > > > > > > > > > Thanks, > > > > > Dong > > > > > > > > > > On Mon, Dec 4, 2017 at 11:30 AM, dan <dan.norw...@gmail.com> > wrote: > > > > > > > > > > > Dong, > > > > > > > > > > > > i added a section on current state and workarounds along with my > > > > > arguments > > > > > > for why they are less than optimal to the wiki. but the jist of > it > > is > > > > you > > > > > > can end up with messages in your topic in an incorrect/invalid > > state > > > if > > > > > you > > > > > > do this. > > > > > > > > > > > > thanks, > > > > > > dan > > > > > > > > > > > > On Mon, Dec 4, 2017 at 10:53 AM, Dong Lin <lindon...@gmail.com> > > > wrote: > > > > > > > > > > > > > Hey Dan, > > > > > > > > > > > > > > Thanks for the KIP. Can you help me understand the motivation > by > > > > > > providing > > > > > > > a use-case that can not be easily completed without this KIP? > > > > > > > > > > > > > > It seems that most users will simply create the topic without > > > > worrying > > > > > > > about the default configs. If a user has specific requirement > for > > > the > > > > > > > default configs, he/she can use AdminClient.describeConfigs() > and > > > > > > > AdminClient.alterConfigs() after the topic has been created. > This > > > > seems > > > > > > to > > > > > > > work well. Did I miss something? > > > > > > > > > > > > > > Thanks, > > > > > > > Dong > > > > > > > > > > > > > > > > > > > > > On Mon, Dec 4, 2017 at 9:25 AM, dan <dan.norw...@gmail.com> > > wrote: > > > > > > > > > > > > > > > I would like to start a discussion about KIP-234 > > > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP- > > > > > > > > 234%3A+add+support+for+getting+topic+defaults+from+ > AdminClient > > > > > > > > > > > > > > > > thanks > > > > > > > > dan > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >