Thanks!

On Wed, Apr 20, 2016 at 8:00 PM, Ashish Singh <asi...@cloudera.com> wrote:
> OK, in that case we can move the authorizer interface and related classes
> to existing org.apache.kafka.common.security.auth. I have updated KIP to
> reflect this.
>
>
> On Wed, Apr 20, 2016 at 4:52 PM, Jay Kreps <j...@confluent.io> wrote:
>
>> Yeah our take when we came up with this approach was pretty much what Gwen
>> is saying:
>> 1. In practice you either need the server or client to do anything and the
>> server depends on the client so bundling common and client doesn't hurt.
>> 2. Our experience with more granular jars (not in Kafka) was that although
>> it feels "cleaner" the complexity comes quickly for a few reasons. First it
>> gets hard to detangle the more granular packages (e.g. somebody needs to
>> use something in Utils in the authorizer package and then you no longer
>> have a dag). Second people end up mixing and matching in ways you didn't
>> anticipate which causes crazy heisenbugs (e.g. they depend on two different
>> versions of the client via transitive dependencies and somehow end up with
>> client version x and common version y due to duplicate entries on the class
>> path).
>>
>> I'm not really arguing that this approach is superior, I'm just saying this
>> is the current approach and that is the reason we went with it.
>>
>> So I could see splitting common and client and you could even further split
>> the producer and consumer and multiple sub-jars in common, and if this was
>> the approach I think a separate authorizer jar would make sense. But in the
>> current approach I think the authorizer stuff would be most consistent as a
>> public package in common. It is true that this means you build against more
>> stuff then needed but I'm not sure this has any negative implications in
>> practice.
>>
>> -Jay
>>
>> On Wed, Apr 20, 2016 at 4:17 PM, Gwen Shapira <g...@confluent.io> wrote:
>>
>> > But its just a compile-time dependency, right?
>> > Since the third-party-authorizer-implementation will be installed on a
>> > broker where the common classes will exist anyway.
>> >
>> >
>> > On Wed, Apr 20, 2016 at 3:13 PM, Ashish Singh <asi...@cloudera.com>
>> wrote:
>> > > Jay,
>> > >
>> > > Thanks for the info. I think having common in clients jar makes sense,
>> as
>> > > their is no direct usage of it. i.e., without depending on or using
>> > > clients. Authorizer is a bit different, as third party implementations
>> do
>> > > not really need anything from clients or server, all they need is
>> > > Authorizer interface and related classes. If we move authorizer into
>> > > common, then third party implementations will have to depend on
>> clients.
>> > > Though third party implementations depending on clients is not a big
>> > > problem, right now they depend on core, I think it is cleaner to have
>> > > dependency on minimal modules. Would you agree?
>> > >
>> > > On Wed, Apr 20, 2016 at 2:27 PM, Jay Kreps <j...@confluent.io> wrote:
>> > >
>> > >> I think it's great that we're moving the interface to java and fixing
>> > some
>> > >> of the naming foibles.
>> > >>
>> > >> This isn't explicit in the KIP which just refers to the java package
>> > name
>> > >> (I think), but it looks like you are proposing adding a new authorizer
>> > jar
>> > >> for this new package and adding it as a dependency for the client jar.
>> > This
>> > >> is a bit inconsistent with how we decided to package stuff when we
>> > started
>> > >> with the new clients so it'd be good to work that out.
>> > >>
>> > >> To date the categorization has been:
>> > >> 1. Anything which is just in the clients is in org.apache.clients
>> under
>> > >> clients/
>> > >> 2. Anything which is in the server is kafka.* which is under core/
>> > >> 3. Anything which is needed in both places (as it sounds like some
>> enums
>> > >> for authorization are?) is in common which is under clients/
>> > >>
>> > >> org.apache.clients and org.apache.common are both pure java and
>> > dependency
>> > >> free other than the compression libraries and slf4j and are packaged
>> > into
>> > >> the kafka-clients.java, the server has it's own jar which has richer
>> > >> dependencies and depends on the client jar.
>> > >>
>> > >> There are other ways this could have been done--e.g. common could have
>> > been
>> > >> its own library or even split into multiple sub-libraries--but the
>> > decision
>> > >> at that time was just to keep it simple and hard to mess up. Based on
>> > the
>> > >> experience with the scala clients our plan was to be ultra-hostile to
>> > any
>> > >> added client dependencies.
>> > >>
>> > >> So I think if we're continuing this model we would put the shared
>> > >> authorizer code somewhere under
>> > >> clients/src/main/java/org/apache/kafka/common as with the other shared
>> > >> authorizer. If we're moving away from this model we should probably
>> > rethink
>> > >> things and be consistent with this, at the very least splitting up
>> > common
>> > >> and clients.
>> > >>
>> > >> -Jay
>> > >>
>> > >> On Wed, Apr 20, 2016 at 1:04 PM, Ashish Singh <asi...@cloudera.com>
>> > wrote:
>> > >>
>> > >> > Jun/ Jay/ Gwen/ Harsha/ Ismael,
>> > >> >
>> > >> > As you guys have provided feedback on this earlier, could you review
>> > the
>> > >> > KIP again? I have updated the PR <
>> > >> https://github.com/apache/kafka/pull/861>
>> > >> > as
>> > >> > well.
>> > >> >
>> > >> > On Wed, Apr 20, 2016 at 1:01 PM, Ashish Singh <asi...@cloudera.com>
>> > >> wrote:
>> > >> >
>> > >> > > Hi Grant,
>> > >> > >
>> > >> > > On Tue, Apr 19, 2016 at 8:13 AM, Grant Henke <ghe...@cloudera.com
>> >
>> > >> > wrote:
>> > >> > >
>> > >> > >> Hi Ashish,
>> > >> > >>
>> > >> > >> Thanks for the updates. I have a few questions below:
>> > >> > >>
>> > >> > >> > Move following interfaces to new package,
>> > >> org.apche.kafka.authorizer.
>> > >> > >> >
>> > >> > >> >    1. Authorizer
>> > >> > >> >    2. Acl
>> > >> > >> >    3. Operation
>> > >> > >> >    4. PermissionType
>> > >> > >> >    5. Resource
>> > >> > >> >    6. ResourceType
>> > >> > >> >    7. KafkaPrincipal
>> > >> > >> >    8. Session
>> > >> > >> >
>> > >> > >> >
>> > >> > >> This means the client would be required to depend on the
>> authorizer
>> > >> > >> package
>> > >> > >> as a part of KIP-4. Another option is to have the client objects
>> in
>> > >> > >> common.
>> > >> > >> Have we ruled out leaving the interface in the core module?
>> > >> > >>
>> > >> > >  With this entities that use Authorizer will depend only on
>> > Authorizer
>> > >> > > package. Third party implementations can have only the authorizer
>> > pkg
>> > >> as
>> > >> > > dependency. core and client modules will also have to depend on
>> the
>> > >> > > authorizer with this approach. Do you see any issue with it?
>> > >> > >
>> > >> > >>
>> > >> > >> Authorizer interface will be updated to remove getter naming
>> > >> convention.
>> > >> > >>
>> > >> > >>
>> > >> > >> Now that this is Java do we still want to change to the Scala
>> > naming
>> > >> > >> convention?
>> > >> > >>
>> > >> > > Even in clients module I do not see getter naming convention being
>> > >> > > followed, it is better to be consistent I guess.
>> > >> > >
>> > >> > >>
>> > >> > >>
>> > >> > >> Since we are completely rewriting the interface, can we add some
>> > (at
>> > >> > least
>> > >> > >> one to start with) standard exceptions that each method is
>> > recommended
>> > >> > to
>> > >> > >> use/throw? This will help the server in KIP-4 provide meaningful
>> > error
>> > >> > >> codes. KAFKA-3507 <
>> > https://issues.apache.org/jira/browse/KAFKA-3507>
>> > >> is
>> > >> > >> tracking it right now.
>> > >> > >>
>> > >> > > That should be good to have. Will include that. Thanks.
>> > >> > >
>> > >> > >>
>> > >> > >> Thanks,
>> > >> > >> Grant
>> > >> > >>
>> > >> > >>
>> > >> > >>
>> > >> > >> On Tue, Apr 19, 2016 at 9:48 AM, Ashish Singh <
>> asi...@cloudera.com
>> > >
>> > >> > >> wrote:
>> > >> > >>
>> > >> > >> > I have updated KIP-50
>> > >> > >> > <
>> > >> > >> >
>> > >> > >>
>> > >> >
>> > >>
>> >
>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-50+-+Move+Authorizer+to+a+separate+package
>> > >> > >> > >
>> > >> > >> > and PR <https://github.com/apache/kafka/pull/861> as per
>> recent
>> > >> > >> > discussions. Please take a look.
>> > >> > >> >
>> > >> > >> > @Harsha / Don, it would be nice if you guys can review the KIP
>> > and
>> > >> PR
>> > >> > as
>> > >> > >> > well.
>> > >> > >> >
>> > >> > >> >
>> > >> > >> > On Mon, Apr 11, 2016 at 7:36 PM, Ashish Singh <
>> > asi...@cloudera.com>
>> > >> > >> wrote:
>> > >> > >> >
>> > >> > >> > > Yes, Jun. I would like to try get option 2 in, if possible in
>> > >> 0.10.
>> > >> > I
>> > >> > >> am
>> > >> > >> > > not asking for delaying 0.10 for it, but some reviews and
>> early
>> > >> > >> feedback
>> > >> > >> > > would be great. At this point this is what I have in mind.
>> > >> > >> > >
>> > >> > >> > > 1. Move authorizer and related entities to its own package.
>> > Note
>> > >> > that
>> > >> > >> I
>> > >> > >> > am
>> > >> > >> > > proposing to drop scala interface completely. Ranger team is
>> > fine
>> > >> > >> with it
>> > >> > >> > > and I will update Sentry.
>> > >> > >> > > 2. The only new public method that will be added to
>> authorizer
>> > >> > >> interface
>> > >> > >> > > is description().
>> > >> > >> > > 3. Update SimpleAclAuthorizer to use the new interface and
>> > >> classes.
>> > >> > >> > >
>> > >> > >> > > On Mon, Apr 11, 2016 at 6:38 PM, Jun Rao <j...@confluent.io>
>> > >> wrote:
>> > >> > >> > >
>> > >> > >> > >> Ashish,
>> > >> > >> > >>
>> > >> > >> > >> So, you want to take a shot at option 2 for 0.10.0? That's
>> > fine
>> > >> > with
>> > >> > >> me
>> > >> > >> > >> too. I am just not sure if we have enough time to think
>> > through
>> > >> the
>> > >> > >> > >> changes.
>> > >> > >> > >>
>> > >> > >> > >> Thanks,
>> > >> > >> > >>
>> > >> > >> > >> Jun
>> > >> > >> > >>
>> > >> > >> > >> On Mon, Apr 11, 2016 at 6:05 PM, Ashish Singh <
>> > >> asi...@cloudera.com
>> > >> > >
>> > >> > >> > >> wrote:
>> > >> > >> > >>
>> > >> > >> > >> > Hello Jun,
>> > >> > >> > >> >
>> > >> > >> > >> > The 3rd option will require Apache Sentry to go GA with
>> > current
>> > >> > >> > >> authorizer
>> > >> > >> > >> > interface, and at this point it seems that the interface
>> > won't
>> > >> > last
>> > >> > >> > >> long.
>> > >> > >> > >> > Within a few months, Sentry will have to make a breaking
>> > >> change.
>> > >> > I
>> > >> > >> do
>> > >> > >> > >> > understand that Kafka should not have to delay its release
>> > due
>> > >> to
>> > >> > >> one
>> > >> > >> > of
>> > >> > >> > >> > the authorizer implementations. However, can we assist
>> > Sentry
>> > >> > >> users to
>> > >> > >> > >> > avoid that breaking upgrade? I think it is worth a shot.
>> If
>> > the
>> > >> > >> > changes
>> > >> > >> > >> are
>> > >> > >> > >> > not done by 0.10 code freeze, then sure lets punt it to
>> next
>> > >> > >> release.
>> > >> > >> > >> Does
>> > >> > >> > >> > this seem reasonable to you?
>> > >> > >> > >> >
>> > >> > >> > >> > On Sun, Apr 10, 2016 at 11:42 AM, Jun Rao <
>> j...@confluent.io
>> > >
>> > >> > >> wrote:
>> > >> > >> > >> >
>> > >> > >> > >> > > Ashish,
>> > >> > >> > >> > >
>> > >> > >> > >> > > A 3rd option is to in 0.10.0, just sanity check the
>> > principal
>> > >> > >> type
>> > >> > >> > in
>> > >> > >> > >> the
>> > >> > >> > >> > > implementation of addAcls/removeAcls of Authorizer, but
>> > don't
>> > >> > >> change
>> > >> > >> > >> the
>> > >> > >> > >> > > Authorizer api to add the getDescription() method. This
>> > fixes
>> > >> > the
>> > >> > >> > >> > immediate
>> > >> > >> > >> > > issue that an acl rule with the wrong principal type is
>> > >> > silently
>> > >> > >> > >> ignored.
>> > >> > >> > >> > > Knowing valid user types is nice, but not critical (we
>> can
>> > >> > >> include
>> > >> > >> > the
>> > >> > >> > >> > > supported user type in the
>> > UnsupportedPrincipalTypeException
>> > >> > >> thrown
>> > >> > >> > >> from
>> > >> > >> > >> > > addAcls/removeAcls). This will give us more time to
>> clean
>> > up
>> > >> > the
>> > >> > >> > >> > Authorizer
>> > >> > >> > >> > > api post 0.10.0.
>> > >> > >> > >> > >
>> > >> > >> > >> > > Thanks
>> > >> > >> > >> > >
>> > >> > >> > >> > > Jun
>> > >> > >> > >> > >
>> > >> > >> > >> > > On Fri, Apr 8, 2016 at 9:04 AM, Ashish Singh <
>> > >> > >> asi...@cloudera.com>
>> > >> > >> > >> > wrote:
>> > >> > >> > >> > >
>> > >> > >> > >> > > > Thanks for the input Don. One of the possible paths
>> for
>> > >> > Option
>> > >> > >> 2
>> > >> > >> > is
>> > >> > >> > >> to
>> > >> > >> > >> > > > completely drop Scala interface, would that be Ok with
>> > you
>> > >> > >> folks?
>> > >> > >> > >> > > >
>> > >> > >> > >> > > > On Thursday, April 7, 2016, Don Bosco Durai <
>> > >> > bo...@apache.org>
>> > >> > >> > >> wrote:
>> > >> > >> > >> > > >
>> > >> > >> > >> > > > > Ranger team would prefer option #2. Right now, we
>> > have to
>> > >> > >> access
>> > >> > >> > >> some
>> > >> > >> > >> > > of
>> > >> > >> > >> > > > > the nested constants using constructs like
>> > >> Group$.MODULE$,
>> > >> > >> which
>> > >> > >> > >> is
>> > >> > >> > >> > not
>> > >> > >> > >> > > > > intuitive in Java.
>> > >> > >> > >> > > > >
>> > >> > >> > >> > > > > Thanks
>> > >> > >> > >> > > > >
>> > >> > >> > >> > > > > Bosco
>> > >> > >> > >> > > > >
>> > >> > >> > >> > > > >
>> > >> > >> > >> > > > >
>> > >> > >> > >> > > > >
>> > >> > >> > >> > > > > On 4/7/16, 4:30 PM, "Ashish Singh" <
>> > asi...@cloudera.com
>> > >> > >> > >> > > <javascript:;>>
>> > >> > >> > >> > > > > wrote:
>> > >> > >> > >> > > > >
>> > >> > >> > >> > > > > >Harsha/ Don,
>> > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >Are you guys OK with option 2? I am not aware of
>> all
>> > the
>> > >> > >> > existing
>> > >> > >> > >> > > > > >authorizer implementations, however ranger has one
>> > for
>> > >> > sure.
>> > >> > >> > >> Getting
>> > >> > >> > >> > > > > direct
>> > >> > >> > >> > > > > >feedback from you guys will be really valuable.
>> > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >On Thu, Apr 7, 2016 at 3:52 PM, Ismael Juma <
>> > >> > >> ism...@juma.me.uk
>> > >> > >> > >> > > > > <javascript:;>> wrote:
>> > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >> Hi Don,
>> > >> > >> > >> > > > > >>
>> > >> > >> > >> > > > > >> This is true in Java 7, but Java 8 introduces
>> > default
>> > >> > >> methods
>> > >> > >> > >> and
>> > >> > >> > >> > > this
>> > >> > >> > >> > > > > >> workaround is no longer required. During the
>> > >> Interceptor
>> > >> > >> KIP
>> > >> > >> > >> > > > > discussion, it
>> > >> > >> > >> > > > > >> was decided that it was fine to stick to
>> interfaces
>> > >> > given
>> > >> > >> > that
>> > >> > >> > >> we
>> > >> > >> > >> > > are
>> > >> > >> > >> > > > > >> likely to move to Java 8 in the nearish future
>> > >> (probably
>> > >> > >> no
>> > >> > >> > >> later
>> > >> > >> > >> > > than
>> > >> > >> > >> > > > > the
>> > >> > >> > >> > > > > >> Java 9 release).
>> > >> > >> > >> > > > > >>
>> > >> > >> > >> > > > > >> Ismael
>> > >> > >> > >> > > > > >>
>> > >> > >> > >> > > > > >> On Thu, Apr 7, 2016 at 11:36 PM, Don Bosco Durai
>> <
>> > >> > >> > >> > bo...@apache.org
>> > >> > >> > >> > > > > <javascript:;>> wrote:
>> > >> > >> > >> > > > > >>
>> > >> > >> > >> > > > > >> > Hi Ashish
>> > >> > >> > >> > > > > >> >
>> > >> > >> > >> > > > > >> > If we are going by option #2, then I can
>> suggest
>> > we
>> > >> > >> give an
>> > >> > >> > >> > > abstract
>> > >> > >> > >> > > > > >> > implementation of the Interface and recommend
>> > anyone
>> > >> > >> > >> > implementing
>> > >> > >> > >> > > > > their
>> > >> > >> > >> > > > > >> own
>> > >> > >> > >> > > > > >> > plugin to extend from the abstract class,
>> rather
>> > >> than
>> > >> > >> > >> implement
>> > >> > >> > >> > > the
>> > >> > >> > >> > > > > >> > interface?
>> > >> > >> > >> > > > > >> >
>> > >> > >> > >> > > > > >> > The advantage is, in the future if we add add
>> any
>> > >> new
>> > >> > >> > >> methods in
>> > >> > >> > >> > > the
>> > >> > >> > >> > > > > >> > Interface (e.g. Similar to getDescription()),
>> > then
>> > >> we
>> > >> > >> can
>> > >> > >> > >> give a
>> > >> > >> > >> > > > dummy
>> > >> > >> > >> > > > > >> > implementation of the new method and this won’t
>> > >> break
>> > >> > >> the
>> > >> > >> > >> > > > compilation
>> > >> > >> > >> > > > > of
>> > >> > >> > >> > > > > >> > any external implementation. Else over the time
>> > it
>> > >> > will
>> > >> > >> be
>> > >> > >> > >> > > > challenging
>> > >> > >> > >> > > > > >> for
>> > >> > >> > >> > > > > >> > anyone customizing the implementation to keep
>> > track
>> > >> of
>> > >> > >> > >> changes
>> > >> > >> > >> > to
>> > >> > >> > >> > > > the
>> > >> > >> > >> > > > > >> > Interface.
>> > >> > >> > >> > > > > >> >
>> > >> > >> > >> > > > > >> > Thanks
>> > >> > >> > >> > > > > >> >
>> > >> > >> > >> > > > > >> > Bosco
>> > >> > >> > >> > > > > >> >
>> > >> > >> > >> > > > > >> >
>> > >> > >> > >> > > > > >> >
>> > >> > >> > >> > > > > >> >
>> > >> > >> > >> > > > > >> > On 4/7/16, 11:21 AM, "Ashish Singh" <
>> > >> > >> asi...@cloudera.com
>> > >> > >> > >> > > > > <javascript:;>> wrote:
>> > >> > >> > >> > > > > >> >
>> > >> > >> > >> > > > > >> > >Hello Harsha,
>> > >> > >> > >> > > > > >> > >
>> > >> > >> > >> > > > > >> > >On Thu, Apr 7, 2016 at 11:03 AM, Harsha <
>> > >> > >> m...@harsha.io
>> > >> > >> > >> > > > > <javascript:;>> wrote:
>> > >> > >> > >> > > > > >> > >
>> > >> > >> > >> > > > > >> > >"My only ask is to have this in 0.10. As Jay
>> > >> pointed
>> > >> > >> out,
>> > >> > >> > >> right
>> > >> > >> > >> > > now
>> > >> > >> > >> > > > > >> > >> there
>> > >> > >> > >> > > > > >> > >> are not many implementations out there, we
>> > might
>> > >> > >> want to
>> > >> > >> > >> fix
>> > >> > >> > >> > it
>> > >> > >> > >> > > > > ASAP."
>> > >> > >> > >> > > > > >> > >>
>> > >> > >> > >> > > > > >> > >> Probably there aren't many implementations
>> but
>> > >> > there
>> > >> > >> are
>> > >> > >> > >> lot
>> > >> > >> > >> > of
>> > >> > >> > >> > > > > users
>> > >> > >> > >> > > > > >> > >> using these implementations in production
>> > >> clusters.
>> > >> > >> > >> > > > > >> > >> Isn't this going to break the rolling
>> upgrade?
>> > >> > >> > >> > > > > >> > >
>> > >> > >> > >> > > > > >> > >It will and it is a concern, in my previous
>> > mail I
>> > >> > have
>> > >> > >> > >> > mentioned
>> > >> > >> > >> > > > > this
>> > >> > >> > >> > > > > >> as
>> > >> > >> > >> > > > > >> > >an issue if we choose to go this route.
>> > However, if
>> > >> > we
>> > >> > >> > >> actually
>> > >> > >> > >> > > > > decide
>> > >> > >> > >> > > > > >> to
>> > >> > >> > >> > > > > >> > >do this, I would say it is better to do it
>> > sooner
>> > >> > than
>> > >> > >> > >> later,
>> > >> > >> > >> > as
>> > >> > >> > >> > > > > fewer
>> > >> > >> > >> > > > > >> > >implementations will be affected. Below is
>> > excerpt
>> > >> > >> from my
>> > >> > >> > >> > > previous
>> > >> > >> > >> > > > > >> mail.
>> > >> > >> > >> > > > > >> > >
>> > >> > >> > >> > > > > >> > >Increase scope of KIP-50 to move authorizer
>> and
>> > >> > related
>> > >> > >> > >> classes
>> > >> > >> > >> > > to
>> > >> > >> > >> > > > a
>> > >> > >> > >> > > > > >> > >separate package. The new package will have
>> java
>> > >> > >> > interface.
>> > >> > >> > >> > This
>> > >> > >> > >> > > > will
>> > >> > >> > >> > > > > >> > allow
>> > >> > >> > >> > > > > >> > >implementations to not depend on kafka core
>> and
>> > >> just
>> > >> > on
>> > >> > >> > >> > > authorizer
>> > >> > >> > >> > > > > >> > package,
>> > >> > >> > >> > > > > >> > >make authorization interface follow kafka’s
>> > coding
>> > >> > >> > standards
>> > >> > >> > >> > and
>> > >> > >> > >> > > > will
>> > >> > >> > >> > > > > >> > allow
>> > >> > >> > >> > > > > >> > >java implementations to be cleaner. We can
>> > either
>> > >> > >> > completely
>> > >> > >> > >> > drop
>> > >> > >> > >> > > > > scala
>> > >> > >> > >> > > > > >> > >interface, which might be a pain for existing
>> > >> > >> > >> implementations,
>> > >> > >> > >> > or
>> > >> > >> > >> > > > we
>> > >> > >> > >> > > > > can
>> > >> > >> > >> > > > > >> > >have scala interface wrap java interface.
>> Later
>> > >> > allows
>> > >> > >> a
>> > >> > >> > >> > cleaner
>> > >> > >> > >> > > > > >> > >deprecation path for existing scala authorizer
>> > >> > >> interface,
>> > >> > >> > >> > however
>> > >> > >> > >> > > > it
>> > >> > >> > >> > > > > may
>> > >> > >> > >> > > > > >> > or
>> > >> > >> > >> > > > > >> > >may not be feasible as Kafka server will have
>> to
>> > >> > >> somehow
>> > >> > >> > >> decide
>> > >> > >> > >> > > > which
>> > >> > >> > >> > > > > >> > >interface it should be looking for while
>> loading
>> > >> > >> > authorizer
>> > >> > >> > >> > > > > >> > implementation,
>> > >> > >> > >> > > > > >> > >this can probably be solved with a config or
>> > some
>> > >> > >> > >> reflection.
>> > >> > >> > >> > If
>> > >> > >> > >> > > we
>> > >> > >> > >> > > > > >> choose
>> > >> > >> > >> > > > > >> > >to go this route, I can dig deeper.
>> > >> > >> > >> > > > > >> > >
>> > >> > >> > >> > > > > >> > >If we go with option 2 and commit on getting
>> > this
>> > >> in
>> > >> > >> ASAP,
>> > >> > >> > >> > > > > preferably in
>> > >> > >> > >> > > > > >> > >0.10, there will be fewer implementations that
>> > will
>> > >> > be
>> > >> > >> > >> > affected.
>> > >> > >> > >> > > > > >> > >
>> > >> > >> > >> > > > > >> > >and also moving to Java ,
>> > >> > >> > >> > > > > >> > >> a authorizer implementation going to run
>> > inside a
>> > >> > >> > >> KafkaBroker
>> > >> > >> > >> > > > and I
>> > >> > >> > >> > > > > >> > >> don't see why this is necessary to move to
>> > >> clients
>> > >> > >> > >> package.
>> > >> > >> > >> > > > > >> > >> Are we planning on introducing common module
>> > to
>> > >> > have
>> > >> > >> it
>> > >> > >> > >> > > > > independent of
>> > >> > >> > >> > > > > >> > >> broker and client code?
>> > >> > >> > >> > > > > >> > >>
>> > >> > >> > >> > > > > >> > >Yes, I think that would take away the
>> > requirement
>> > >> of
>> > >> > >> > >> depending
>> > >> > >> > >> > on
>> > >> > >> > >> > > > > Kafka
>> > >> > >> > >> > > > > >> > >core from authorizer implementations. Do you
>> > >> suggest
>> > >> > >> > >> otherwise?
>> > >> > >> > >> > > > > >> > >
>> > >> > >> > >> > > > > >> > >
>> > >> > >> > >> > > > > >> > >> -Harsha
>> > >> > >> > >> > > > > >> > >>
>> > >> > >> > >> > > > > >> > >> On Thu, Apr 7, 2016, at 10:52 AM, Ashish
>> Singh
>> > >> > wrote:
>> > >> > >> > >> > > > > >> > >> > We might want to take a call here.
>> Following
>> > >> are
>> > >> > >> the
>> > >> > >> > >> > options.
>> > >> > >> > >> > > > > >> > >> >
>> > >> > >> > >> > > > > >> > >> >    1. Let KIP-50 be the way it is, i.e.,
>> > just
>> > >> add
>> > >> > >> > >> > > > > getDescription()
>> > >> > >> > >> > > > > >> to
>> > >> > >> > >> > > > > >> > >> >    existing scala authorizer interface. It
>> > will
>> > >> > >> break
>> > >> > >> > >> > binary
>> > >> > >> > >> > > > > >> > >> >    compatibility
>> > >> > >> > >> > > > > >> > >> >    (only when using CLI and/or
>> AdminCommand
>> > >> from
>> > >> > >=
>> > >> > >> > 0.10
>> > >> > >> > >> > > > against
>> > >> > >> > >> > > > > >> > >> >    authorizer
>> > >> > >> > >> > > > > >> > >> >    implementations based on 0.9.). If we
>> go
>> > >> this
>> > >> > >> > route,
>> > >> > >> > >> it
>> > >> > >> > >> > > is a
>> > >> > >> > >> > > > > >> > simpler
>> > >> > >> > >> > > > > >> > >> >    change
>> > >> > >> > >> > > > > >> > >> >    and existing implementations won’t have
>> > to
>> > >> > >> change
>> > >> > >> > >> > anything
>> > >> > >> > >> > > > on
>> > >> > >> > >> > > > > >> their
>> > >> > >> > >> > > > > >> > >> >    end.
>> > >> > >> > >> > > > > >> > >> >    2. Increase scope of KIP-50 to move
>> > >> authorizer
>> > >> > >> and
>> > >> > >> > >> > related
>> > >> > >> > >> > > > > >> classes
>> > >> > >> > >> > > > > >> > to
>> > >> > >> > >> > > > > >> > >> >    a
>> > >> > >> > >> > > > > >> > >> >    separate package. The new package will
>> > have
>> > >> > java
>> > >> > >> > >> > > interface.
>> > >> > >> > >> > > > > This
>> > >> > >> > >> > > > > >> > will
>> > >> > >> > >> > > > > >> > >> >    allow
>> > >> > >> > >> > > > > >> > >> >    implementations to not depend on kafka
>> > core
>> > >> > and
>> > >> > >> > just
>> > >> > >> > >> on
>> > >> > >> > >> > > > > >> authorizer
>> > >> > >> > >> > > > > >> > >> >    package,
>> > >> > >> > >> > > > > >> > >> >    make authorization interface follow
>> > kafka’s
>> > >> > >> coding
>> > >> > >> > >> > > standards
>> > >> > >> > >> > > > > and
>> > >> > >> > >> > > > > >> > will
>> > >> > >> > >> > > > > >> > >> >    allow
>> > >> > >> > >> > > > > >> > >> >    java implementations to be cleaner. We
>> > can
>> > >> > >> either
>> > >> > >> > >> > > completely
>> > >> > >> > >> > > > > drop
>> > >> > >> > >> > > > > >> > >> >    scala
>> > >> > >> > >> > > > > >> > >> >    interface, which might be a pain for
>> > >> existing
>> > >> > >> > >> > > > > implementations, or
>> > >> > >> > >> > > > > >> > we
>> > >> > >> > >> > > > > >> > >> >    can
>> > >> > >> > >> > > > > >> > >> >    have scala interface wrap java
>> interface.
>> > >> > Later
>> > >> > >> > >> allows a
>> > >> > >> > >> > > > > cleaner
>> > >> > >> > >> > > > > >> > >> >    deprecation path for existing scala
>> > >> authorizer
>> > >> > >> > >> > interface,
>> > >> > >> > >> > > > > however
>> > >> > >> > >> > > > > >> > it
>> > >> > >> > >> > > > > >> > >> >    may or
>> > >> > >> > >> > > > > >> > >> >    may not be feasible as Kafka server
>> will
>> > >> have
>> > >> > to
>> > >> > >> > >> somehow
>> > >> > >> > >> > > > > decide
>> > >> > >> > >> > > > > >> > which
>> > >> > >> > >> > > > > >> > >> >    interface it should be looking for
>> while
>> > >> > loading
>> > >> > >> > >> > > authorizer
>> > >> > >> > >> > > > > >> > >> >    implementation,
>> > >> > >> > >> > > > > >> > >> >    this can probably be solved with a
>> > config or
>> > >> > >> some
>> > >> > >> > >> > > > reflection.
>> > >> > >> > >> > > > > If
>> > >> > >> > >> > > > > >> we
>> > >> > >> > >> > > > > >> > >> >    choose
>> > >> > >> > >> > > > > >> > >> >    to go this route, I can dig deeper.
>> > >> > >> > >> > > > > >> > >> >
>> > >> > >> > >> > > > > >> > >> > If we decide to go with option 1, I think
>> it
>> > >> > would
>> > >> > >> be
>> > >> > >> > >> fair
>> > >> > >> > >> > to
>> > >> > >> > >> > > > say
>> > >> > >> > >> > > > > >> that
>> > >> > >> > >> > > > > >> > >> > scala authorizer interface will be around
>> > for
>> > >> > some
>> > >> > >> > >> time, as
>> > >> > >> > >> > > > there
>> > >> > >> > >> > > > > >> > will be
>> > >> > >> > >> > > > > >> > >> > more implementations relying on it. If we
>> go
>> > >> with
>> > >> > >> > >> option 2
>> > >> > >> > >> > > and
>> > >> > >> > >> > > > > >> commit
>> > >> > >> > >> > > > > >> > on
>> > >> > >> > >> > > > > >> > >> > getting this in ASAP, preferably in 0.10,
>> > there
>> > >> > >> will
>> > >> > >> > be
>> > >> > >> > >> > fewer
>> > >> > >> > >> > > > > >> > >> > implementations that will be affected.
>> > >> > >> > >> > > > > >> > >> >
>> > >> > >> > >> > > > > >> > >> > *Another thing to notice is that scala
>> > >> authorizer
>> > >> > >> > >> interface
>> > >> > >> > >> > > is
>> > >> > >> > >> > > > > not
>> > >> > >> > >> > > > > >> > >> > annotated as unstable.*
>> > >> > >> > >> > > > > >> > >> >
>> > >> > >> > >> > > > > >> > >> >
>> > >> > >> > >> > > > > >> > >> > On Wed, Apr 6, 2016 at 9:41 AM, Ashish
>> > Singh <
>> > >> > >> > >> > > > > asi...@cloudera.com <javascript:;>>
>> > >> > >> > >> > > > > >> > >> wrote:
>> > >> > >> > >> > > > > >> > >> >
>> > >> > >> > >> > > > > >> > >> > > I see value in minimizing breaking
>> changes
>> > >> and
>> > >> > I
>> > >> > >> do
>> > >> > >> > >> not
>> > >> > >> > >> > > > oppose
>> > >> > >> > >> > > > > the
>> > >> > >> > >> > > > > >> > >> idea of
>> > >> > >> > >> > > > > >> > >> > > increasing scope of KIP-50 to move auth
>> > >> > >> interface to
>> > >> > >> > >> > java.
>> > >> > >> > >> > > > > >> > >> > >
>> > >> > >> > >> > > > > >> > >> > > As authorizer implementations do not
>> > really
>> > >> > need
>> > >> > >> to
>> > >> > >> > >> > depend
>> > >> > >> > >> > > on
>> > >> > >> > >> > > > > >> Kafka
>> > >> > >> > >> > > > > >> > >> core,
>> > >> > >> > >> > > > > >> > >> > > I would suggest that we keep authorizer
>> > >> > interface
>> > >> > >> > and
>> > >> > >> > >> its
>> > >> > >> > >> > > > > >> components
>> > >> > >> > >> > > > > >> > >> in a
>> > >> > >> > >> > > > > >> > >> > > separate package. I share the concern
>> that
>> > >> > right
>> > >> > >> now
>> > >> > >> > >> > using
>> > >> > >> > >> > > > > >> Resource,
>> > >> > >> > >> > > > > >> > >> > > Operation, etc, in java implementations
>> is
>> > >> > >> messy. I
>> > >> > >> > >> had
>> > >> > >> > >> > to
>> > >> > >> > >> > > > deal
>> > >> > >> > >> > > > > >> with
>> > >> > >> > >> > > > > >> > >> lot of
>> > >> > >> > >> > > > > >> > >> > > it while writing Apache Sentry plugin.
>> > >> > >> > >> > > > > >> > >> > >
>> > >> > >> > >> > > > > >> > >> > > My only ask is to have this in 0.10. As
>> > Jay
>> > >> > >> pointed
>> > >> > >> > >> out,
>> > >> > >> > >> > > > right
>> > >> > >> > >> > > > > now
>> > >> > >> > >> > > > > >> > >> there
>> > >> > >> > >> > > > > >> > >> > > are not many implementations out there,
>> we
>> > >> > might
>> > >> > >> > want
>> > >> > >> > >> to
>> > >> > >> > >> > > fix
>> > >> > >> > >> > > > it
>> > >> > >> > >> > > > > >> > ASAP.
>> > >> > >> > >> > > > > >> > >> I can
>> > >> > >> > >> > > > > >> > >> > > only speak of Sentry integration and I
>> > think
>> > >> > 0.10
>> > >> > >> > >> will be
>> > >> > >> > >> > > the
>> > >> > >> > >> > > > > best
>> > >> > >> > >> > > > > >> > for
>> > >> > >> > >> > > > > >> > >> such
>> > >> > >> > >> > > > > >> > >> > > a change, as I should be able to adopt
>> the
>> > >> > >> changes
>> > >> > >> > in
>> > >> > >> > >> > > Sentry
>> > >> > >> > >> > > > > >> > >> integration
>> > >> > >> > >> > > > > >> > >> > > before a lot of users start using it.
>> > >> > >> > >> > > > > >> > >> > >
>> > >> > >> > >> > > > > >> > >> > > On Wed, Apr 6, 2016 at 9:25 AM, Ismael
>> > Juma <
>> > >> > >> > >> > > > ism...@juma.me.uk
>> > >> > >> > >> > > > > <javascript:;>>
>> > >> > >> > >> > > > > >> > wrote:
>> > >> > >> > >> > > > > >> > >> > >
>> > >> > >> > >> > > > > >> > >> > >> It is small, but breaks binary
>> > >> compatibility.
>> > >> > >> > >> > > > > >> > >> > >>
>> > >> > >> > >> > > > > >> > >> > >> Ismael
>> > >> > >> > >> > > > > >> > >> > >>
>> > >> > >> > >> > > > > >> > >> > >> On Wed, Apr 6, 2016 at 5:20 PM, Grant
>> > Henke
>> > >> <
>> > >> > >> > >> > > > > ghe...@cloudera.com <javascript:;>
>> > >> > >> > >> > > > > >> >
>> > >> > >> > >> > > > > >> > >> wrote:
>> > >> > >> > >> > > > > >> > >> > >>
>> > >> > >> > >> > > > > >> > >> > >> > KIP-50 as defined is very small. I
>> > don't
>> > >> see
>> > >> > >> any
>> > >> > >> > >> harm
>> > >> > >> > >> > in
>> > >> > >> > >> > > > > >> putting
>> > >> > >> > >> > > > > >> > it
>> > >> > >> > >> > > > > >> > >> in
>> > >> > >> > >> > > > > >> > >> > >> as
>> > >> > >> > >> > > > > >> > >> > >> > is and then tackling the follow up
>> > work.
>> > >> > >> > >> > > > > >> > >> > >> >
>> > >> > >> > >> > > > > >> > >> > >> >
>> > >> > >> > >> > > > > >> > >> > >> > On Wed, Apr 6, 2016 at 11:16 AM,
>> Ismael
>> > >> > Juma <
>> > >> > >> > >> > > > > >> ism...@juma.me.uk <javascript:;>>
>> > >> > >> > >> > > > > >> > >> wrote:
>> > >> > >> > >> > > > > >> > >> > >> >
>> > >> > >> > >> > > > > >> > >> > >> > > Thanks Grant. I wonder if KIP-50
>> > should
>> > >> > >> just be
>> > >> > >> > >> done
>> > >> > >> > >> > > as
>> > >> > >> > >> > > > > part
>> > >> > >> > >> > > > > >> of
>> > >> > >> > >> > > > > >> > >> this
>> > >> > >> > >> > > > > >> > >> > >> > work.
>> > >> > >> > >> > > > > >> > >> > >> > >
>> > >> > >> > >> > > > > >> > >> > >> > > Ismael
>> > >> > >> > >> > > > > >> > >> > >> > >
>> > >> > >> > >> > > > > >> > >> > >> > > On Wed, Apr 6, 2016 at 5:12 PM,
>> Grant
>> > >> > Henke
>> > >> > >> <
>> > >> > >> > >> > > > > >> > ghe...@cloudera.com <javascript:;>>
>> > >> > >> > >> > > > > >> > >> > >> wrote:
>> > >> > >> > >> > > > > >> > >> > >> > >
>> > >> > >> > >> > > > > >> > >> > >> > > > My work with KIP-4 found that
>> many
>> > of
>> > >> > the
>> > >> > >> > Scala
>> > >> > >> > >> > > > classes
>> > >> > >> > >> > > > > >> used
>> > >> > >> > >> > > > > >> > in
>> > >> > >> > >> > > > > >> > >> the
>> > >> > >> > >> > > > > >> > >> > >> > > > Authorizer interface are needed
>> in
>> > the
>> > >> > >> > Clients
>> > >> > >> > >> > > package
>> > >> > >> > >> > > > > when
>> > >> > >> > >> > > > > >> > >> adding
>> > >> > >> > >> > > > > >> > >> > >> the
>> > >> > >> > >> > > > > >> > >> > >> > > > various ACL requests and
>> > responses. I
>> > >> > also
>> > >> > >> > >> found
>> > >> > >> > >> > > that
>> > >> > >> > >> > > > we
>> > >> > >> > >> > > > > >> > don't
>> > >> > >> > >> > > > > >> > >> have
>> > >> > >> > >> > > > > >> > >> > >> > > > standard Exceptions defined for
>> the
>> > >> > >> > authorizer
>> > >> > >> > >> > > > > interface.
>> > >> > >> > >> > > > > >> > This
>> > >> > >> > >> > > > > >> > >> means
>> > >> > >> > >> > > > > >> > >> > >> > that
>> > >> > >> > >> > > > > >> > >> > >> > > > when I add the Authorizer calls
>> to
>> > the
>> > >> > >> broker
>> > >> > >> > >> and
>> > >> > >> > >> > > wire
>> > >> > >> > >> > > > > >> > >> protocols all
>> > >> > >> > >> > > > > >> > >> > >> > > > exceptions will be reported as an
>> > >> > "Unknown
>> > >> > >> > >> Error"
>> > >> > >> > >> > > back
>> > >> > >> > >> > > > > to
>> > >> > >> > >> > > > > >> the
>> > >> > >> > >> > > > > >> > >> user
>> > >> > >> > >> > > > > >> > >> > >> via
>> > >> > >> > >> > > > > >> > >> > >> > > the
>> > >> > >> > >> > > > > >> > >> > >> > > > wire protocol.
>> > >> > >> > >> > > > > >> > >> > >> > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > I have written more about it on
>> the
>> > >> > KIP-4
>> > >> > >> > wiki
>> > >> > >> > >> and
>> > >> > >> > >> > > > > created
>> > >> > >> > >> > > > > >> > >> jiras to
>> > >> > >> > >> > > > > >> > >> > >> > track
>> > >> > >> > >> > > > > >> > >> > >> > > > those issues (See below). I think
>> > we
>> > >> > >> should
>> > >> > >> > >> wrap
>> > >> > >> > >> > up
>> > >> > >> > >> > > > this
>> > >> > >> > >> > > > > >> KIP
>> > >> > >> > >> > > > > >> > as
>> > >> > >> > >> > > > > >> > >> is
>> > >> > >> > >> > > > > >> > >> > >> and
>> > >> > >> > >> > > > > >> > >> > >> > > > tackle the Java/Exception changes
>> > as a
>> > >> > >> part
>> > >> > >> > of
>> > >> > >> > >> > those
>> > >> > >> > >> > > > > >> > jiras/kips.
>> > >> > >> > >> > > > > >> > >> > >> > > >
>> > >> > >> > >> > > > > >> > >> > >> > > >    - KIP-4 "Follow Up Changes"
>> > >> > >> > >> > > > > >> > >> > >> > > >    <
>> > >> > >> > >> > > > > >> > >> > >> > > >
>> > >> > >> > >> > > > > >> > >> > >> > >
>> > >> > >> > >> > > > > >> > >> > >> >
>> > >> > >> > >> > > > > >> > >> > >>
>> > >> > >> > >> > > > > >> > >>
>> > >> > >> > >> > > > > >> >
>> > >> > >> > >> > > > > >>
>> > >> > >> > >> > > > >
>> > >> > >> > >> > > >
>> > >> > >> > >> > >
>> > >> > >> > >> >
>> > >> > >> > >>
>> > >> > >> >
>> > >> > >>
>> > >> >
>> > >>
>> >
>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operations#KIP-4-Commandlineandcentralizedadministrativeoperations-FollowUpChangesfollow-up-changes
>> > >> > >> > >> > > > > >> > >> > >> > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > >    - KAFKA-3509 <
>> > >> > >> > >> > > > > >> > >>
>> > https://issues.apache.org/jira/browse/KAFKA-3509
>> > >> >:
>> > >> > >> > >> > > > > >> > >> > >> > > > Provide
>> > >> > >> > >> > > > > >> > >> > >> > > >    an Authorizer interface using
>> > the
>> > >> > Java
>> > >> > >> > >> client
>> > >> > >> > >> > > > > enumerator
>> > >> > >> > >> > > > > >> > >> classes
>> > >> > >> > >> > > > > >> > >> > >> > > >    - KAFKA-3507 <
>> > >> > >> > >> > > > > >> > >>
>> > https://issues.apache.org/jira/browse/KAFKA-3507
>> > >> >:
>> > >> > >> > >> > > > > >> > >> > >> > > Define
>> > >> > >> > >> > > > > >> > >> > >> > > >    standard exceptions for the
>> > >> > Authorizer
>> > >> > >> > >> > interface
>> > >> > >> > >> > > > > >> > >> > >> > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > Thank you,
>> > >> > >> > >> > > > > >> > >> > >> > > > Grant
>> > >> > >> > >> > > > > >> > >> > >> > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > On Wed, Apr 6, 2016 at 10:58 AM,
>> > Jay
>> > >> > >> Kreps <
>> > >> > >> > >> > > > > >> j...@confluent.io <javascript:;>
>> > >> > >> > >> > > > > >> > >
>> > >> > >> > >> > > > > >> > >> > >> wrote:
>> > >> > >> > >> > > > > >> > >> > >> > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > Hey Ismael,
>> > >> > >> > >> > > > > >> > >> > >> > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > Yeah I think this is a minor
>> > >> > cleanliness
>> > >> > >> > >> thing.
>> > >> > >> > >> > > > Since
>> > >> > >> > >> > > > > >> this
>> > >> > >> > >> > > > > >> > is
>> > >> > >> > >> > > > > >> > >> kind
>> > >> > >> > >> > > > > >> > >> > >> > of a
>> > >> > >> > >> > > > > >> > >> > >> > > > > power user interface I don't
>> feel
>> > >> > >> strongly
>> > >> > >> > >> > either
>> > >> > >> > >> > > > way.
>> > >> > >> > >> > > > > >> > >> > >> > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > My motivation with Scala is
>> just
>> > >> that
>> > >> > >> we've
>> > >> > >> > >> > tried
>> > >> > >> > >> > > to
>> > >> > >> > >> > > > > move
>> > >> > >> > >> > > > > >> > to
>> > >> > >> > >> > > > > >> > >> > >> having
>> > >> > >> > >> > > > > >> > >> > >> > the
>> > >> > >> > >> > > > > >> > >> > >> > > > > public interfaces be Java, and
>> > as a
>> > >> > >> group
>> > >> > >> > we
>> > >> > >> > >> > > > > definitely
>> > >> > >> > >> > > > > >> > >> struggled
>> > >> > >> > >> > > > > >> > >> > >> a
>> > >> > >> > >> > > > > >> > >> > >> > lot
>> > >> > >> > >> > > > > >> > >> > >> > > > > with understanding and
>> > maintaining
>> > >> > Scala
>> > >> > >> > >> > > > > compatibility in
>> > >> > >> > >> > > > > >> > the
>> > >> > >> > >> > > > > >> > >> > >> older
>> > >> > >> > >> > > > > >> > >> > >> > > > > clients.
>> > >> > >> > >> > > > > >> > >> > >> > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > -Jay
>> > >> > >> > >> > > > > >> > >> > >> > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > On Tue, Apr 5, 2016 at 11:46
>> PM,
>> > >> > Ismael
>> > >> > >> > Juma
>> > >> > >> > >> <
>> > >> > >> > >> > > > > >> > >> ism...@juma.me.uk <javascript:;>>
>> > >> > >> > >> > > > > >> > >> > >> > > wrote:
>> > >> > >> > >> > > > > >> > >> > >> > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > > Hi Jay,
>> > >> > >> > >> > > > > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > > On Wed, Apr 6, 2016 at 3:48
>> AM,
>> > >> Jay
>> > >> > >> > Kreps <
>> > >> > >> > >> > > > > >> > j...@confluent.io <javascript:;>
>> > >> > >> > >> > > > > >> > >> >
>> > >> > >> > >> > > > > >> > >> > >> > wrote:
>> > >> > >> > >> > > > > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > > > Given that we're breaking
>> > >> > >> compatibility
>> > >> > >> > >> > anyway
>> > >> > >> > >> > > > > should
>> > >> > >> > >> > > > > >> > we:
>> > >> > >> > >> > > > > >> > >> > >> > > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > > We are not breaking source
>> > >> > >> compatibility
>> > >> > >> > >> since
>> > >> > >> > >> > > the
>> > >> > >> > >> > > > > new
>> > >> > >> > >> > > > > >> > >> method
>> > >> > >> > >> > > > > >> > >> > >> has a
>> > >> > >> > >> > > > > >> > >> > >> > > > > default
>> > >> > >> > >> > > > > >> > >> > >> > > > > > implementation. I take it
>> that
>> > you
>> > >> > >> mean
>> > >> > >> > >> binary
>> > >> > >> > >> > > > > >> > >> compatibility?
>> > >> > >> > >> > > > > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > > > 1. Remove the get prefix on
>> > this
>> > >> > >> method
>> > >> > >> > >> and
>> > >> > >> > >> > > the
>> > >> > >> > >> > > > > >> > existing
>> > >> > >> > >> > > > > >> > >> one
>> > >> > >> > >> > > > > >> > >> > >> > which
>> > >> > >> > >> > > > > >> > >> > >> > > > > > violate
>> > >> > >> > >> > > > > >> > >> > >> > > > > > > our own code style
>> guidelines
>> > >> > (Oops!
>> > >> > >> > >> Kind of
>> > >> > >> > >> > > sad
>> > >> > >> > >> > > > > we
>> > >> > >> > >> > > > > >> > went
>> > >> > >> > >> > > > > >> > >> > >> through
>> > >> > >> > >> > > > > >> > >> > >> > > the
>> > >> > >> > >> > > > > >> > >> > >> > > > > > whole
>> > >> > >> > >> > > > > >> > >> > >> > > > > > > KIP process and no one even
>> > >> > flagged
>> > >> > >> > this)
>> > >> > >> > >> > > > > >> > >> > >> > > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > > I did flag this during the
>> > >> > discussion
>> > >> > >> and
>> > >> > >> > >> > Ashish
>> > >> > >> > >> > > > > said
>> > >> > >> > >> > > > > >> he
>> > >> > >> > >> > > > > >> > >> would
>> > >> > >> > >> > > > > >> > >> > >> > change
>> > >> > >> > >> > > > > >> > >> > >> > > > it
>> > >> > >> > >> > > > > >> > >> > >> > > > > if
>> > >> > >> > >> > > > > >> > >> > >> > > > > > other people felt that it
>> > should
>> > >> be
>> > >> > >> > >> changed.
>> > >> > >> > >> > > > > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > > > 2. Move the interface out
>> of
>> > >> scala
>> > >> > >> to
>> > >> > >> > be
>> > >> > >> > >> a
>> > >> > >> > >> > > > normal
>> > >> > >> > >> > > > > >> Java
>> > >> > >> > >> > > > > >> > >> > >> interface
>> > >> > >> > >> > > > > >> > >> > >> > > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > > > This breaks source
>> > compatibility
>> > >> > but
>> > >> > >> > >> > probably
>> > >> > >> > >> > > > > what we
>> > >> > >> > >> > > > > >> > >> should
>> > >> > >> > >> > > > > >> > >> > >> have
>> > >> > >> > >> > > > > >> > >> > >> > > > done
>> > >> > >> > >> > > > > >> > >> > >> > > > > > > originally I suspect.
>> > Probably
>> > >> > there
>> > >> > >> > are
>> > >> > >> > >> few
>> > >> > >> > >> > > > > enough
>> > >> > >> > >> > > > > >> > >> > >> > implementations
>> > >> > >> > >> > > > > >> > >> > >> > > > of
>> > >> > >> > >> > > > > >> > >> > >> > > > > > this
>> > >> > >> > >> > > > > >> > >> > >> > > > > > > that it is better to just
>> rip
>> > >> the
>> > >> > >> > bandaid
>> > >> > >> > >> > off.
>> > >> > >> > >> > > > > >> > >> > >> > > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > > Can you please explain the
>> > >> > >> motivation? It
>> > >> > >> > >> did
>> > >> > >> > >> > > come
>> > >> > >> > >> > > > > up
>> > >> > >> > >> > > > > >> in
>> > >> > >> > >> > > > > >> > >> > >> previous
>> > >> > >> > >> > > > > >> > >> > >> > > > > > discussions that some things
>> > like
>> > >> > >> > Operation
>> > >> > >> > >> > and
>> > >> > >> > >> > > > > >> > ResourceType
>> > >> > >> > >> > > > > >> > >> > >> should
>> > >> > >> > >> > > > > >> > >> > >> > > be
>> > >> > >> > >> > > > > >> > >> > >> > > > in
>> > >> > >> > >> > > > > >> > >> > >> > > > > > the clients library, but not
>> > >> > >> Authorizer
>> > >> > >> > >> > itself.
>> > >> > >> > >> > > > Are
>> > >> > >> > >> > > > > we
>> > >> > >> > >> > > > > >> > >> saying
>> > >> > >> > >> > > > > >> > >> > >> that
>> > >> > >> > >> > > > > >> > >> > >> > > any
>> > >> > >> > >> > > > > >> > >> > >> > > > > > pluggable interface should be
>> > in
>> > >> > Java
>> > >> > >> so
>> > >> > >> > >> that
>> > >> > >> > >> > > > users
>> > >> > >> > >> > > > > can
>> > >> > >> > >> > > > > >> > >> > >> implement
>> > >> > >> > >> > > > > >> > >> > >> > it
>> > >> > >> > >> > > > > >> > >> > >> > > > > > without including the Scala
>> > >> library?
>> > >> > >> > >> > > > > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > > Grant, you originally
>> suggested
>> > >> that
>> > >> > >> some
>> > >> > >> > >> > things
>> > >> > >> > >> > > > > would
>> > >> > >> > >> > > > > >> > have
>> > >> > >> > >> > > > > >> > >> to
>> > >> > >> > >> > > > > >> > >> > >> be
>> > >> > >> > >> > > > > >> > >> > >> > in
>> > >> > >> > >> > > > > >> > >> > >> > > > the
>> > >> > >> > >> > > > > >> > >> > >> > > > > > Java side as well. Can you
>> > please
>> > >> > >> > >> elaborate on
>> > >> > >> > >> > > > this?
>> > >> > >> > >> > > > > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > > > Ismael
>> > >> > >> > >> > > > > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > >
>> > >> > >> > >> > > > > >> > >> > >> > > >
>> > >> > >> > >> > > > > >> > >> > >> > > >
>> > >> > >> > >> > > > > >> > >> > >> > > >
>> > >> > >> > >> > > > > >> > >> > >> > > > --
>> > >> > >> > >> > > > > >> > >> > >> > > > Grant Henke
>> > >> > >> > >> > > > > >> > >> > >> > > > Software Engineer | Cloudera
>> > >> > >> > >> > > > > >> > >> > >> > > > gr...@cloudera.com
>> <javascript:;>
>> > |
>> > >> > >> > >> > > > twitter.com/gchenke
>> > >> > >> > >> > > > > |
>> > >> > >> > >> > > > > >> > >> > >> linkedin.com/in/granthenke
>> > >> > >> > >> > > > > >> > >> > >> > > >
>> > >> > >> > >> > > > > >> > >> > >> > >
>> > >> > >> > >> > > > > >> > >> > >> >
>> > >> > >> > >> > > > > >> > >> > >> >
>> > >> > >> > >> > > > > >> > >> > >> >
>> > >> > >> > >> > > > > >> > >> > >> > --
>> > >> > >> > >> > > > > >> > >> > >> > Grant Henke
>> > >> > >> > >> > > > > >> > >> > >> > Software Engineer | Cloudera
>> > >> > >> > >> > > > > >> > >> > >> > gr...@cloudera.com <javascript:;> |
>> > >> > >> > >> > twitter.com/gchenke
>> > >> > >> > >> > > |
>> > >> > >> > >> > > > > >> > >> linkedin.com/in/granthenke
>> > >> > >> > >> > > > > >> > >> > >> >
>> > >> > >> > >> > > > > >> > >> > >>
>> > >> > >> > >> > > > > >> > >> > >
>> > >> > >> > >> > > > > >> > >> > >
>> > >> > >> > >> > > > > >> > >> > >
>> > >> > >> > >> > > > > >> > >> > > --
>> > >> > >> > >> > > > > >> > >> > >
>> > >> > >> > >> > > > > >> > >> > > Regards,
>> > >> > >> > >> > > > > >> > >> > > Ashish
>> > >> > >> > >> > > > > >> > >> > >
>> > >> > >> > >> > > > > >> > >> >
>> > >> > >> > >> > > > > >> > >> >
>> > >> > >> > >> > > > > >> > >> >
>> > >> > >> > >> > > > > >> > >> > --
>> > >> > >> > >> > > > > >> > >> >
>> > >> > >> > >> > > > > >> > >> > Regards,
>> > >> > >> > >> > > > > >> > >> > Ashish
>> > >> > >> > >> > > > > >> > >>
>> > >> > >> > >> > > > > >> > >
>> > >> > >> > >> > > > > >> > >--
>> > >> > >> > >> > > > > >> > >
>> > >> > >> > >> > > > > >> > >Regards,
>> > >> > >> > >> > > > > >> > >Ashish
>> > >> > >> > >> > > > > >> >
>> > >> > >> > >> > > > > >> >
>> > >> > >> > >> > > > > >>
>> > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >--
>> > >> > >> > >> > > > > >
>> > >> > >> > >> > > > > >Regards,
>> > >> > >> > >> > > > > >Ashish
>> > >> > >> > >> > > > >
>> > >> > >> > >> > > > >
>> > >> > >> > >> > > >
>> > >> > >> > >> > > > --
>> > >> > >> > >> > > > Ashish 🎤h
>> > >> > >> > >> > > >
>> > >> > >> > >> > >
>> > >> > >> > >> >
>> > >> > >> > >> >
>> > >> > >> > >> >
>> > >> > >> > >> > --
>> > >> > >> > >> >
>> > >> > >> > >> > Regards,
>> > >> > >> > >> > Ashish
>> > >> > >> > >> >
>> > >> > >> > >>
>> > >> > >> > >
>> > >> > >> > >
>> > >> > >> > >
>> > >> > >> > > --
>> > >> > >> > >
>> > >> > >> > > Regards,
>> > >> > >> > > Ashish
>> > >> > >> > >
>> > >> > >> >
>> > >> > >> >
>> > >> > >> >
>> > >> > >> > --
>> > >> > >> >
>> > >> > >> > Regards,
>> > >> > >> > Ashish
>> > >> > >> >
>> > >> > >>
>> > >> > >>
>> > >> > >>
>> > >> > >> --
>> > >> > >> Grant Henke
>> > >> > >> Software Engineer | Cloudera
>> > >> > >> gr...@cloudera.com | twitter.com/gchenke |
>> > linkedin.com/in/granthenke
>> > >> > >>
>> > >> > >
>> > >> > >
>> > >> > >
>> > >> > > --
>> > >> > >
>> > >> > > Regards,
>> > >> > > Ashish
>> > >> > >
>> > >> >
>> > >> >
>> > >> >
>> > >> > --
>> > >> >
>> > >> > Regards,
>> > >> > Ashish
>> > >> >
>> > >>
>> > >
>> > >
>> > >
>> > > --
>> > >
>> > > Regards,
>> > > Ashish
>> >
>> >
>>
>
>
>
> --
>
> Regards,
> Ashish

Reply via email to