Thanks Colin.

If there are no other concerns, I will start vote later today. Many thanks
to every one for the feedback.

Regards,

Rajini


On Thu, Aug 15, 2019 at 11:57 PM Colin McCabe <cmcc...@apache.org> wrote:

> Thanks, Rajini.  It looks good to me.
>
> best,
> Colin
>
>
> On Thu, Aug 15, 2019, at 11:37, Rajini Sivaram wrote:
> > Hi Colin,
> >
> > Thanks for the review. I have updated the KIP to move the interfaces for
> > request context and server info to the authorizer package. These are now
> > called AuthorizableRequestContext and AuthorizerServerInfo. Endpoint is
> now
> > a class in org.apache.kafka.common to make it reusable since we already
> > have multiple implementations of it. I have removed requestName from the
> > request context interface since authorizers can distinguish follower
> fetch
> > and consumer fetch from the operation being authorized. So 16-bit request
> > type should be sufficient for audit logging.  Also replaced AuditFlag
> with
> > two booleans as you suggested.
> >
> > Can you take another look and see if the KIP is ready for voting?
> >
> > Thanks for all your help!
> >
> > Regards,
> >
> > Rajini
> >
> > On Wed, Aug 14, 2019 at 8:59 PM Colin McCabe <cmcc...@apache.org> wrote:
> >
> > > Hi Rajini,
> > >
> > > I think it would be good to rename KafkaRequestContext to something
> like
> > > AuthorizableRequestContext, and put it in the
> > > org.apache.kafka.server.authorizer namespace.  If we put it in the
> > > org.apache.kafka.common namespace, then it's not really clear that it's
> > > part of the Authorizer API.  Since this class is purely an interface,
> with
> > > no concrete implementation of anything, there's nothing common to
> really
> > > reuse in any case.  We definitely don't want someone to accidentally
> add or
> > > remove methods because they think this is just another internal class
> used
> > > for requests.
> > >
> > > The BrokerInfo class is a nice improvement.  It looks like it will be
> > > useful for passing in information about the context we're running in.
> It
> > > would be nice to call this class ServerInfo rather than BrokerInfo,
> since
> > > we will want to run the authorizer on controllers as well as on
> brokers,
> > > and the controller may run as a separate process post KIP-500.  I also
> > > think that this class should be in the
> org.apache.kafka.server.authorizer
> > > namespace.  Again, it is an interface, not a concrete implementation,
> and
> > > it's an interface that is very specifically for the authorizer.
> > >
> > > I agree that we probably don't have enough information preserved for
> > > requests currently to always know what entity made them.  So we can
> leave
> > > that out for now (except in the special case of Fetch).  Perhaps we
> can add
> > > this later if it's needed.
> > >
> > > I understand the intention behind AuthorizationMode (which is now
> called
> > > AuditFlag in the latest revision).  But it still feels complex.  What
> if we
> > > just had two booleans in Action: logSuccesses and logFailures?  That
> seems
> > > to cover all the cases here.  MANDATORY_AUTHORIZE = true, true.
> > > OPTIONAL_AUTHORIZE = true, false.  FILTER = true, false.
> LIST_AUTHORIZED =
> > > false, false.  Would there be anything lost versus having the enum?
> > >
> > > best,
> > > Colin
> > >
> > >
> > > On Wed, Aug 14, 2019, at 06:29, Mickael Maison wrote:
> > > > Hi Rajini,
> > > >
> > > > Thanks for the KIP!
> > > > I really like that authorize() will be able to take a batch of
> > > > requests, this will speed up many implementations!
> > > >
> > > > On Tue, Aug 13, 2019 at 5:57 PM Rajini Sivaram <
> rajinisiva...@gmail.com>
> > > wrote:
> > > > >
> > > > > Thanks David! I have fixed the typo.
> > > > >
> > > > > Also made a couple of changes to make the context interfaces more
> > > generic.
> > > > > KafkaRequestContext now returns the 16-bit API key as Colin
> suggested
> > > as
> > > > > well as the friendly name used in metrics which are useful in audit
> > > logs.
> > > > > `Authorizer#start` is now provided a generic `BrokerInfo` interface
> > > that
> > > > > gives cluster id, broker id and endpoint information. The generic
> > > interface
> > > > > can potentially be used in other broker plugins in future and
> provides
> > > > > dynamically generated configs like broker id and ports which are
> > > currently
> > > > > not available to plugins unless these configs are statically
> > > configured.
> > > > > Please let me know if there are any concerns.
> > > > >
> > > > > Regards,
> > > > >
> > > > > Rajini
> > > > >
> > > > > On Tue, Aug 13, 2019 at 4:30 PM David Jacot <dja...@confluent.io>
> > > wrote:
> > > > >
> > > > > > Hi Rajini,
> > > > > >
> > > > > > Thank you for the update! It looks good to me. There is a typo
> in the
> > > > > > `AuditFlag` enum: `MANDATORY_AUTHOEIZE` -> `MANDATORY_AUTHORIZE`.
> > > > > >
> > > > > > Regards,
> > > > > > David
> > > > > >
> > > > > > On Mon, Aug 12, 2019 at 2:54 PM Rajini Sivaram <
> > > rajinisiva...@gmail.com>
> > > > > > wrote:
> > > > > >
> > > > > > > Hi David,
> > > > > > >
> > > > > > > Thanks for reviewing the KIP! Since questions about
> `authorization
> > > mode`
> > > > > > > and `count` have come up multiple times, I have renamed both.
> > > > > > >
> > > > > > > 1) Renamed `count` to `resourceReferenceCount`. It is the
> number
> > > of times
> > > > > > > the resource being authorized is referenced within the request.
> > > > > > >
> > > > > > > 2) Renamed `AuthorizationMode` to `AuditFlag`. It is provided
> to
> > > improve
> > > > > > > audit logging in the authorizer. The enum values have javadoc
> which
> > > > > > > indicate how the authorization result is used in each of the
> modes
> > > to
> > > > > > > enable authorizers to log audit messages at the right severity
> > > level.
> > > > > > >
> > > > > > > Regards,
> > > > > > >
> > > > > > > Rajini
> > > > > > >
> > > > > > > On Mon, Aug 12, 2019 at 5:54 PM David Jacot <
> dja...@confluent.io>
> > > wrote:
> > > > > > >
> > > > > > > > Hi Rajini,
> > > > > > > >
> > > > > > > > Thank you for the KIP. Overall, it looks good to me. I have
> few
> > > > > > > > questions/suggestions:
> > > > > > > >
> > > > > > > > 1. It is hard to grasp what `Action#count` is for. I guess I
> > > understand
> > > > > > > > where you want to go with it but it took me a while to
> figure it
> > > out.
> > > > > > > > Perhaps, we could come up with a better name than `count`?
> > > > > > > >
> > > > > > > > 2. I had a hard time trying to understand the
> `AuthorizationMode`
> > > > > > > concept,
> > > > > > > > especially wrt. the OPTIONAL one. My understanding is that an
> > > ACL is
> > > > > > > either
> > > > > > > > defined or not. Could you elaborate a bit more on that?
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > > David
> > > > > > > >
> > > > > > > > On Fri, Aug 9, 2019 at 10:26 PM Don Bosco Durai <
> > > bo...@apache.org>
> > > > > > > wrote:
> > > > > > > >
> > > > > > > > > Hi Rajini
> > > > > > > > >
> > > > > > > > > 3.2 - This makes sense. Thanks for clarifying.
> > > > > > > > >
> > > > > > > > > Rest looks fine. Once the implementations are done, it
> will be
> > > more
> > > > > > > clear
> > > > > > > > > on the different values RequestType and Mode.
> > > > > > > > >
> > > > > > > > > Thanks
> > > > > > > > >
> > > > > > > > > Bosco
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On 8/9/19, 5:08 AM, "Rajini Sivaram" <
> rajinisiva...@gmail.com
> > > >
> > > > > > wrote:
> > > > > > > > >
> > > > > > > > >     Hi Don,
> > > > > > > > >
> > > > > > > > >     Thanks for the suggestions. A few responses below:
> > > > > > > > >
> > > > > > > > >     3.1 Can rename and improve docs if we keep this. Let's
> > > finish the
> > > > > > > > >     discussion on Colin's suggestions regarding this first.
> > > > > > > > >     3.2 No, I was thinking of some requests that have an
> old
> > > way of
> > > > > > > > > authorizing
> > > > > > > > >     and a new way where we have retained the old way for
> > > backward
> > > > > > > > >     compatibility. One example is Cluster:Create
> permission to
> > > create
> > > > > > > > > topics.
> > > > > > > > >     We have replaced this with fine-grained topic create
> > > access using
> > > > > > > > > Topic:Create
> > > > > > > > >     for topic patterns. But we still check if user has
> > > Cluster:Create
> > > > > > > > > first. If
> > > > > > > > >     Denied, the deny is ignored and we check Topic:Create.
> We
> > > dont
> > > > > > want
> > > > > > > > to
> > > > > > > > > log
> > > > > > > > >     DENY for Cluster:Create at INFO level for this, since
> this
> > > is
> > > > > > not a
> > > > > > > > >     mandatory ACL for creating topics. We will get
> appropriate
> > > logs
> > > > > > > from
> > > > > > > > > the
> > > > > > > > >     subsequent Topic:Create in this case.
> > > > > > > > >     3.3 They are not quite the same. FILTER implies that
> user
> > > > > > actually
> > > > > > > > >     requested access to and performed some operation on the
> > > filtered
> > > > > > > > > resources.
> > > > > > > > >     LIST_AUTHORZED did not result in any actual access.
> User
> > > simply
> > > > > > > > wanted
> > > > > > > > > to
> > > > > > > > >     know what they are allowed to access.
> > > > > > > > >     3.4 Request types are Produce, JoinGroup, OffsetCommit
> > > etc. So
> > > > > > that
> > > > > > > > is
> > > > > > > > >     different from authorization mode, operation etc.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >     On Thu, Aug 8, 2019 at 11:36 PM Don Bosco Durai <
> > > > > > bo...@apache.org>
> > > > > > > > > wrote:
> > > > > > > > >
> > > > > > > > >     > Hi Rajini
> > > > > > > > >     >
> > > > > > > > >     > Thanks for clarifying. This is very helpful...
> > > > > > > > >     >
> > > > > > > > >     > #1 - On the Ranger side, we should be able to handle
> > > multiple
> > > > > > > > > requests at
> > > > > > > > >     > the same time. I was just not sure how much
> processing
> > > overhead
> > > > > > > > will
> > > > > > > > > be
> > > > > > > > >     > there on the Broker side to split and then
> consolidate
> > > the
> > > > > > > results.
> > > > > > > > > If it
> > > > > > > > >     > is negligible,  then this is the better way. It will
> > > make it
> > > > > > > future
> > > > > > > > > proof.
> > > > > > > > >     > #2 -  I agree, having a single "start" call makes it
> > > cleaner.
> > > > > > The
> > > > > > > > >     > Authorization implementation will only have to do the
> > > > > > > > initialization
> > > > > > > > > only
> > > > > > > > >     > once.
> > > > > > > > >     > #3.1 - Thanks for the clarification. I think it makes
> > > sense to
> > > > > > > have
> > > > > > > > > this.
> > > > > > > > >     > The term "Mode" might not be explicit enough.
> > > Essentially it
> > > > > > > seems
> > > > > > > > > you want
> > > > > > > > >     > the Authorizer to know the Intent/Purpose of the
> > > authorize call
> > > > > > > and
> > > > > > > > > let the
> > > > > > > > >     > Authorizer decide what to log as Audit event.
> Changing
> > > the
> > > > > > > > > class/field name
> > > > > > > > >     > or giving more documentation will do.
> > > > > > > > >     > #3.2 - Regarding the option "OPTIONAL". Are you
> thinking
> > > from
> > > > > > > > > chaining
> > > > > > > > >     > multiple Authorizer? If so,  I am not sure whether
> the
> > > Broker
> > > > > > > would
> > > > > > > > > have
> > > > > > > > >     > enough information to make that decision. I feel the
> > > Authorizer
> > > > > > > > will
> > > > > > > > > be the
> > > > > > > > >     > one who would have that knowledge. E.g. in Ranger we
> have
> > > > > > > explicit
> > > > > > > > > deny,
> > > > > > > > >     > which means no matter what, the request should be
> denied
> > > for
> > > > > > the
> > > > > > > > > user/group
> > > > > > > > >     > or condition. So if you are thinking of chaining
> > > Authorizers,
> > > > > > > then
> > > > > > > > >     > responses should have the third state, e.g.
> > > "DENIED_FINAL", in
> > > > > > > > which
> > > > > > > > > case
> > > > > > > > >     > if there is an Authorization chain, it will be stop
> and
> > > the
> > > > > > > request
> > > > > > > > > will be
> > > > > > > > >     > denied and if it is just denied, then you might fall
> > > back to
> > > > > > next
> > > > > > > > >     > authorizer. If we don't have chaining of Authorizing
> in
> > > mind,
> > > > > > > then
> > > > > > > > we
> > > > > > > > >     > should reconsider OPTIONAL for now. Or clarify under
> > > which
> > > > > > > scenario
> > > > > > > > >     > OPTIONAL will be called.
> > > > > > > > >     > #3.3 Regarding, FILTER v/s LIST_AUTHORIZED, isn't
> > > > > > > LIST_AUTHORIZED a
> > > > > > > > >     > special case for "FILTER"?
> > > > > > > > >     > #3.4 KafkaRequestContext. requestType() v/s Action.
> > > > > > > > > authorizationMode. I
> > > > > > > > >     > am not sure about the overlap or ambiguity.
> > > > > > > > >     > #4 - Cool. This is good, it will be less stress on
> the
> > > > > > > Authorizer.
> > > > > > > > > Ranger
> > > > > > > > >     > already supports the "count" concept and also has
> > > batching
> > > > > > > > > capability to
> > > > > > > > >     > aggregate similar requests to reduce the number of
> audit
> > > logs
> > > > > > to
> > > > > > > > > write. We
> > > > > > > > >     > should be able to pass this through.
> > > > > > > > >     > #5 - Assuming if the object instance is going out of
> > > scope, we
> > > > > > > > > should be
> > > > > > > > >     > fine. Not a super important ask. Ranger is already
> > > catching
> > > > > > KILL
> > > > > > > > > signal for
> > > > > > > > >     > clean up.
> > > > > > > > >     >
> > > > > > > > >     > Thanks again. These are good enhancements. Appreciate
> > > your
> > > > > > > efforts
> > > > > > > > > here.
> > > > > > > > >     >
> > > > > > > > >     > Bosco
> > > > > > > > >     >
> > > > > > > > >     >
> > > > > > > > >     >
> > > > > > > > >     > On 8/8/19, 2:03 AM, "Rajini Sivaram" <
> > > rajinisiva...@gmail.com
> > > > > > >
> > > > > > > > > wrote:
> > > > > > > > >     >
> > > > > > > > >     >     Hi Don,
> > > > > > > > >     >
> > > > > > > > >     >     Thanks for reviewing the KIP.
> > > > > > > > >     >
> > > > > > > > >     >     1. I had this originally as a single Action, but
> > > thought it
> > > > > > > may
> > > > > > > > > be
> > > > > > > > >     > useful
> > > > > > > > >     >     to support batched authorize calls as well and
> keep
> > > it
> > > > > > > > > consistent with
> > > > > > > > >     >     other methods. Single requests can contain
> multiple
> > > topics.
> > > > > > > For
> > > > > > > > >     > example a
> > > > > > > > >     >     produce request can contain records for several
> > > partitions
> > > > > > of
> > > > > > > > > different
> > > > > > > > >     >     topics. Broker could potentially authorize these
> > > together.
> > > > > > > For
> > > > > > > > >     >     SimpleAclAuthorizer, batched authorize methods
> don't
> > > > > > provide
> > > > > > > > any
> > > > > > > > >     >     optimisation since lookup is based on resources
> > > followed by
> > > > > > > the
> > > > > > > > >     > matching
> > > > > > > > >     >     logic. But some authorizers may manage ACLs by
> user
> > > > > > principal
> > > > > > > > > rather
> > > > > > > > >     > than
> > > > > > > > >     >     resource and may be able to optimize batched
> > > requests. I am
> > > > > > > ok
> > > > > > > > > with
> > > > > > > > >     > using
> > > > > > > > >     >     single Action if this is likely to cause issues.
> > > > > > > > >     >     2. If you have two listeners, one for
> inter-broker
> > > traffic
> > > > > > > and
> > > > > > > > > another
> > > > > > > > >     > for
> > > > > > > > >     >     external clients, start method is invoked twice,
> > > once for
> > > > > > > each
> > > > > > > > >     > listener. On
> > > > > > > > >     >     second thought, that may be confusing and a
> single
> > > start()
> > > > > > > > > invocation
> > > > > > > > >     > that
> > > > > > > > >     >     provides all listener information and returns
> > > multiple
> > > > > > > futures
> > > > > > > > > would be
> > > > > > > > >     >     better. Will update the KIP.
> > > > > > > > >     >     3. A typical example is a consumer subscribing
> to a
> > > regex
> > > > > > > > > pattern. We
> > > > > > > > >     >     request all topic metadata from the broker in
> order
> > > to
> > > > > > decide
> > > > > > > > > whether
> > > > > > > > >     > the
> > > > > > > > >     >     pattern matches, expecting to receive a list of
> > > authorised
> > > > > > > > > topics. The
> > > > > > > > >     > user
> > > > > > > > >     >     is not asking to subscribe to an unauthorized
> topic.
> > > If
> > > > > > there
> > > > > > > > > are 10000
> > > > > > > > >     >     topics in the cluster and the user has access to
> 100
> > > of
> > > > > > them,
> > > > > > > > at
> > > > > > > > > the
> > > > > > > > >     > moment
> > > > > > > > >     >     we log 9900 DENIED log entries at INFO level in
> > > > > > > > > SimpleAclAuthorizer.
> > > > > > > > >     > The
> > > > > > > > >     >     proposal is to authorize this request with
> > > > > > > > > AuthorizationMode.FILTER, so
> > > > > > > > >     >     that authorizers can log resources that are
> filtered
> > > out at
> > > > > > > > > lower level
> > > > > > > > >     >     like DEBUG since this is not an attempt to access
> > > > > > > unauthorized
> > > > > > > > >     > resources.
> > > > > > > > >     >     Brokers already handle these differently since no
> > > > > > > authorization
> > > > > > > > > error
> > > > > > > > >     > is
> > > > > > > > >     >     returned to the client in these cases. Providing
> > > > > > > authorization
> > > > > > > > > mode to
> > > > > > > > >     >     authorizers enables authorizer implementations to
> > > generate
> > > > > > > > > better audit
> > > > > > > > >     >     logs.
> > > > > > > > >     >     4. Each request may contain multiple instances of
> > > the same
> > > > > > > > > authorizable
> > > > > > > > >     >     resource. For example a produce request may
> contain
> > > records
> > > > > > > for
> > > > > > > > > 10
> > > > > > > > >     >     partitions of the same topic. At the moment, we
> > > invoke
> > > > > > > > authorize
> > > > > > > > >     > method 10
> > > > > > > > >     >     times. The proposal is to invoke it once with
> > > count=10. The
> > > > > > > > > count is
> > > > > > > > >     >     provided to authorizer just for audit logging
> > > purposes.
> > > > > > > > >     >     5. Authorizer implements Closeable, so you could
> use
> > > > > > close()
> > > > > > > to
> > > > > > > > > flush
> > > > > > > > >     >     audits?
> > > > > > > > >     >
> > > > > > > > >     >     On Thu, Aug 8, 2019 at 7:01 AM Don Bosco Durai <
> > > > > > > > bo...@apache.org
> > > > > > > > > >
> > > > > > > > >     > wrote:
> > > > > > > > >     >
> > > > > > > > >     >     > Rajini
> > > > > > > > >     >     >
> > > > > > > > >     >     > Thanks for putting this together. It is looking
> > > good. I
> > > > > > > have
> > > > > > > > > few
> > > > > > > > >     >     > questions...
> > > > > > > > >     >     >
> > > > > > > > >     >     > 1. List<AuthorizationResult> authorize(...,
> > > List<Action>
> > > > > > > > > actions).
> > > > > > > > >     > Do you
> > > > > > > > >     >     > see a scenario where the broker will call
> > > authorize for
> > > > > > > > > multiple
> > > > > > > > >     > topics at
> > > > > > > > >     >     > the same time? I can understand that during
> > > > > > > creating/deleting
> > > > > > > > > ACLS,
> > > > > > > > >     >     > multiple permissions for multiple resources
> might
> > > be
> > > > > > done.
> > > > > > > > For
> > > > > > > > >     > authorize
> > > > > > > > >     >     > call, would this be a case? And does the
> Authorize
> > > > > > > > > implementation
> > > > > > > > >     > will be
> > > > > > > > >     >     > able to do performance optimization because of
> > > this? Or
> > > > > > > > should
> > > > > > > > > we
> > > > > > > > >     > just keep
> > > > > > > > >     >     > it simple? I don't see it as an issue from
> Apache
> > > Ranger
> > > > > > > > side,
> > > > > > > > > but
> > > > > > > > >     > just
> > > > > > > > >     >     > checking to see whether we need to be aware of
> > > something.
> > > > > > > > >     >     > 2. Should I assume that the SecurityProtocol
> passed
> > > > > > during
> > > > > > > > > start and
> > > > > > > > >     > the
> > > > > > > > >     >     > one return by
> > > KafkaRequestContext.securityProtocol() will
> > > > > > > be
> > > > > > > > > the
> > > > > > > > >     > same?
> > > > > > > > >     >     > CompletableFuture<Void> start(String
> listenerName,
> > > > > > > > > SecurityProtocol
> > > > > > > > >     >     > securityProtocol);
> > > > > > > > >     >     > KafkaRequestContext.securityProtocol()
> > > > > > > > >     >     > 3. What is the purpose of AuthorizationMode?
> How
> > > does the
> > > > > > > > > broker
> > > > > > > > >     > decide
> > > > > > > > >     >     > what mode to use when the authorize() method is
> > > called?
> > > > > > > > >     >     > 4. Can we clarify "count" in Action a bit more?
> > > How is it
> > > > > > > > used?
> > > > > > > > >     >     > 5. Do you feel having "stop" along with
> "start" be
> > > > > > helpful?
> > > > > > > > > E.g. In
> > > > > > > > >     > Ranger
> > > > > > > > >     >     > we try to optimize the Audit writing by caching
> > > the logs
> > > > > > > for
> > > > > > > > a
> > > > > > > > > fixed
> > > > > > > > >     >     > interval. But when the Broker terminates, we
> do a
> > > forced
> > > > > > > > flush.
> > > > > > > > >     > Having an
> > > > > > > > >     >     > explicit "stop" might give us a formal way to
> > > flush our
> > > > > > > > audits.
> > > > > > > > >     >     >
> > > > > > > > >     >     > Thanks
> > > > > > > > >     >     >
> > > > > > > > >     >     > Bosco
> > > > > > > > >     >     >
> > > > > > > > >     >     > On 8/7/19, 3:59 PM, "Rajini Sivaram" <
> > > > > > > > rajinisiva...@gmail.com
> > > > > > > > > >
> > > > > > > > >     > wrote:
> > > > > > > > >     >     >
> > > > > > > > >     >     >     Hi Ron/Harsha/Satish,
> > > > > > > > >     >     >
> > > > > > > > >     >     >     Thanks for reviewing the KIP!
> > > > > > > > >     >     >
> > > > > > > > >     >     >     We should perhaps have a wider discussion
> > > outside
> > > > > > this
> > > > > > > > KIP
> > > > > > > > > for
> > > > > > > > >     >     > refactoring
> > > > > > > > >     >     >     clients so that others who are not
> following
> > > this KIP
> > > > > > > > also
> > > > > > > > >     > notice the
> > > > > > > > >     >     >     discussion. Satish, would you like to
> start a
> > > > > > > discussion
> > > > > > > > > thread
> > > > > > > > >     > on dev?
> > > > > > > > >     >     >
> > > > > > > > >     >     >     Regards,
> > > > > > > > >     >     >
> > > > > > > > >     >     >     Rajini
> > > > > > > > >     >     >
> > > > > > > > >     >     >
> > > > > > > > >     >     >     On Wed, Aug 7, 2019 at 6:21 PM Satish
> Duggana <
> > > > > > > > >     >     > satish.dugg...@gmail.com>
> > > > > > > > >     >     >     wrote:
> > > > > > > > >     >     >
> > > > > > > > >     >     >     > I felt the same need when we want to add
> a
> > > > > > pluggable
> > > > > > > > API
> > > > > > > > > for
> > > > > > > > >     > core
> > > > > > > > >     >     >     > server functionality. This does not need
> to
> > > be part
> > > > > > > of
> > > > > > > > > this
> > > > > > > > >     > KIP, it
> > > > > > > > >     >     >     > can be a separate KIP. I can contribute
> those
> > > > > > > > refactoring
> > > > > > > > >     > changes if
> > > > > > > > >     >     >     > others are OK with that.
> > > > > > > > >     >     >     >
> > > > > > > > >     >     >     > It is better to have a structure like
> below.
> > > > > > > > >     >     >     >
> > > > > > > > >     >     >     > kafka-common:
> > > > > > > > >     >     >     > common classes which can be used in any
> of
> > > the
> > > > > > other
> > > > > > > > > modules
> > > > > > > > >     > in Kafka
> > > > > > > > >     >     >     > like client, Kafka-server-common and
> server
> > > etc.
> > > > > > > > >     >     >     >
> > > > > > > > >     >     >     > kafka-client-common:
> > > > > > > > >     >     >     > common classes which can be used in the
> > > client
> > > > > > > module.
> > > > > > > > > This
> > > > > > > > >     > can be
> > > > > > > > >     >     >     > part of client module itself.
> > > > > > > > >     >     >     >
> > > > > > > > >     >     >     > kafka-server-common:
> > > > > > > > >     >     >     > classes required only for kafka-server.
> > > > > > > > >     >     >     >
> > > > > > > > >     >     >     > Thanks.
> > > > > > > > >     >     >     > Satish.
> > > > > > > > >     >     >     >
> > > > > > > > >     >     >     > On Wed, Aug 7, 2019 at 9:28 PM Harsha
> > > Chintalapani
> > > > > > <
> > > > > > > > >     > ka...@harsha.io>
> > > > > > > > >     >     >     > wrote:
> > > > > > > > >     >     >     > >
> > > > > > > > >     >     >     > > Thanks for the KIP Rajini.
> > > > > > > > >     >     >     > > Quick thought, it would be good to
> have a
> > > common
> > > > > > > > module
> > > > > > > > >     > outside of
> > > > > > > > >     >     >     > clients
> > > > > > > > >     >     >     > > that only applies to server side
> > > interfaces &
> > > > > > > > changes.
> > > > > > > > > It
> > > > > > > > >     > looks
> > > > > > > > >     >     > like we
> > > > > > > > >     >     >     > are
> > > > > > > > >     >     >     > > increasingly in favor of using Java
> > > interface for
> > > > > > > > > pluggable
> > > > > > > > >     >     > modules  on
> > > > > > > > >     >     >     > the
> > > > > > > > >     >     >     > > broker side.
> > > > > > > > >     >     >     > >
> > > > > > > > >     >     >     > > Thanks,
> > > > > > > > >     >     >     > > Harsha
> > > > > > > > >     >     >     > >
> > > > > > > > >     >     >     > >
> > > > > > > > >     >     >     > > On Tue, Aug 06, 2019 at 2:31 PM, Rajini
> > > Sivaram <
> > > > > > > > >     >     > rajinisiva...@gmail.com
> > > > > > > > >     >     >     > >
> > > > > > > > >     >     >     > > wrote:
> > > > > > > > >     >     >     > >
> > > > > > > > >     >     >     > > > Hi all,
> > > > > > > > >     >     >     > > >
> > > > > > > > >     >     >     > > > I have created a KIP to replace the
> Scala
> > > > > > > > Authorizer
> > > > > > > > > API
> > > > > > > > >     > with a
> > > > > > > > >     >     > new
> > > > > > > > >     >     >     > Java
> > > > > > > > >     >     >     > > > API:
> > > > > > > > >     >     >     > > >
> > > > > > > > >     >     >     > > > -
> > > > > > > > >     >     >     > > >
> > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/
> > > > > > > > >     >     >     > > >
> > > KIP-504+-+Add+new+Java+Authorizer+Interface
> > > > > > > > >     >     >     > > >
> > > > > > > > >     >     >     > > > This is replacement for KIP-50 which
> was
> > > > > > accepted
> > > > > > > > > but never
> > > > > > > > >     >     > merged.
> > > > > > > > >     >     >     > Apart
> > > > > > > > >     >     >     > > > from moving to a Java API consistent
> > > with other
> > > > > > > > > pluggable
> > > > > > > > >     >     > interfaces
> > > > > > > > >     >     >     > in the
> > > > > > > > >     >     >     > > > broker, KIP-504 also attempts to
> address
> > > known
> > > > > > > > > limitations
> > > > > > > > >     > in the
> > > > > > > > >     >     >     > > > authorizer. If you have come across
> other
> > > > > > > > > limitations that
> > > > > > > > >     > you
> > > > > > > > >     >     > would
> > > > > > > > >     >     >     > like
> > > > > > > > >     >     >     > > > to see addressed in the new API,
> please
> > > raise
> > > > > > > these
> > > > > > > > > on the
> > > > > > > > >     >     > discussion
> > > > > > > > >     >     >     > > > thread so that we can consider those
> > > too. All
> > > > > > > > > suggestions
> > > > > > > > >     > and
> > > > > > > > >     >     > feedback
> > > > > > > > >     >     >     > are
> > > > > > > > >     >     >     > > > welcome.
> > > > > > > > >     >     >     > > >
> > > > > > > > >     >     >     > > > Thank you,
> > > > > > > > >     >     >     > > >
> > > > > > > > >     >     >     > > > Rajini
> > > > > > > > >     >     >     > > >
> > > > > > > > >     >     >     >
> > > > > > > > >     >     >
> > > > > > > > >     >     >
> > > > > > > > >     >     >
> > > > > > > > >     >     >
> > > > > > > > >     >
> > > > > > > > >     >
> > > > > > > > >     >
> > > > > > > > >     >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > >
> > >
> >
>

Reply via email to