Colin/Ewen,

i will add changes to bump the API version.

any preferences on the return type for the new method? tbh it seems like
returning a NewTopic could make sense because the ConfigResource for a
TOPIC type does not let me encode `numPartitions`

thanks
dan

On Mon, Dec 11, 2017 at 7:22 PM, Colin McCabe <cmcc...@apache.org> wrote:

> Hi Dan,
>
> The KIP looks good overall.
>
> On Mon, Dec 11, 2017, at 18:28, Ewen Cheslack-Postava wrote:
> > I think the key point is when the kafka admin and user creating topics
> > differ. I think a more realistic example of Dan's point (2) is for
> > retention. I know that realistically, admins aren't just going to
> > randomly
> > drop the broker defaults from 1w to 1d without warning anyone (they'd
> > likely be fired...). But as a user, I may not know the broker configs, if
> > admins have overridden them, etc. I may want a *minimum* of, e.g., 2d.
> > But if the broker defaults are higher such that the admins are confident
> the
> > cluster can handle 1w, I'd rather just fall back on the default value.
>
> Right.  I think this API addresses a similar set of use-cases as adding
> the "validateOnly" boolean for createTopics.  You shouldn't have to
> create a topic to know whether it was possible to create it, or what the
> retention will end up being, etc. etc.
>
> > Now, there's arguably a better solution for that case -- allow topic
> > configs to express a *minimum* value (or maximum depending on the
> > particular config), with the broker config taking precedence if it has a
> > smaller value (or larger in the case of maximums). This lets you express
> > your minimum requirements but allows the cluster to do more if that's the
> > default. However, that would represent a much more significant and
> > invasive change, and honestly I think it is more likely to confuse users.
>
> There always need to be topic defaults, though.  If we add a foobar
> configuration for topics, existing topics will need to get grandfathered
> in with a default foobar.  And they won't be able to set min and max
> ranges, because foobars didn't exist back when the old topics were
> created.
>
> >
> > @Dan, regarding compatibility, this changes behavior without revving the
> > request version number, which normally we only do for things that are
> > reasonably considered bugfixes or were it has no compatibility
> > implications. In this case, older brokers talking to newer AdminClients
> > will presumably return some error. Do we know what the non-null assertion
> > gets converted to and if we're happy with the behavior (i.e. will
> > applications be able to do something reasonable, distinguish it from some
> > completely unrelated error, etc)? Similarly, it's obviously only one
> > implementation using the KIP-4 APIs, but do we know what client-side
> > validation AdminClient is already doing and whether old AdminClients
> > talking to new brokers will see a change in behavior (or do they do
> > client-side validation such that old clients simply wouldn't have access
> > to this new functionality)?
>
> I think we should bump the API version for this or add a new API key.
> Nothing good is going to happen by pretending like this is compatible
> with existing brokers.
>
> Also, I think it would be better just to have a separate function in
> AdminClient rather than overloading the behavior of NULL in
> describeConfigs.  It's not really that much more effort to have another
> AdminClient function, and it's a lot simpler for devs to understand than
> magical NULL behavior in describeConfigs.
>
> best,
> Colin
>
> >
> > -Ewen
> >
> > On Mon, Dec 11, 2017 at 2:11 PM, dan <dan.norw...@gmail.com> wrote:
> >
> > > Dong,
> > >
> > > I agree that it *may* be better for a user to be explicit, however
> there
> > > are a couple reasons they may not.
> > > 1) a user doesn't even know what the options are. imagine writing a
> tool
> > > for users to create topics that steps them through things:
> > >
> > > $ kafka-topics.sh --create
> > > Give your topic a name: my-fav-topic
> > > How many partitions do you want [12]:
> > > What is the minimum in set replica size [2]:
> > > What is the maximum message size [1MB]:
> > > ...
> > >
> > > 2) a user wants to use broker defaults within reason. say they thinke
> they
> > > want min.cleanable.dirty.ratio=.5 and the default is .6. maybe thats
> fine,
> > > or even better for them. since the person maintaining the actual
> cluster
> > > has put thought in to this config. and as the maintainer keeps working
> on
> > > making the cluster run better they can change and tune things on the
> > > cluster level as needed.
> > >
> > > dan
> > >
> > >
> > > On Wed, Dec 6, 2017 at 11:51 AM, Dong Lin <lindon...@gmail.com> wrote:
> > >
> > > > Hey Dan,
> > > >
> > > > I think you are saying that, if user can read the default config
> before
> > > > creating the topic, then this user can make better decision in what
> > > configs
> > > > need to be overwritten. The question here is, how user is going to
> use
> > > this
> > > > config to make the decision.
> > > >
> > > > In my understanding, user will compare the default value with
> expected
> > > > value, and override the config to be expected value if they are
> > > different.
> > > > If this is the only way that the default value can affect user's
> > > decision,
> > > > then it seems OK for user to directly override the config to the
> expected
> > > > value. I am wondering if this solution has some drawback.
> > > >
> > > > On the other hand, maybe there is a more advanced way that the
> default
> > > > value can affect the user's decision. It may be useful to understand
> this
> > > > use-case more specifically. Could you help provide a specific example
> > > here?
> > > >
> > > > Thanks,
> > > > Dong
> > > >
> > > >
> > > > On Wed, Dec 6, 2017 at 11:12 AM, dan <dan.norw...@gmail.com> wrote:
> > > >
> > > > > 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
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
>

Reply via email to