Hi Piyush,

We're fast approaching the KIP deadline. Are you actively working on this?
If you're not I can take over.

Thanks,

Andy

On 18 May 2018 at 14:25, Andy Coates <a...@confluent.io> wrote:

> OK I've read it now.
>
> 1. I see you have an example:
> > For example: If I want to fetch all ACLs that match ’topicA*’, it’s not
> possible without introducing new API AND maintaining backwards
> compatibility.
> getAcls takes a Resource, right, which would be either a full resource
> name or 'ALL', i.e. '*', right?  The point of the call is to get all ACLs
> relating to a specific resource, not a partial resource like 'topicA*'.
>  Currently, I'm guessing / half-remembering that if you ask it for ACLs for
> topic 'foo' it doesn't include global 'ALL' ACLs in the list - that would
> be a different call.  With the introduction of partial wildcards I think
> the _most_ backwards compatible change would be to have
> getAcls("topic:foo") to return all the ACLs, including that affect this
> topic. This could include any '*'/ALL Acls, (which would be a small
> backwards compatible change), or exclude them as it current does.
> Excluding any matching partial wildcard acl, e.g. 'f*' would break
> compatibility IMHO.
>
> 2. Example command lines, showing how to add ACLs to specific resources
> that *end* with an asterisk char and adding wildcard-suffixed ACLs, would
> really help clarify the KIP. e.g.
>
> bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181
> --add --allow-principal User:Bob --allow-principal User:Alice --allow-host
> 198.51.100.0 --allow-host 198.51.100.1 --operation Read --group my-app-*
>
> With the above command I can't see how the code can know if the user means
> a literal group called 'my-app-*', or a wildcard suffix for any group
> starting with 'my-app-'. Escaping isn't enough as the escape char can clash
> too, e.g. escaping a literal to 'my-app-\*' can still clash with someone
> wanting a wildcard sufiix matching any group starting with 'my-app-\'.
>
> So there needs to be a syntax change here, I think.  Maybe some new
> command line switch to either explicitly enable or disable
> 'wildcard-suffix' support?  Probably defaulting to wildcard-suffix being
> on, (better experience going forward), though off is more backwards
> compatible.
>
>
> 3. Again, examples of how to store ACLs for specific resources that *end* with
> an asterisk and wildcard-suffix ACLs, with any escaping would really help.
>
>
>
> On 18 May 2018 at 13:55, Andy Coates <a...@confluent.io> wrote:
>
>> Hey Piyush,
>>
>> Thanks for getting this in! :D
>>
>> About to read now. But just quickly...
>>
>> 1. I'll read up on the need for getMatchingAcls - but just playing devils
>> advocate for a moment - if a current caller of getAcls() expects it to
>> return the full set of ACLs for a given resource, would post this change
>> only returning a sub set and requiring them to return getMatchingAcls to
>> get the full set not itself be a break in compatibility? I'm thinking about
>> any tooling / UI / etc people may have built on top of this.  If Im missing
>> the point, then maybe a concrete example, (if you've not already added one
>> to the doc), may help.
>>
>> 2. Something must change on the command line, surely? e.g. as command
>> line user how would the command differ if I wanted to add an ACL onto a
>> group called 'foo*' as opposed to a all groups starting with 'foo'?
>>
>> 3. Thinking this through, I actually bracktracked - I don't think it will
>> work due to path collisions, even with escaping - as the escaped version
>> can still collide.
>>
>> Off to read the doc now.
>>
>> On 18 May 2018 at 13:33, Piyush Vijay <piyushvij...@gmail.com> wrote:
>>
>>> 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=GR
>>> OUP,
>>> >>> > > > > > > > > > > > >> > > > > > > > >> 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
>>> >>> > > > > > > > > > > > >
>>>
>> ...
>
> [Message clipped]

Reply via email to