Thanks Colin, I've updated the KIP with the relevant changes. On Fri, Jan 17, 2020 at 10:17 AM Colin McCabe <cmcc...@apache.org> wrote:
> I thought about this a little bit more, and maybe we can leave in the > enums rather than going with strings. But we need to have an "UNKNOWN" > value for all the enums, so that if a value that the client doesn't > understand is returned, it can get translated to that. This is what we did > with the ACLs API, and it worked out well. > Done. One thing I omitted here was that the API still accepts/returns Strings, since there may be plugins that specify their own types/units. If we'd like to keep it this way, then the UNKNOWN may be unnecessary. Let me know how you'd feel this is best resolved. > On balance, I think we should leave in "units." It could be useful for > future-proofing. > Done. Also added a comment in the ClientQuotaCommand to default to RATE_BPS if no unit is supplied to ease adoption. > Also, since there are other kinds of quotas not covered by this API, we > should rename DescribeQuotas -> DescribeClientQuotas, AlterQuotas -> > AlterClientQuotas, etc. etc. > Done. Updated command and script name, too. > Maybe QuotaFilter doesn't need a "rule" argument to its constructor right > now. We can just do literal matching for everything. Like I said earlier, > I don't think people do a lot of prefixing of principal names. When we > added the "prefix matching" stuff for ACLs, it was mostly to let people do > it for topics. Then we made it more generic because it was easy to do so. > In this case, the API is probably easier to understand if we just do a > literal match. We can always have a follow-on KIP to add fancier filtering > if needed. > Done. > For DescribeEffectiveQuotasResult, if you request all relevant quotas, it > would be nice to see which ones apply and which ones don't. Right now, you > just get a map, but you don't know which quotas are actually in force, and > which are not relevant but might be in the future if a different quota gets > deleted. One way to do this would be to have two maps-- one for applicable > quotas and one for shadowed quotas. > So the way it's specified is that it maps QuotaKey -> Value, however Value is actually defined to have two parts: the entry, and a list of overridden entries (where an entry is the value, along with the source). Perhaps the Value is poorly named, or maybe there's a simpler structure to be had? Thanks, Brian > On Tue, Jan 14, 2020, at 13:32, Brian Byrne wrote: > > Hi Colin, > > > > Your feedback is appreciated, thank you. > > > > On Tue, Jan 14, 2020 at 11:34 AM Colin McCabe <cmcc...@apache.org> > wrote: > > > > > This is probably a nitpick, but it would be nice to specify that this > list > > > is in order of highest priority to lowest. > > > > > > > Done. > > > > > > > Hmm. Maybe --show-overridden or --include-overridden is a better flag > > > name? > > > > > > > Done (--show-overridden). > > > > > > > I think it would be nice to avoid using enums for QuotaEntity#Type, > > > QuotaKey#Type, and QuotaFilter#Rule. With enums, we have to worry > about > > > forwards and backwards compatibility problems. For example, what do > you do > > > when you're querying a broker that has a new value for one of these, > that > > > is not in your enum? In the past, we've created an UNKNOWN value for > enum > > > types to solve this conundrum, but I'm not sure the extra complexity is > > > worth it here. We can jut make them strings and avoid worrying about > the > > > compatibility issues. > > > > > > > Makes sense. Done. > > > > > > > Is QuotaKey#Units really needed? It seems like perhaps QuotaKey#Type > > > could imply the units used. > > > > > > > Possibly, maybe. It depends on how much structure is useful, which > > influences the implementation in the broker. For example, for the > existing > > (global) bytes-per-second types (e.g. consumer byte rate), it may be > useful > > to define them on a per-broker BPS basis, and in some cases, in terms of > > shares. The question becomes whether it'd be better to have a module in > the > > broker that is capable of deducing the effective quota automatically > among > > different units for the same quota type, or whether each should be > handled > > individually. > > > > Given we don't expect many units, and some units may be incompatible with > > others, perhaps it is best to have the unit implicit in the type string, > to > > be handled by the broker appropriately. > > > > I've updated the KIP to reflect this change, which factors out the > > QuotaKey. Let me know your thoughts. > > > > > > > How common is the prefix matching use-case? I haven't heard about > people > > > setting up principal names with a common prefix or anything like > that-- is > > > that commonly done? > > > > > > > It was, in part, for exposition, but would handle a case where principals > > could be prefixed by organization/team name, numbered, or the like. If > you > > prefer I remove the rules and just accept a pattern, that's also an > option. > > > > > > > > > I sort of feel like maybe we could have a simpler API for > describeQuotas > > > where it takes a map of quota entity type to value, and we do a > logical AND > > > On that. I'm not sure if there's really a reason why it needs to be a > > > collection rather than a set, in other words... > > > > > > > For clarification, are you suggesting an interface where the user might > > provide {type=user, name=x} and it would return all entities that match, > > with their resulting quota values? Should I scrap pattern matching for > now, > > since it's a simple extension that can be done at a future time? > > > > Thanks, > > Brian > > > > > > > > > On Wed, Dec 11, 2019, at 15:30, Brian Byrne wrote: > > > > Hello all, > > > > > > > > I'm reviving the discussion for adding a quotas API to the admin > client > > > by > > > > submitting a new proposal. There are some notable changes from > previous > > > > attempts, namely a way to deduce the effective quota for a client > > > (entity), > > > > a way to query for configured quotas, and the concept of "units" on > > > quotas, > > > > among other minor updates. > > > > > > > > Please take a look, and I'll be happy to make any clarifications and > > > > modifications in regards to feedback. > > > > > > > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-546%3A+Add+quota-specific+APIs+to+the+Admin+Client%2C+redux > > > > > > > > Thanks, > > > > Brian > > > > > > > > > >