>
> The follow-up question is where these classes should live. We have the
> common package in clients for common code. However, if something is
> exclusively used by the broker, we could add it under core/src/main/java
> instead. There are pros and cons for each approach, so I was wondering if
> some thought has gone into this already.


Just adding my 2 cents here. Since the implemented Authorizer needs to
exist on the brokers classpath, I think the interface should be a part of
the core package regardless of any Java vs Scala choice. Its components,
that need to be used in the clients for requests/responses should be in the
clients/common package though. Some of this has been done in my preliminary
ACLs request/response pull request:
https://github.com/apache/kafka/pull/1005

On Wed, Apr 6, 2016 at 11:20 AM, Grant Henke <ghe...@cloudera.com> 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> 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> 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> 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>
>> wrote:
>> > >
>> > > > Hi Jay,
>> > > >
>> > > > On Wed, Apr 6, 2016 at 3:48 AM, Jay Kreps <j...@confluent.io> 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 | twitter.com/gchenke | linkedin.com/in/granthenke
>> >
>>
>
>
>
> --
> Grant Henke
> Software Engineer | Cloudera
> gr...@cloudera.com | twitter.com/gchenke | linkedin.com/in/granthenke
>



-- 
Grant Henke
Software Engineer | Cloudera
gr...@cloudera.com | twitter.com/gchenke | linkedin.com/in/granthenke

Reply via email to