Ready to review. Let me know if something looks missing or not clear.

Thanks


Piyush Vijay

On Fri, May 18, 2018 at 12:54 PM, Piyush Vijay <piyushvij...@gmail.com>
wrote:

> Andy,
>
> 1. Updated the KIP about need for getMatchingAcls(). Basically, it's
> required to add an inspection method without breaking compatibility.
> getAcls() only looks at a single location.
>
> 2. Nothing will change from user's perspective. they will add / delete/
> list ACLs as earlier.
>
> 3. Good point about moving everything to a v2 path. We might still have to
> support snowflakes but I will this better.
>
> I'm giving it a final read. I'll update here once I think it's ready.
>
> Thanks
>
>
> Piyush Vijay
>
> On Fri, May 18, 2018 at 12:18 PM, Piyush Vijay <piyushvij...@gmail.com>
> wrote:
>
>> On it, Andy. It should be out in next 30 mins.
>>
>> On Fri, May 18, 2018 at 12:17 PM Andy Coates <a...@confluent.io> wrote:
>>
>>> Hey Piyush,
>>>
>>> How are you getting on updating the KIP? Can we offer any support? We're
>>> starting to fly really close to the required 72 hours cut off for KIPs.
>>> This doesn't leave much room for resolving any issues any committers
>>> find.
>>> Also, we now require at least three committers to review this KIP today
>>> _and_ find no issues if we're to get this KIP accepted.
>>>
>>> Thanks,
>>>
>>> Andy
>>>
>>> On 18 May 2018 at 01:21, Piyush Vijay <piyushvij...@gmail.com> wrote:
>>>
>>> > Hi Andy,
>>> >
>>> > I still have some minor changes left to the KIP. I'll make them in the
>>> > morning. I'm sorry I got caught up in some other things today. But that
>>> > would still give us 72 hours before the deadline :)
>>> >
>>> > Thanks
>>> >
>>> >
>>> > Piyush Vijay
>>> >
>>> > On Thu, May 17, 2018 at 1:27 PM, Andy Coates <a...@confluent.io>
>>> wrote:
>>> >
>>> > > Hey Piyush - my bad. Sorry.
>>> > >
>>> > > On 17 May 2018 at 13:23, Piyush Vijay <piyushvij...@gmail.com>
>>> wrote:
>>> > >
>>> > > > It's still not complete. I'll drop a message here when I'm done
>>> with
>>> > the
>>> > > > updates.
>>> > > >
>>> > > > Thanks
>>> > > >
>>> > > >
>>> > > > Piyush Vijay
>>> > > >
>>> > > > On Thu, May 17, 2018 at 12:04 PM, Andy Coates <a...@confluent.io>
>>> > wrote:
>>> > > >
>>> > > > > Thanks for the update to the KIP Piyush!
>>> > > > >
>>> > > > > Reading it through again, I've a couple of questions:
>>> > > > >
>>> > > > > 1. Why is there a need for a new 'getMatchingAcls' method, over
>>> the
>>> > > > > existing getAcls method? They both take a Resource instance and
>>> > return
>>> > > a
>>> > > > > set of Acls. What is the difference in their behaviour?
>>> > > > > 2. It's not clear to me from the KIP alone what will change,
>>> from a
>>> > > users
>>> > > > > perspective, on how they add / list / delete ACLs.  I'm assuming
>>> this
>>> > > > won't
>>> > > > > change.
>>> > > > > 3. Writing ACLs to a new location to get around the issues of
>>> > embedded
>>> > > > > wildcards in existing group ACLs makes sense to me - but just a
>>> > > thought,
>>> > > > > will we be writing all new ACLs under this new path, or just
>>> those
>>> > that
>>> > > > are
>>> > > > > partial wildcards?  I'm assuming its the latter, but it could
>>> just be
>>> > > > 'all'
>>> > > > > right? As we could escape illegal chars.  So we could just make
>>> this
>>> > > new
>>> > > > > path 'v2' rather wildcard.
>>> > > > >
>>> > > > > Andy
>>> > > > >
>>> > > > > On 17 May 2018 at 09:32, Colin McCabe <cmcc...@apache.org>
>>> wrote:
>>> > > > >
>>> > > > > > On Thu, May 17, 2018, at 09:28, Piyush Vijay wrote:
>>> > > > > > > I was planning to do that.
>>> > > > > > >
>>> > > > > > > Another unrelated detail is the presence of the support for
>>> ‘*’
>>> > ACL
>>> > > > > > > currently. Looks like we’ll have to keep supporting this as a
>>> > > special
>>> > > > > > case,
>>> > > > > > > even though using a different location for wildcard-suffix
>>> ACLs
>>> > on
>>> > > > Zk.
>>> > > > > >
>>> > > > > > +1.
>>> > > > > >
>>> > > > > > Thanks, Piyush.
>>> > > > > >
>>> > > > > > Colin
>>> > > > > >
>>> > > > > > >
>>> > > > > > >
>>> > > > > > >
>>> > > > > > > On Thu, May 17, 2018 at 9:15 AM Colin McCabe <
>>> cmcc...@apache.org
>>> > >
>>> > > > > wrote:
>>> > > > > > >
>>> > > > > > > > Thanks, Piyush.  +1 for starting the vote soon.
>>> > > > > > > >
>>> > > > > > > > Can you please also add a discussion about escaping?  For
>>> > > example,
>>> > > > > > earlier
>>> > > > > > > > we discussed using backslashes to escape special
>>> characters.
>>> > So
>>> > > > that
>>> > > > > > users
>>> > > > > > > > can create an ACL referring to a literal "foo*" group by
>>> > creating
>>> > > > an
>>> > > > > > ACL
>>> > > > > > > > for "foo\*"  Similarly, you can get a literal backslash
>>> with
>>> > > "\\".
>>> > > > > > This is
>>> > > > > > > > the standard UNIX escaping mechanism.
>>> > > > > > > >
>>> > > > > > > > Also, for the section that says "Changes to AdminClient
>>> (needs
>>> > > > > > > > discussion)", we need a new method that will allow users to
>>> > > escape
>>> > > > > > consumer
>>> > > > > > > > group names and other names.  So you can feed this method
>>> your
>>> > > > > "foo\*"
>>> > > > > > > > consumer group name, and it will give you "foo\\\*", which
>>> is
>>> > > what
>>> > > > > you
>>> > > > > > > > would need to use to create an ACL for this consumer group
>>> in
>>> > > > > > AdminClient.
>>> > > > > > > > I think that's the only change we need to admin client
>>> > > > > > > >
>>> > > > > > > > regards,
>>> > > > > > > > Colin
>>> > > > > > > >
>>> > > > > > > >
>>> > > > > > > > On Thu, May 17, 2018, at 08:55, Piyush Vijay wrote:
>>> > > > > > > > > Hi Rajini/Colin,
>>> > > > > > > > >
>>> > > > > > > > > I will remove the wildcard principals from the scope for
>>> now,
>>> > > > > > updating
>>> > > > > > > > KIP
>>> > > > > > > > > right now and will open it for vote.
>>> > > > > > > > >
>>> > > > > > > > > Thanks
>>> > > > > > > > >
>>> > > > > > > > >
>>> > > > > > > > > Piyush Vijay
>>> > > > > > > > >
>>> > > > > > > > > On Thu, May 17, 2018 at 6:59 AM, Rajini Sivaram <
>>> > > > > > rajinisiva...@gmail.com
>>> > > > > > > > >
>>> > > > > > > > > wrote:
>>> > > > > > > > >
>>> > > > > > > > > > Hi Piyush,
>>> > > > > > > > > >
>>> > > > > > > > > > I have added a PR (https://github.com/apache/
>>> > kafka/pull/5030
>>> > > )
>>> > > > > with
>>> > > > > > > > tests
>>> > > > > > > > > > to
>>> > > > > > > > > > show how group principals can be used for authorization
>>> > with
>>> > > > > custom
>>> > > > > > > > > > principal builders. One of the tests uses SASL. It is
>>> not
>>> > > quite
>>> > > > > the
>>> > > > > > > > same as
>>> > > > > > > > > > a full-fledged user groups, but since it works with all
>>> > > > security
>>> > > > > > > > protocols,
>>> > > > > > > > > > it could be an alternative to wildcarded principals.
>>> > > > > > > > > >
>>> > > > > > > > > > Let us know if we can help in any way to get this KIP
>>> > updated
>>> > > > and
>>> > > > > > > > ready for
>>> > > > > > > > > > voting to include in 2.0.0.
>>> > > > > > > > > >
>>> > > > > > > > > > Thanks,
>>> > > > > > > > > >
>>> > > > > > > > > > Rajini
>>> > > > > > > > > >
>>> > > > > > > > > >
>>> > > > > > > > > > On Wed, May 16, 2018 at 10:21 PM, Colin McCabe <
>>> > > > > cmcc...@apache.org
>>> > > > > > >
>>> > > > > > > > wrote:
>>> > > > > > > > > >
>>> > > > > > > > > > > > On Tue, May 15, 2018 at 7:18 PM, Rajini Sivaram <
>>> > > > > > > > > > rajinisiva...@gmail.com
>>> > > > > > > > > > > >
>>> > > > > > > > > > > > wrote:
>>> > > > > > > > > > > >
>>> > > > > > > > > > > > > Hi Piyush,
>>> > > > > > > > > > > > >
>>> > > > > > > > > > > > > It is possible to configure PrincipalBuilder for
>>> > SASL (
>>> > > > > > > > > > > > > https://cwiki.apache.org/
>>> > confluence/display/KAFKA/KIP-
>>> > > > > > > > > > > > > 189%3A+Improve+principal+build
>>> er+interface+and+add+
>>> > > > > > > > > > support+for+SASL).
>>> > > > > > > > > > > If
>>> > > > > > > > > > > > > that satisfies your requirements, perhaps we can
>>> move
>>> > > > > > wildcarded
>>> > > > > > > > > > > principals
>>> > > > > > > > > > > > > out of this KIP and focus on wildcarded
>>> resources?
>>> > > > > > > > > > >
>>> > > > > > > > > > > +1.
>>> > > > > > > > > > >
>>> > > > > > > > > > > We also need to determine which characters will be
>>> > reserved
>>> > > > for
>>> > > > > > the
>>> > > > > > > > > > > future.  I think previously we thought about @, #,
>>> $, %,
>>> > ^,
>>> > > > &,
>>> > > > > *.
>>> > > > > > > > > > >
>>> > > > > > > > > > > > > On Tue, May 15, 2018 at 7:15 PM, Piyush Vijay <
>>> > > > > > > > > > piyushvij...@gmail.com>
>>> > > > > > > > > > > > > wrote:
>>> > > > > > > > > > > > >
>>> > > > > > > > > > > > >> Hi Colin,
>>> > > > > > > > > > > > >>
>>> > > > > > > > > > > > >> Escaping at this level is making sense to me
>>> but let
>>> > > me
>>> > > > > > think
>>> > > > > > > > more
>>> > > > > > > > > > > and get
>>> > > > > > > > > > > > >> back to you.
>>> > > > > > > > > > >
>>> > > > > > > > > > > Thanks, Piyush.  What questions do you think are
>>> still
>>> > open
>>> > > > > > regarding
>>> > > > > > > > > > > escape characters?
>>> > > > > > > > > > > As Rajini mentioned, we have to get this in soon in
>>> order
>>> > > to
>>> > > > > make
>>> > > > > > > > the KIP
>>> > > > > > > > > > > freeze.
>>> > > > > > > > > > >
>>> > > > > > > > > > > > >>
>>> > > > > > > > > > > > >> But should we not just get rid of one of
>>> AclBinding
>>> > or
>>> > > > > > > > > > > AclBindingFilter
>>> > > > > > > > > > > > >> then? Is there a reason to keep both given that
>>> > > > > > > > AclBindingFilter and
>>> > > > > > > > > > > > >> AclBinding look exact copy of each other after
>>> this
>>> > > > > change?
>>> > > > > > This
>>> > > > > > > > > > will
>>> > > > > > > > > > > be a
>>> > > > > > > > > > > > >> one-time breaking change in APIs marked as
>>> > "Evolving",
>>> > > > but
>>> > > > > > makes
>>> > > > > > > > > > > sense in
>>> > > > > > > > > > > > >> the long term? Am I missing something here?
>>> > > > > > > > > > >
>>> > > > > > > > > > > AclBinding represents an ACL.  AclBindingFilter is a
>>> > filter
>>> > > > > which
>>> > > > > > > > can be
>>> > > > > > > > > > > used to locate AclBinding objects.  Similarly with
>>> > Resource
>>> > > > and
>>> > > > > > > > > > > ResourceFilter.  There is no reason to combine them
>>> > because
>>> > > > > they
>>> > > > > > > > > > represent
>>> > > > > > > > > > > different things.  Although they contain many of the
>>> same
>>> > > > > fields,
>>> > > > > > > > they
>>> > > > > > > > > > are
>>> > > > > > > > > > > not exact copies.  Many fields can be null in
>>> > > > > AclBindingFilter--
>>> > > > > > > > fields
>>> > > > > > > > > > can
>>> > > > > > > > > > > never be null in AclBinding.
>>> > > > > > > > > > >
>>> > > > > > > > > > > For example, you can have an AclBindingFilter that
>>> > matches
>>> > > > > every
>>> > > > > > > > > > > AclBinding.  There is more discussion of this on the
>>> > > original
>>> > > > > KIP
>>> > > > > > > > that
>>> > > > > > > > > > > added ACL support to AdminClient.
>>> > > > > > > > > > >
>>> > > > > > > > > > > best,
>>> > > > > > > > > > > Colin
>>> > > > > > > > > > >
>>> > > > > > > > > > > > >>
>>> > > > > > > > > > > > >>
>>> > > > > > > > > > > > >>
>>> > > > > > > > > > > > >> Piyush Vijay
>>> > > > > > > > > > > > >>
>>> > > > > > > > > > > > >> On Tue, May 15, 2018 at 9:01 AM, Colin McCabe <
>>> > > > > > > > cmcc...@apache.org>
>>> > > > > > > > > > > wrote:
>>> > > > > > > > > > > > >>
>>> > > > > > > > > > > > >> > Hi Piyush,
>>> > > > > > > > > > > > >> >
>>> > > > > > > > > > > > >> > I think AclBinding should operate the same
>>> way as
>>> > > > > > > > > > AclBindingFilter.
>>> > > > > > > > > > > > >> >
>>> > > > > > > > > > > > >> > So you should be able to do something like
>>> this:
>>> > > > > > > > > > > > >> > > AclBindingFilter filter = new
>>> > AclBindingFiler(new
>>> > > > > > > > > > > > >> > ResourceFilter(ResourceType.GROUP, "foo*"))
>>> > > > > > > > > > > > >> > > AclBinding binding = new AclBinding(new
>>> > > > > > > > > > > Resource(ResourceType.GROUP,
>>> > > > > > > > > > > > >> > "foo*"))
>>> > > > > > > > > > > > >> > > assertTrue(filter.matches(binding));
>>> > > > > > > > > > > > >> >
>>> > > > > > > > > > > > >> > Thinking about this more, it's starting to
>>> feel
>>> > > really
>>> > > > > > messy
>>> > > > > > > > to
>>> > > > > > > > > > > create
>>> > > > > > > > > > > > >> new
>>> > > > > > > > > > > > >> > "pattern" constructors for Resource and
>>> > > > > ResourceFilter.  I
>>> > > > > > > > don't
>>> > > > > > > > > > > think
>>> > > > > > > > > > > > >> > people will be able to figure this out.
>>> Maybe we
>>> > > > should
>>> > > > > > just
>>> > > > > > > > > > have a
>>> > > > > > > > > > > > >> > limited compatibility break here, where it is
>>> now
>>> > > > > > required to
>>> > > > > > > > > > escape
>>> > > > > > > > > > > > >> weird
>>> > > > > > > > > > > > >> > consumer group names when creating ACLs for
>>> them.
>>> > > > > > > > > > > > >> >
>>> > > > > > > > > > > > >> > To future-proof this, we should reserve a
>>> bunch of
>>> > > > > > characters
>>> > > > > > > > at
>>> > > > > > > > > > > once,
>>> > > > > > > > > > > > >> > like *, @, $, %, ^, &, +, [, ], etc.  If these
>>> > > > > characters
>>> > > > > > > > appear
>>> > > > > > > > > > in
>>> > > > > > > > > > > a
>>> > > > > > > > > > > > >> > resource name, it should be an error, unless
>>> they
>>> > > are
>>> > > > > > escaped
>>> > > > > > > > > > with a
>>> > > > > > > > > > > > >> > backslash.  That way, we can use them in the
>>> > future.
>>> > > > We
>>> > > > > > > > should
>>> > > > > > > > > > > create a
>>> > > > > > > > > > > > >> > Resource.escapeName function which adds the
>>> > correct
>>> > > > > escape
>>> > > > > > > > > > > characters to
>>> > > > > > > > > > > > >> > resource names (so it would translate foo*
>>> into
>>> > > foo\*,
>>> > > > > > foo+bar
>>> > > > > > > > > > into
>>> > > > > > > > > > > > >> > foo\+bar, etc. etc.
>>> > > > > > > > > > > > >> >
>>> > > > > > > > > > > > >> > best,
>>> > > > > > > > > > > > >> > Colin
>>> > > > > > > > > > > > >> >
>>> > > > > > > > > > > > >> >
>>> > > > > > > > > > > > >> > On Mon, May 14, 2018, at 17:08, Piyush Vijay
>>> > wrote:
>>> > > > > > > > > > > > >> > > Colin,
>>> > > > > > > > > > > > >> > >
>>> > > > > > > > > > > > >> > > createAcls take a AclBinding, however,
>>> instead
>>> > of
>>> > > > > > > > > > > AclBindingFilter.
>>> > > > > > > > > > > > >> What
>>> > > > > > > > > > > > >> > > are your thoughts here?
>>> > > > > > > > > > > > >> > >
>>> > > > > > > > > > > > >> > > public abstract DescribeAclsResult
>>> > > > > > > > describeAcls(AclBindingFilter
>>> > > > > > > > > > > > >> > > filter, DescribeAclsOptions options);
>>> > > > > > > > > > > > >> > >
>>> > > > > > > > > > > > >> > > public abstract CreateAclsResult
>>> > > > > createAcls(Collection<
>>> > > > > > > > > > > AclBinding>
>>> > > > > > > > > > > > >> > > acls, CreateAclsOptions options);
>>> > > > > > > > > > > > >> > >
>>> > > > > > > > > > > > >> > > public abstract DeleteAclsResult
>>> > > > > > > > > > > > >> > > deleteAcls(Collection<AclBindingFilter>
>>> > filters,
>>> > > > > > > > > > > DeleteAclsOptions
>>> > > > > > > > > > > > >> > > options);
>>> > > > > > > > > > > > >> > >
>>> > > > > > > > > > > > >> > >
>>> > > > > > > > > > > > >> > > Thanks
>>> > > > > > > > > > > > >> > >
>>> > > > > > > > > > > > >> > > Piyush Vijay
>>> > > > > > > > > > > > >> > >
>>> > > > > > > > > > > > >> > > On Mon, May 14, 2018 at 9:26 AM, Andy
>>> Coates <
>>> > > > > > > > a...@confluent.io
>>> > > > > > > > > > >
>>> > > > > > > > > > > > >> wrote:
>>> > > > > > > > > > > > >> > >
>>> > > > > > > > > > > > >> > > > +1
>>> > > > > > > > > > > > >> > > >
>>> > > > > > > > > > > > >> > > > On 11 May 2018 at 17:14, Colin McCabe <
>>> > > > > > cmcc...@apache.org
>>> > > > > > > > >
>>> > > > > > > > > > > wrote:
>>> > > > > > > > > > > > >> > > >
>>> > > > > > > > > > > > >> > > > > Hi Andy,
>>> > > > > > > > > > > > >> > > > >
>>> > > > > > > > > > > > >> > > > > I see what you mean.  I guess my thought
>>> > here
>>> > > is
>>> > > > > > that
>>> > > > > > > > if the
>>> > > > > > > > > > > > >> fields
>>> > > > > > > > > > > > >> > are
>>> > > > > > > > > > > > >> > > > > private, we can change it later if we
>>> need
>>> > to.
>>> > > > > > > > > > > > >> > > > >
>>> > > > > > > > > > > > >> > > > > I definitely agree that we should use
>>> the
>>> > > scheme
>>> > > > > you
>>> > > > > > > > > > describe
>>> > > > > > > > > > > for
>>> > > > > > > > > > > > >> > sending
>>> > > > > > > > > > > > >> > > > > ACLs over the wire (just the string +
>>> > version
>>> > > > > > number)
>>> > > > > > > > > > > > >> > > > >
>>> > > > > > > > > > > > >> > > > > cheers,
>>> > > > > > > > > > > > >> > > > > Colin
>>> > > > > > > > > > > > >> > > > >
>>> > > > > > > > > > > > >> > > > >
>>> > > > > > > > > > > > >> > > > > On Fri, May 11, 2018, at 09:39, Andy
>>> Coates
>>> > > > wrote:
>>> > > > > > > > > > > > >> > > > > > i think I'm agreeing with you. I was
>>> > merely
>>> > > > > > suggesting
>>> > > > > > > > > > that
>>> > > > > > > > > > > > >> having
>>> > > > > > > > > > > > >> > an
>>> > > > > > > > > > > > >> > > > > > additional field that controls how the
>>> > > current
>>> > > > > > field
>>> > > > > > > > is
>>> > > > > > > > > > > > >> > interpreted is
>>> > > > > > > > > > > > >> > > > > more
>>> > > > > > > > > > > > >> > > > > > flexible / extensible in the future
>>> than
>>> > > > using a
>>> > > > > > > > 'union'
>>> > > > > > > > > > > style
>>> > > > > > > > > > > > >> > > > approach,
>>> > > > > > > > > > > > >> > > > > > where only one of several possible
>>> fields
>>> > > > should
>>> > > > > > be
>>> > > > > > > > > > > populated.
>>> > > > > > > > > > > > >> But
>>> > > > > > > > > > > > >> > > > it's a
>>> > > > > > > > > > > > >> > > > > > minor thing.
>>> > > > > > > > > > > > >> > > > > >
>>> > > > > > > > > > > > >> > > > > >
>>> > > > > > > > > > > > >> > > > > >
>>> > > > > > > > > > > > >> > > > > >
>>> > > > > > > > > > > > >> > > > > >
>>> > > > > > > > > > > > >> > > > > >
>>> > > > > > > > > > > > >> > > > > > On 10 May 2018 at 09:29, Colin McCabe
>>> <
>>> > > > > > > > cmcc...@apache.org
>>> > > > > > > > > > >
>>> > > > > > > > > > > > >> wrote:
>>> > > > > > > > > > > > >> > > > > >
>>> > > > > > > > > > > > >> > > > > > > Hi Andy,
>>> > > > > > > > > > > > >> > > > > > >
>>> > > > > > > > > > > > >> > > > > > > The issue that I was trying to solve
>>> > here
>>> > > is
>>> > > > > the
>>> > > > > > > > Java
>>> > > > > > > > > > API.
>>> > > > > > > > > > > > >> Right
>>> > > > > > > > > > > > >> > > > now,
>>> > > > > > > > > > > > >> > > > > > > someone can write "new
>>> > > > > > ResourceFilter(ResourceType.
>>> > > > > > > > > > > > >> > TRANSACTIONAL_ID,
>>> > > > > > > > > > > > >> > > > > > > "foo*") and have a ResourceFilter
>>> that
>>> > > > applies
>>> > > > > > to a
>>> > > > > > > > > > > > >> > Transactional ID
>>> > > > > > > > > > > > >> > > > > named
>>> > > > > > > > > > > > >> > > > > > > "foo*".  This has to continue to
>>> work,
>>> > or
>>> > > > else
>>> > > > > > we
>>> > > > > > > > have
>>> > > > > > > > > > > broken
>>> > > > > > > > > > > > >> > > > > compatibility.
>>> > > > > > > > > > > > >> > > > > > >
>>> > > > > > > > > > > > >> > > > > > > I was proposing that there would be
>>> > > > something
>>> > > > > > like
>>> > > > > > > > a new
>>> > > > > > > > > > > > >> function
>>> > > > > > > > > > > > >> > > > like
>>> > > > > > > > > > > > >> > > > > > > ResourceFilter.fromPattern(
>>> > > > > > > > > > ResourceType.TRANSACTIONAL_ID,
>>> > > > > > > > > > > > >> > "foo*")
>>> > > > > > > > > > > > >> > > > > which
>>> > > > > > > > > > > > >> > > > > > > would create a ResourceFilter that
>>> > applied
>>> > > > to
>>> > > > > > > > > > > transactional
>>> > > > > > > > > > > > >> IDs
>>> > > > > > > > > > > > >> > > > > starting
>>> > > > > > > > > > > > >> > > > > > > with "foo", rather than
>>> transactional
>>> > IDs
>>> > > > > named
>>> > > > > > > > "foo*"
>>> > > > > > > > > > > > >> > specifically.
>>> > > > > > > > > > > > >> > > > > > >
>>> > > > > > > > > > > > >> > > > > > > I don't think it's important
>>> whether the
>>> > > > Java
>>> > > > > > class
>>> > > > > > > > has
>>> > > > > > > > > > an
>>> > > > > > > > > > > > >> > integer,
>>> > > > > > > > > > > > >> > > > an
>>> > > > > > > > > > > > >> > > > > > > enum, or two string fields.  The
>>> > important
>>> > > > > > thing is
>>> > > > > > > > that
>>> > > > > > > > > > > > >> there's
>>> > > > > > > > > > > > >> > a
>>> > > > > > > > > > > > >> > > > new
>>> > > > > > > > > > > > >> > > > > > > static function, or new constructor
>>> > > > overload,
>>> > > > > > etc.
>>> > > > > > > > that
>>> > > > > > > > > > > works
>>> > > > > > > > > > > > >> for
>>> > > > > > > > > > > > >> > > > > patterns
>>> > > > > > > > > > > > >> > > > > > > rather than literal strings.
>>> > > > > > > > > > > > >> > > > > > >
>>> > > > > > > > > > > > >> > > > > > > On Thu, May 10, 2018, at 03:30, Andy
>>> > > Coates
>>> > > > > > wrote:
>>> > > > > > > > > > > > >> > > > > > > > Rather than having name and
>>> pattern
>>> > > fields
>>> > > > > on
>>> > > > > > the
>>> > > > > > > > > > > > >> > ResourceFilter,
>>> > > > > > > > > > > > >> > > > > where
>>> > > > > > > > > > > > >> > > > > > > > it’s only valid for one to be
>>> set, and
>>> > > we
>>> > > > > > want to
>>> > > > > > > > > > > restrict
>>> > > > > > > > > > > > >> the
>>> > > > > > > > > > > > >> > > > > character
>>> > > > > > > > > > > > >> > > > > > > > set in case future enhancements
>>> need
>>> > > them,
>>> > > > > we
>>> > > > > > > > could
>>> > > > > > > > > > > instead
>>> > > > > > > > > > > > >> > add a
>>> > > > > > > > > > > > >> > > > new
>>> > > > > > > > > > > > >> > > > > > > > integer ‘nameType’ field, and use
>>> > > > constants
>>> > > > > to
>>> > > > > > > > > > indicate
>>> > > > > > > > > > > how
>>> > > > > > > > > > > > >> the
>>> > > > > > > > > > > > >> > > > name
>>> > > > > > > > > > > > >> > > > > > > > field should be interpreted, e.g.
>>> 0 =
>>> > > > > > literal, 1 =
>>> > > > > > > > > > > wildcard.
>>> > > > > > > > > > > > >> > This
>>> > > > > > > > > > > > >> > > > > would
>>> > > > > > > > > > > > >> > > > > > > > be extendable, e.g we can later
>>> add 2
>>> > =
>>> > > > > > regex, or
>>> > > > > > > > what
>>> > > > > > > > > > > ever,
>>> > > > > > > > > > > > >> > and
>>> > > > > > > > > > > > >> > > > > > > > wouldn’t require any escaping.
>>> > > > > > > > > > > > >> > > > > > >
>>> > > > > > > > > > > > >> > > > > > > This is very user-unfriendly,
>>> though.
>>> > > Users
>>> > > > > > don't
>>> > > > > > > > want
>>> > > > > > > > > > to
>>> > > > > > > > > > > > >> have
>>> > > > > > > > > > > > >> > to
>>> > > > > > > > > > > > >> > > > > > > explicitly supply a version number
>>> when
>>> > > > using
>>> > > > > > the
>>> > > > > > > > API,
>>> > > > > > > > > > > which
>>> > > > > > > > > > > > >> is
>>> > > > > > > > > > > > >> > what
>>> > > > > > > > > > > > >> > > > > this
>>> > > > > > > > > > > > >> > > > > > > would force them to do.  I don't
>>> think
>>> > > users
>>> > > > > are
>>> > > > > > > > going
>>> > > > > > > > > > to
>>> > > > > > > > > > > > >> want to
>>> > > > > > > > > > > > >> > > > > memorize
>>> > > > > > > > > > > > >> > > > > > > that version 4 supprted "+", whereas
>>> > > > version 3
>>> > > > > > only
>>> > > > > > > > > > > supported
>>> > > > > > > > > > > > >> > > > "[0-9]",
>>> > > > > > > > > > > > >> > > > > or
>>> > > > > > > > > > > > >> > > > > > > whatever.
>>> > > > > > > > > > > > >> > > > > > >
>>> > > > > > > > > > > > >> > > > > > > Just as an example, do you remember
>>> > which
>>> > > > > > versions
>>> > > > > > > > of
>>> > > > > > > > > > > > >> > FetchRequest
>>> > > > > > > > > > > > >> > > > > added
>>> > > > > > > > > > > > >> > > > > > > which features?  I don't.  I always
>>> have
>>> > > to
>>> > > > > > look at
>>> > > > > > > > the
>>> > > > > > > > > > > code
>>> > > > > > > > > > > > >> to
>>> > > > > > > > > > > > >> > > > > remember.
>>> > > > > > > > > > > > >> > > > > > >
>>> > > > > > > > > > > > >> > > > > > > Also, escaping is still required any
>>> > time
>>> > > > you
>>> > > > > > > > overload a
>>> > > > > > > > > > > > >> > character to
>>> > > > > > > > > > > > >> > > > > mean
>>> > > > > > > > > > > > >> > > > > > > two things.  Escaping is required
>>> in the
>>> > > > > current
>>> > > > > > > > > > proposal
>>> > > > > > > > > > > to
>>> > > > > > > > > > > > >> be
>>> > > > > > > > > > > > >> > able
>>> > > > > > > > > > > > >> > > > to
>>> > > > > > > > > > > > >> > > > > > > create a pattern that matches only
>>> > "foo*".
>>> > > > > You
>>> > > > > > > > have to
>>> > > > > > > > > > > type
>>> > > > > > > > > > > > >> > "foo\*"
>>> > > > > > > > > > > > >> > > > > It
>>> > > > > > > > > > > > >> > > > > > > would be required if we forced
>>> users to
>>> > > > > specify
>>> > > > > > a
>>> > > > > > > > > > > version, as
>>> > > > > > > > > > > > >> > well.
>>> > > > > > > > > > > > >> > > > > > >
>>> > > > > > > > > > > > >> > > > > > > best,
>>> > > > > > > > > > > > >> > > > > > > Colin
>>> > > > > > > > > > > > >> > > > > > >
>>> > > > > > > > > > > > >> > > > > > > >
>>> > > > > > > > > > > > >> > > > > > > > Sent from my iPhone
>>> > > > > > > > > > > > >> > > > > > > >
>>> > > > > > > > > > > > >> > > > > > > > > On 7 May 2018, at 05:16, Piyush
>>> > Vijay
>>> > > <
>>> > > > > > > > > > > > >> > piyushvij...@gmail.com>
>>> > > > > > > > > > > > >> > > > > wrote:
>>> > > > > > > > > > > > >> > > > > > > > >
>>> > > > > > > > > > > > >> > > > > > > > > Makes sense. I'll update the
>>> KIP.
>>> > > > > > > > > > > > >> > > > > > > > >
>>> > > > > > > > > > > > >> > > > > > > > > Does anyone have any other
>>> comments?
>>> > > :)
>>> > > > > > > > > > > > >> > > > > > > > >
>>> > > > > > > > > > > > >> > > > > > > > > Thanks
>>> > > > > > > > > > > > >> > > > > > > > >
>>> > > > > > > > > > > > >> > > > > > > > >
>>> > > > > > > > > > > > >> > > > > > > > > Piyush Vijay
>>> > > > > > > > > > > > >> > > > > > > > >
>>> > > > > > > > > > > > >> > > > > > > > >> On Thu, May 3, 2018 at 11:55
>>> AM,
>>> > > Colin
>>> > > > > > McCabe <
>>> > > > > > > > > > > > >> > > > cmcc...@apache.org
>>> > > > > > > > > > > > >> > > > > >
>>> > > > > > > > > > > > >> > > > > > > wrote:
>>> > > > > > > > > > > > >> > > > > > > > >>
>>> > > > > > > > > > > > >> > > > > > > > >> Yeah, I guess that's a good
>>> point.
>>> > > It
>>> > > > > > probably
>>> > > > > > > > > > makes
>>> > > > > > > > > > > > >> sense
>>> > > > > > > > > > > > >> > to
>>> > > > > > > > > > > > >> > > > > > > support the
>>> > > > > > > > > > > > >> > > > > > > > >> prefix scheme for consumer
>>> groups
>>> > and
>>> > > > > > > > transactional
>>> > > > > > > > > > > IDs
>>> > > > > > > > > > > > >> as
>>> > > > > > > > > > > > >> > well
>>> > > > > > > > > > > > >> > > > as
>>> > > > > > > > > > > > >> > > > > > > topics.
>>> > > > > > > > > > > > >> > > > > > > > >>
>>> > > > > > > > > > > > >> > > > > > > > >> I agree that the current
>>> situation
>>> > > > where
>>> > > > > > > > anything
>>> > > > > > > > > > > goes in
>>> > > > > > > > > > > > >> > > > consumer
>>> > > > > > > > > > > > >> > > > > > > group
>>> > > > > > > > > > > > >> > > > > > > > >> names and transactional ID
>>> names is
>>> > > not
>>> > > > > > > > ideal.  I
>>> > > > > > > > > > > wish we
>>> > > > > > > > > > > > >> > could
>>> > > > > > > > > > > > >> > > > > > > rewind the
>>> > > > > > > > > > > > >> > > > > > > > >> clock and impose restrictions
>>> on
>>> > the
>>> > > > > names.
>>> > > > > > > > > > > However, it
>>> > > > > > > > > > > > >> > doesn't
>>> > > > > > > > > > > > >> > > > > seem
>>> > > > > > > > > > > > >> > > > > > > > >> practical at the moment.
>>> Adding
>>> > new
>>> > > > > > > > restrictions
>>> > > > > > > > > > > would
>>> > > > > > > > > > > > >> > break a
>>> > > > > > > > > > > > >> > > > > lot of
>>> > > > > > > > > > > > >> > > > > > > > >> existing users after an
>>> upgrade.
>>> > It
>>> > > > > would
>>> > > > > > be a
>>> > > > > > > > > > > really
>>> > > > > > > > > > > > >> bad
>>> > > > > > > > > > > > >> > > > upgrade
>>> > > > > > > > > > > > >> > > > > > > > >> experience.
>>> > > > > > > > > > > > >> > > > > > > > >>
>>> > > > > > > > > > > > >> > > > > > > > >> However, I think we can support
>>> > this
>>> > > > in a
>>> > > > > > > > > > compatible
>>> > > > > > > > > > > way.
>>> > > > > > > > > > > > >> > From
>>> > > > > > > > > > > > >> > > > > the
>>> > > > > > > > > > > > >> > > > > > > > >> perspective of AdminClient, we
>>> just
>>> > > > have
>>> > > > > to
>>> > > > > > > > add a
>>> > > > > > > > > > new
>>> > > > > > > > > > > > >> field
>>> > > > > > > > > > > > >> > to
>>> > > > > > > > > > > > >> > > > > > > > >> ResourceFilter.  Currently, it
>>> has
>>> > > two
>>> > > > > > fields,
>>> > > > > > > > > > > > >> resourceType
>>> > > > > > > > > > > > >> > and
>>> > > > > > > > > > > > >> > > > > name:
>>> > > > > > > > > > > > >> > > > > > > > >>
>>> > > > > > > > > > > > >> > > > > > > > >>> /**
>>> > > > > > > > > > > > >> > > > > > > > >>> * A filter which matches
>>> Resource
>>> > > > > objects.
>>> > > > > > > > > > > > >> > > > > > > > >>> *
>>> > > > > > > > > > > > >> > > > > > > > >>> * The API for this class is
>>> still
>>> > > > > evolving
>>> > > > > > > > and we
>>> > > > > > > > > > > may
>>> > > > > > > > > > > > >> break
>>> > > > > > > > > > > > >> > > > > > > > >> compatibility in minor
>>> releases, if
>>> > > > > > necessary.
>>> > > > > > > > > > > > >> > > > > > > > >>> */
>>> > > > > > > > > > > > >> > > > > > > > >>> @InterfaceStability.Evolving
>>> > > > > > > > > > > > >> > > > > > > > >>> public class ResourceFilter {
>>> > > > > > > > > > > > >> > > > > > > > >>>    private final ResourceType
>>> > > > > > resourceType;
>>> > > > > > > > > > > > >> > > > > > > > >>>    private final String name;
>>> > > > > > > > > > > > >> > > > > > > > >>
>>> > > > > > > > > > > > >> > > > > > > > >> We can add a third field,
>>> pattern.
>>> > > > > > > > > > > > >> > > > > > > > >>
>>> > > > > > > > > > > > >> > > > > > > > >> So the API will basically be,
>>> if I
>>> > > > > create a
>>> > > > > > > > > > > > >> > > > > > > ResourceFilter(resourceType=GROUP,
>>> > > > > > > > > > > > >> > > > > > > > >> name=foo*, pattern=null), it
>>> > applies
>>> > > > only
>>> > > > > > to
>>> > > > > > > > the
>>> > > > > > > > > > > consumer
>>> > > > > > > > > > > > >> > group
>>> > > > > > > > > > > > >> > > > > named
>>> > > > > > > > > > > > >> > > > > > > > >> "foo*".  If I create a
>>> > > > > > > > > > ResourceFilter(resourceType=GR
>>> > > > > > > > > > > > >> OUP,
>>> > > > > > > > > > > > >> > > > > name=null,
>>> > > > > > > > > > > > >> > > > > > > > >> pattern=foo*), it applies to
>>> any
>>> > > > consumer
>>> > > > > > group
>>> > > > > > > > > > > starting
>>> > > > > > > > > > > > >> in
>>> > > > > > > > > > > > >> > > > "foo".
>>> > > > > > > > > > > > >> > > > > > > name
>>> > > > > > > > > > > > >> > > > > > > > >> and pattern cannot be both set
>>> at
>>> > the
>>> > > > > same
>>> > > > > > > > time.
>>> > > > > > > > > > > This
>>> > > > > > > > > > > > >> > preserves
>>> > > > > > > > > > > > >> > > > > > > > >> compatibility at the
>>> AdminClient
>>> > > level.
>>> > > > > > > > > > > > >> > > > > > > > >>
>>> > > > > > > > > > > > >> > > > > > > > >> It's possible that we will
>>> want to
>>> > > add
>>> > > > > more
>>> > > > > > > > types
>>> > > > > > > > > > of
>>> > > > > > > > > > > > >> > pattern in
>>> > > > > > > > > > > > >> > > > > the
>>> > > > > > > > > > > > >> > > > > > > > >> future.  So we should reserve
>>> > > "special
>>> > > > > > > > characters"
>>> > > > > > > > > > > such
>>> > > > > > > > > > > > >> as
>>> > > > > > > > > > > > >> > +, /,
>>> > > > > > > > > > > > >> > > > > &,
>>> > > > > > > > > > > > >> > > > > > > %, #,
>>> > > > > > > > > > > > >> > > > > > > > >> $, etc.  These characters
>>> should be
>>> > > > > > treated as
>>> > > > > > > > > > > special
>>> > > > > > > > > > > > >> > unless
>>> > > > > > > > > > > > >> > > > > they are
>>> > > > > > > > > > > > >> > > > > > > > >> prefixed with a backslash to
>>> escape
>>> > > > them.
>>> > > > > > This
>>> > > > > > > > > > will
>>> > > > > > > > > > > > >> allow
>>> > > > > > > > > > > > >> > us to
>>> > > > > > > > > > > > >> > > > > add
>>> > > > > > > > > > > > >> > > > > > > > >> support for using these
>>> characters
>>> > in
>>> > > > the
>>> > > > > > > > future
>>> > > > > > > > > > > without
>>> > > > > > > > > > > > >> > > > breaking
>>> > > > > > > > > > > > >> > > > > > > > >> compatibility.
>>> > > > > > > > > > > > >> > > > > > > > >>
>>> > > > > > > > > > > > >> > > > > > > > >> At the protocol level, we need
>>> a
>>> > new
>>> > > > API
>>> > > > > > > > version
>>> > > > > > > > > > for
>>> > > > > > > > > > > > >> > > > > > > CreateAclsRequest /
>>> > > > > > > > > > > > >> > > > > > > > >> DeleteAclsRequest.  The new API
>>> > > version
>>> > > > > > will
>>> > > > > > > > send
>>> > > > > > > > > > all
>>> > > > > > > > > > > > >> > special
>>> > > > > > > > > > > > >> > > > > > > characters
>>> > > > > > > > > > > > >> > > > > > > > >> over the wire escaped rather
>>> than
>>> > > > > directly.
>>> > > > > > > > (So
>>> > > > > > > > > > > there
>>> > > > > > > > > > > > >> is no
>>> > > > > > > > > > > > >> > > > need
>>> > > > > > > > > > > > >> > > > > for
>>> > > > > > > > > > > > >> > > > > > > the
>>> > > > > > > > > > > > >> > > > > > > > >> equivalent of both "name" and
>>> > > > "pattern"--
>>> > > > > > we
>>> > > > > > > > > > > translate
>>> > > > > > > > > > > > >> name
>>> > > > > > > > > > > > >> > > > into a
>>> > > > > > > > > > > > >> > > > > > > validly
>>> > > > > > > > > > > > >> > > > > > > > >> escaped pattern that matches
>>> only
>>> > one
>>> > > > > > thing, by
>>> > > > > > > > > > > adding
>>> > > > > > > > > > > > >> > escape
>>> > > > > > > > > > > > >> > > > > > > characters as
>>> > > > > > > > > > > > >> > > > > > > > >> appropriate.)  The broker will
>>> > > validate
>>> > > > > the
>>> > > > > > > > new API
>>> > > > > > > > > > > > >> version
>>> > > > > > > > > > > > >> > and
>>> > > > > > > > > > > > >> > > > > reject
>>> > > > > > > > > > > > >> > > > > > > > >> malformed of unsupported
>>> patterns.
>>> > > > > > > > > > > > >> > > > > > > > >>
>>> > > > > > > > > > > > >> > > > > > > > >> At the ZK level, we can
>>> introduce a
>>> > > > > > protocol
>>> > > > > > > > > > version
>>> > > > > > > > > > > to
>>> > > > > > > > > > > > >> the
>>> > > > > > > > > > > > >> > data
>>> > > > > > > > > > > > >> > > > > in
>>> > > > > > > > > > > > >> > > > > > > ZK--
>>> > > > > > > > > > > > >> > > > > > > > >> or store it under a different
>>> root.
>>> > > > > > > > > > > > >> > > > > > > > >>
>>> > > > > > > > > > > > >> > > > > > > > >> best,
>>> > > > > > > > > > > > >> > > > > > > > >> Colin
>>> > > > > > > > > > > > >> > > > > > > > >>
>>> > > > > > > > > > > > >> > > > > > > > >>
>>> > > > > > > > > > > > >> > > > > > > > >>> On Wed, May 2, 2018, at 18:09,
>>> > > Piyush
>>> > > > > > Vijay
>>> > > > > > > > wrote:
>>> > > > > > > > > > > > >> > > > > > > > >>> Thank you everyone for the
>>> > interest
>>> > > > and,
>>> > > > > > > > prompt
>>> > > > > > > > > > and
>>> > > > > > > > > > > > >> > valuable
>>> > > > > > > > > > > > >> > > > > > > feedback. I
>>> > > > > > > > > > > > >> > > > > > > > >>> really appreciate the quick
>>> > > > turnaround.
>>> > > > > > I’ve
>>> > > > > > > > tried
>>> > > > > > > > > > > to
>>> > > > > > > > > > > > >> > organize
>>> > > > > > > > > > > > >> > > > > the
>>> > > > > > > > > > > > >> > > > > > > > >> comments
>>> > > > > > > > > > > > >> > > > > > > > >>> into common headings. See my
>>> > replies
>>> > > > > > below:
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>> *Case of ‘*’ might already be
>>> > > present
>>> > > > in
>>> > > > > > > > consumer
>>> > > > > > > > > > > groups
>>> > > > > > > > > > > > >> > and
>>> > > > > > > > > > > > >> > > > > > > > >> transactional
>>> > > > > > > > > > > > >> > > > > > > > >>> ids*
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>   - We definitely need
>>> wildcard
>>> > ACLs
>>> > > > > > support
>>> > > > > > > > for
>>> > > > > > > > > > > > >> resources
>>> > > > > > > > > > > > >> > like
>>> > > > > > > > > > > > >> > > > > > > consumer
>>> > > > > > > > > > > > >> > > > > > > > >>>   groups and transactional
>>> ids for
>>> > > the
>>> > > > > > reason
>>> > > > > > > > Andy
>>> > > > > > > > > > > > >> > mentioned. A
>>> > > > > > > > > > > > >> > > > > big
>>> > > > > > > > > > > > >> > > > > > > win
>>> > > > > > > > > > > > >> > > > > > > > >> of
>>> > > > > > > > > > > > >> > > > > > > > >>>   this feature is that service
>>> > > > providers
>>> > > > > > don’t
>>> > > > > > > > > > have
>>> > > > > > > > > > > to
>>> > > > > > > > > > > > >> > track
>>> > > > > > > > > > > > >> > > > and
>>> > > > > > > > > > > > >> > > > > keep
>>> > > > > > > > > > > > >> > > > > > > > >>>   up-to-date all the consumer
>>> > groups
>>> > > > > their
>>> > > > > > > > > > > customers are
>>> > > > > > > > > > > > >> > using.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - I agree with Andy’s
>>> thoughts
>>> > on
>>> > > > the
>>> > > > > > two
>>> > > > > > > > > > possible
>>> > > > > > > > > > > > >> ways.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - My vote would be to do the
>>> > > > breaking
>>> > > > > > change
>>> > > > > > > > > > > because
>>> > > > > > > > > > > > >> we
>>> > > > > > > > > > > > >> > > > should
>>> > > > > > > > > > > > >> > > > > > > > >> restrict
>>> > > > > > > > > > > > >> > > > > > > > >>>   the format of consumer
>>> groups
>>> > and
>>> > > > > > > > transactional
>>> > > > > > > > > > > ids
>>> > > > > > > > > > > > >> > sooner
>>> > > > > > > > > > > > >> > > > than
>>> > > > > > > > > > > > >> > > > > > > later.
>>> > > > > > > > > > > > >> > > > > > > > >>>      - Consumer groups and
>>> > > > transactional
>>> > > > > > ids
>>> > > > > > > > are
>>> > > > > > > > > > > basic
>>> > > > > > > > > > > > >> > Kafka
>>> > > > > > > > > > > > >> > > > > > > concepts.
>>> > > > > > > > > > > > >> > > > > > > > >>>      There is a lot of value
>>> in
>>> > > > having a
>>> > > > > > > > defined
>>> > > > > > > > > > > naming
>>> > > > > > > > > > > > >> > > > > convention on
>>> > > > > > > > > > > > >> > > > > > > > >> these
>>> > > > > > > > > > > > >> > > > > > > > >>>      concepts.
>>> > > > > > > > > > > > >> > > > > > > > >>>      - This will help us not
>>> run
>>> > > into
>>> > > > > more
>>> > > > > > > > issues
>>> > > > > > > > > > > down
>>> > > > > > > > > > > > >> the
>>> > > > > > > > > > > > >> > > > line.
>>> > > > > > > > > > > > >> > > > > > > > >>>      - I’m not sure if people
>>> > > actually
>>> > > > > use
>>> > > > > > > > ‘*’ in
>>> > > > > > > > > > > their
>>> > > > > > > > > > > > >> > > > consumer
>>> > > > > > > > > > > > >> > > > > > > group
>>> > > > > > > > > > > > >> > > > > > > > >>>      names anyway.
>>> > > > > > > > > > > > >> > > > > > > > >>>      - Escaping ‘*’ isn’t
>>> trivial
>>> > > > > because
>>> > > > > > ‘\’
>>> > > > > > > > is
>>> > > > > > > > > > an
>>> > > > > > > > > > > > >> allowed
>>> > > > > > > > > > > > >> > > > > character
>>> > > > > > > > > > > > >> > > > > > > > >> too.
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>> *Why introduce two new APIs?*
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>   - It’s possible to make this
>>> > > change
>>> > > > > > without
>>> > > > > > > > > > > > >> introducing
>>> > > > > > > > > > > > >> > new
>>> > > > > > > > > > > > >> > > > > APIs
>>> > > > > > > > > > > > >> > > > > > > but
>>> > > > > > > > > > > > >> > > > > > > > >> new
>>> > > > > > > > > > > > >> > > > > > > > >>>   APIs are required for
>>> > inspection.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - For example: If I want to
>>> > fetch
>>> > > > all
>>> > > > > > ACLs
>>> > > > > > > > that
>>> > > > > > > > > > > match
>>> > > > > > > > > > > > >> > > > > ’topicA*’,
>>> > > > > > > > > > > > >> > > > > > > it’s
>>> > > > > > > > > > > > >> > > > > > > > >>>   not possible without
>>> introducing
>>> > > new
>>> > > > > > APIs
>>> > > > > > > > AND
>>> > > > > > > > > > > > >> maintaining
>>> > > > > > > > > > > > >> > > > > backwards
>>> > > > > > > > > > > > >> > > > > > > > >>>   compatibility.
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>> *Matching multiple hosts*
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>   - Rajini is right that
>>> wildcard
>>> > > ACLs
>>> > > > > > aren’t
>>> > > > > > > > the
>>> > > > > > > > > > > > >> correct
>>> > > > > > > > > > > > >> > fit
>>> > > > > > > > > > > > >> > > > for
>>> > > > > > > > > > > > >> > > > > > > > >>>   specifying range of hosts.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - We will rely on KIP-252
>>> for
>>> > the
>>> > > > > proper
>>> > > > > > > > > > > > >> functionality (
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>> https://cwiki.apache.org/
>>> > > > > > > > > > > confluence/display/KAFKA/KIP-
>>> > > > > > > > > > > > >> > > > > > > > >> 252+-+Extend+ACLs+to+allow+
>>> > > > > > > > > > > filtering+based+on+ip+ranges+
>>> > > > > > > > > > > > >> > > > > and+subnets
>>> > > > > > > > > > > > >> > > > > > > > >>>   )
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>> *Implementation of matching
>>> > > algorithm
>>> > > > > and
>>> > > > > > > > > > > performance
>>> > > > > > > > > > > > >> > concerns*
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>   - Updated the KIP with an
>>> > > > > > implementation.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - Andy, you’re right. The
>>> length
>>> > > > > doesn’t
>>> > > > > > > > play a
>>> > > > > > > > > > > part.
>>> > > > > > > > > > > > >> The
>>> > > > > > > > > > > > >> > > > > request
>>> > > > > > > > > > > > >> > > > > > > will
>>> > > > > > > > > > > > >> > > > > > > > >>>   be authorized *iff* there
>>> is at
>>> > > > least
>>> > > > > > one
>>> > > > > > > > > > matching
>>> > > > > > > > > > > > >> ALLOW
>>> > > > > > > > > > > > >> > and
>>> > > > > > > > > > > > >> > > > no
>>> > > > > > > > > > > > >> > > > > > > > >> matching
>>> > > > > > > > > > > > >> > > > > > > > >>>   DENY irrespective of the
>>> prefix
>>> > > > > length.
>>> > > > > > > > Included
>>> > > > > > > > > > > this
>>> > > > > > > > > > > > >> > detail
>>> > > > > > > > > > > > >> > > > > in the
>>> > > > > > > > > > > > >> > > > > > > > >> KIP.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - Since everything is
>>> stored in
>>> > > > > memory,
>>> > > > > > the
>>> > > > > > > > > > > > >> performance
>>> > > > > > > > > > > > >> > hit
>>> > > > > > > > > > > > >> > > > > isn’t
>>> > > > > > > > > > > > >> > > > > > > > >> really
>>> > > > > > > > > > > > >> > > > > > > > >>>   significantly worse than the
>>> > > current
>>> > > > > > > > behavior.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - Stephane’s performance
>>> > > improvement
>>> > > > > > > > suggestion
>>> > > > > > > > > > > is a
>>> > > > > > > > > > > > >> > great
>>> > > > > > > > > > > > >> > > > > idea but
>>> > > > > > > > > > > > >> > > > > > > > >>>   orthogonal.
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>> *Why extend this for
>>> principal?*
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>   - Thanks for the amazing
>>> points
>>> > > > > Rajini.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - There is a use case where
>>> ALL
>>> > > > > > principals
>>> > > > > > > > from
>>> > > > > > > > > > > an org
>>> > > > > > > > > > > > >> > might
>>> > > > > > > > > > > > >> > > > > want
>>> > > > > > > > > > > > >> > > > > > > to
>>> > > > > > > > > > > > >> > > > > > > > >>>   access fix set of topics.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - User group functionality
>>> is
>>> > > > > currently
>>> > > > > > > > missing.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - IIRC SASL doesn’t use
>>> custom
>>> > > > > principal
>>> > > > > > > > > > builder.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - However, prefixing is not
>>> the
>>> > > > right
>>> > > > > > > > choice in
>>> > > > > > > > > > > all
>>> > > > > > > > > > > > >> > cases.
>>> > > > > > > > > > > > >> > > > > Agreed.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - Thoughts?
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>> *Changes to AdminClient to
>>> support
>>> > > > > > wildcard
>>> > > > > > > > ACLs*
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>   - Thanks Colin for the
>>> > > > implementation.
>>> > > > > > It’s
>>> > > > > > > > good
>>> > > > > > > > > > > to
>>> > > > > > > > > > > > >> have
>>> > > > > > > > > > > > >> > you
>>> > > > > > > > > > > > >> > > > > and
>>> > > > > > > > > > > > >> > > > > > > > >>> others
>>> > > > > > > > > > > > >> > > > > > > > >>>   here for the expert
>>> opinions.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - The current implementation
>>> > uses
>>> > > > two
>>> > > > > > > > classes:
>>> > > > > > > > > > > > >> > AclBinding and
>>> > > > > > > > > > > > >> > > > > > > > >>>   AclBindingFilter. (
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>> https://github.com/apache/
>>> > > > > > > > > > > kafka/blob/trunk/clients/src/
>>> > > > > > > > > > > > >> > > > > > > > >> main/java/org/apache/kafka/
>>> > > > > > > > > > > common/acl/AclBinding.java
>>> > > > > > > > > > > > >> > > > > > > > >>>   and
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>> https://github.com/apache/
>>> > > > > > > > > > > kafka/blob/trunk/clients/src/
>>> > > > > > > > > > > > >> > > > > > > > >> main/java/org/apache/kafka/com
>>> > > > > > > > > > > > >> mon/acl/AclBindingFilter.java
>>> > > > > > > > > > > > >> > > > > > > > >>>   )
>>> > > > > > > > > > > > >> > > > > > > > >>>   - AclBinding is definition
>>> of an
>>> > > > Acl.
>>> > > > > > It’s
>>> > > > > > > > used
>>> > > > > > > > > > to
>>> > > > > > > > > > > > >> create
>>> > > > > > > > > > > > >> > > > ACLs.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - AclBindingFilter is used
>>> to
>>> > > fetch
>>> > > > or
>>> > > > > > > > delete
>>> > > > > > > > > > > > >> “matching’
>>> > > > > > > > > > > > >> > > > ACLs.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - In the context of wildcard
>>> > > > suffixed
>>> > > > > > ACLs,
>>> > > > > > > > a
>>> > > > > > > > > > > stored
>>> > > > > > > > > > > > >> ACL
>>> > > > > > > > > > > > >> > may
>>> > > > > > > > > > > > >> > > > > have
>>> > > > > > > > > > > > >> > > > > > > ‘*’
>>> > > > > > > > > > > > >> > > > > > > > >>> in
>>> > > > > > > > > > > > >> > > > > > > > >>>   it. *It really removes the
>>> > > > distinction
>>> > > > > > > > between
>>> > > > > > > > > > > these
>>> > > > > > > > > > > > >> two
>>> > > > > > > > > > > > >> > > > > classes.*
>>> > > > > > > > > > > > >> > > > > > > > >>>   - The current implementation
>>> > uses
>>> > > > > > ‘null’ to
>>> > > > > > > > > > define
>>> > > > > > > > > > > > >> > wildcard
>>> > > > > > > > > > > > >> > > > ACL
>>> > > > > > > > > > > > >> > > > > > > > >>> (‘*’). I
>>> > > > > > > > > > > > >> > > > > > > > >>>   think it’s not a good
>>> pattern
>>> > and
>>> > > we
>>> > > > > > should
>>> > > > > > > > use
>>> > > > > > > > > > > ‘*’
>>> > > > > > > > > > > > >> for
>>> > > > > > > > > > > > >> > the
>>> > > > > > > > > > > > >> > > > > > > wildcard
>>> > > > > > > > > > > > >> > > > > > > > >>> ACL (
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>> https://github.com/apache/
>>> > > > > > > > > > > kafka/blob/trunk/clients/src/
>>> > > > > > > > > > > > >> > > > > > > > >> main/java/org/apache/kafka/
>>> > > > > > > > > > > common/acl/AclBindingFilter.
>>> > > > > > > > > > > > >> > java#L39
>>> > > > > > > > > > > > >> > > > > > > > >>>   and
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>> https://github.com/apache/
>>> > > > > > > > > > > kafka/blob/trunk/clients/src/
>>> > > > > > > > > > > > >> > > > > > > > >> main/java/org/apache/kafka/
>>> > > > > > common/resource/
>>> > > > > > > > > > > > >> > > > > ResourceFilter.java#L37
>>> > > > > > > > > > > > >> > > > > > > > >>>   ).
>>> > > > > > > > > > > > >> > > > > > > > >>>   - However, the above two
>>> changes
>>> > > are
>>> > > > > > > > breaking
>>> > > > > > > > > > > change
>>> > > > > > > > > > > > >> but
>>> > > > > > > > > > > > >> > it
>>> > > > > > > > > > > > >> > > > > should
>>> > > > > > > > > > > > >> > > > > > > be
>>> > > > > > > > > > > > >> > > > > > > > >>>   acceptable because the API
>>> is
>>> > > marked
>>> > > > > > with
>>> > > > > > > > > > > > >> > > > > > > > >>> @InterfaceStability.Evolving.
>>> > > > > > > > > > > > >> > > > > > > > >>>   - If everyone agrees to the
>>> > above
>>> > > > two
>>> > > > > > > > changes
>>> > > > > > > > > > > (merging
>>> > > > > > > > > > > > >> > the
>>> > > > > > > > > > > > >> > > > two
>>> > > > > > > > > > > > >> > > > > > > > >>> classes
>>> > > > > > > > > > > > >> > > > > > > > >>>   and using non-null values
>>> for
>>> > > > blanket
>>> > > > > > > > access),
>>> > > > > > > > > > the
>>> > > > > > > > > > > > >> only
>>> > > > > > > > > > > > >> > other
>>> > > > > > > > > > > > >> > > > > > > change
>>> > > > > > > > > > > > >> > > > > > > > >>> is
>>> > > > > > > > > > > > >> > > > > > > > >>>   using the matching algorithm
>>> > from
>>> > > > the
>>> > > > > > KIP to
>>> > > > > > > > > > match
>>> > > > > > > > > > > > >> ACLs.
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>> Other comments:
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>   - > It may be worth
>>> excluding
>>> > > > > delegation
>>> > > > > > > > token
>>> > > > > > > > > > > ACLs
>>> > > > > > > > > > > > >> from
>>> > > > > > > > > > > > >> > > > using
>>> > > > > > > > > > > > >> > > > > > > > >> prefixed
>>> > > > > > > > > > > > >> > > > > > > > >>>   wildcards since it doesn't
>>> make
>>> > > much
>>> > > > > > sense.
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>> I want to ask for
>>> clarification on
>>> > > > what
>>> > > > > > > > delegation
>>> > > > > > > > > > > token
>>> > > > > > > > > > > > >> > ACLs
>>> > > > > > > > > > > > >> > > > are
>>> > > > > > > > > > > > >> > > > > > > before
>>> > > > > > > > > > > > >> > > > > > > > >>> commenting. Wildcard suffixed
>>> ACLs
>>> > > are
>>> > > > > > > > supported
>>> > > > > > > > > > > only
>>> > > > > > > > > > > > >> for
>>> > > > > > > > > > > > >> > > > > resource
>>> > > > > > > > > > > > >> > > > > > > and
>>> > > > > > > > > > > > >> > > > > > > > >>> principal names.
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>
>>> > > > > > > > > > > > >> > > > > > > > >>>   - A quick read makes me
>>> believe
>>> > > that
>>> > > > > > I’ve
>>> > > > > > > > fixed
>>> > > > > > > > > > > the
>>> > > > > > > > > > > > >> > > > formatting
>>> > > > > > > > > > > > >> > > > > > > issues
>>> > > > > > > > > > > > >> > > > > > > > >>>   reported by Ted. Let me
>>> know if
>>> > > > >
>>
>>
>

Reply via email to