Thanks David for the review! Great suggestion, addressed in the KIP.

On Thu, Apr 16, 2020 at 7:40 AM David Jacot <dja...@confluent.io> wrote:

> Hi Boyang,
>
> Thanks for the KIP. Overall, it looks good to me. I really like the
> envelope RPC!
>
> One minor comment regarding the `old-client-connections-count` metric. Is
> it really necessary? The number of connected clients whose version is not
> known (prior to KIP-511) is already reported but with an "unknown" software
> name and an "unknown" software version, which is, I suppose, similar to
> what
> you intend to expose with this new metric, isn't it?
>
> Regards,
> David
>
> On Thu, Apr 16, 2020 at 7:24 AM Boyang Chen <reluctanthero...@gmail.com>
> wrote:
>
> > Thanks Raymond and Colin for the detailed discussions! I totally agree
> > with the rational here. The new `Envelope` RPC has been added to the KIP
> > and the forwarding section logic has been revised, feel free to take
> > another look.
> >
> > On Wed, Apr 15, 2020 at 5:19 PM Colin McCabe <cmcc...@apache.org> wrote:
> >
> > > Hi Boyang,
> > >
> > > I agree that we need a version bump on the request types we are going
> to
> > > forward.  The new versions will be able to return the NOT_CONTROLLER
> > error,
> > > and let the client do the retrying, which is what we typically prefer.
> > > The  existing versions can't ever return NOT_CONTROLLER.
> > >
> > > Since we have to have a new version for all these requests, we could
> > > technically do everything with just optional fields, like we originally
> > > discussed.  However, there is probably some value in having a real
> > > EnvelopeRequest (or whatever) that makes it clearer what is going on.
> > > Optional fields don't come with "guard rails" to prevent us from
> > > accidentally ignoring them on older versions of the broker.  A new
> ApiKey
> > > certainly does.
> > >
> > > Another issue is that it's nice to avoid changing the version of the
> > > request when forwarding it.  Sometimes different versions have slightly
> > > different semantics, and it simplifies things to avoid worrying about
> > that.
> > >
> > > We should restrict the use of forwarding to just principals that have
> > > CLUSTERACTION on CLUSTER for now, so that only the brokers and
> superusers
> > > can do it.
> > >
> > > best,
> > > Colin
> > >
> > >
> > > On Tue, Apr 14, 2020, at 13:15, Boyang Chen wrote:
> > > > Thanks Raymond for the proposal! Yea, adding a unified forwarding
> > > envelope
> > > > request is a good idea, but it doesn't really solve our problem in
> this
> > > KIP.
> > > >
> > > > On Mon, Apr 13, 2020 at 11:14 PM Raymond Ng <r...@confluent.io>
> wrote:
> > > >
> > > > > Hi Boyang,
> > > > >
> > > > > Thanks for the KIP. Overall looks great.
> > > > >
> > > > > One suggestion: instead of bumping the version and adding an
> optional
> > > field
> > > > > (PrincipalName) for a number of requests, can we consider adding a
> > > general
> > > > > ProxyRequest that acts as an "envelope" for the forwarded requests?
> > > > >
> > > > > A few advantages to this approach come to mind:
> > > > >
> > > > >    1. Add one (new) Request API instead of modifying a number of
> them
> > > > >    2. Make the forwarded nature of the request explicit instead of
> > > > >    implicitly relying on an optional field and a specific version
> > that
> > > > > varies
> > > > >    by type.
> > > > >    3. This approach is flexible enough to be potentially useful
> > beyond
> > > the
> > > > >    current use case (e.g. federated, inter-cluster scenarios)
> > > > >
> > > > > As a bonus, the combination of 1. and 2. should also simplify
> > > > > implementation & validation.
> > > > >
> > > > >
> > > > Firstly the broker has to differentiate old and new admin clients as
> it
> > > > should only support forwarding for old ones. Without a version bump,
> > > broker
> > > > couldn't differentiate both. Besides the bumping of the existing
> > > > protocol is not a big overhead comparing with adding a new RPC, so I
> > > don't
> > > > worry too much about the complexity here.
> > > >
> > > >
> > > > > On the other hand, it's not clear if the underlying RPC request
> > > > > encoding/decode machinery supports embedded requests. Hopefully,
> even
> > > if it
> > > > > doesn't it would not be too difficult to extend.
> > > > >
> > > >
> > > > Making the forwarding behavior more general is great, but could also
> > come
> > > > with problems we couldn't anticipate such as usage abusiveness, more
> > > > changes to auto generation framework and increased metadata overhead.
> > At
> > > > the moment, we don't expect the direct forwarding would be a
> > bottleneck,
> > > so
> > > > I'm more inclined to make this proposal as simple as possible for
> now.
> > If
> > > > we do have a strong need in the future, getting the ProxyRequest is
> > > > definitely worth the effort.
> > > >
> > > >
> > > > > What do you think?
> > > > >
> > > > > Regards,
> > > > > Ray
> > > > >
> > > > >
> > > > > On Wed, Apr 8, 2020 at 4:36 PM Boyang Chen <
> > reluctanthero...@gmail.com
> > > >
> > > > > wrote:
> > > > >
> > > > > > Thanks for the info Agam! Will add to the KIP.
> > > > > >
> > > > > > On Wed, Apr 8, 2020 at 4:26 PM Agam Brahma <abra...@confluent.io
> >
> > > wrote:
> > > > > >
> > > > > > > Hi Boyang,
> > > > > > >
> > > > > > > The KIP already talks about incorporating changes for
> > > FindCoordinator
> > > > > > > request routing, wanted to point out one additional case where
> > > internal
> > > > > > > topics are created "as a side effect":
> > > > > > >
> > > > > > > As part of handling metadata requests, if we are looking for
> > > metadata
> > > > > for
> > > > > > > an internal topic and auto-topic-creation is enabled [1], the
> > > broker
> > > > > > > currently goes ahead and creates the internal topic in the same
> > > way [2]
> > > > > > as
> > > > > > > it would for the FindCoordinator request.
> > > > > > >
> > > > > > > -Agam
> > > > > > >
> > > > > > > [1]
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > >
> >
> https://github.com/apache/kafka/blob/cd1e46c8bb46f1e5303c51f476c74e33b522fce8/core/src/main/scala/kafka/server/KafkaApis.scala#L1096
> > > > > > > [2]
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > >
> >
> https://github.com/apache/kafka/blob/cd1e46c8bb46f1e5303c51f476c74e33b522fce8/core/src/main/scala/kafka/server/KafkaApis.scala#L1041
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On Mon, Apr 6, 2020 at 8:25 PM Boyang Chen <
> > > reluctanthero...@gmail.com
> > > > > >
> > > > > > > wrote:
> > > > > > >
> > > > > > > > Thanks for the various inputs everyone!
> > > > > > > >
> > > > > > > > I think Sonke and Colin's suggestions make sense. The tagged
> > > field
> > > > > also
> > > > > > > > avoids the unnecessary protocol changes for affected
> requests.
> > > Will
> > > > > add
> > > > > > > it
> > > > > > > > to the header. As for the verification, I'm not sure whether
> > it's
> > > > > > > necessary
> > > > > > > > to require a higher permission level, as it is just an
> > ignorable
> > > > > field?
> > > > > > > >
> > > > > > > > Guozhang's suggestions about metrics also sound great, I will
> > > think
> > > > > > > through
> > > > > > > > the use cases and make some changes to the KIP.
> > > > > > > >
> > > > > > > > Best,
> > > > > > > > Boyang
> > > > > > > >
> > > > > > > > On Mon, Apr 6, 2020 at 4:28 PM Guozhang Wang <
> > wangg...@gmail.com
> > > >
> > > > > > wrote:
> > > > > > > >
> > > > > > > > > Thanks for the KIP Boyang, this looks good to me. Some
> minor
> > > > > > comments:
> > > > > > > > >
> > > > > > > > > 1) I think in order to implement the forwarding mechanism
> the
> > > > > brokers
> > > > > > > > needs
> > > > > > > > > some purgatory to keep the forwarded requests; if that's
> > true,
> > > > > should
> > > > > > > we
> > > > > > > > > add some broker-side metrics for those purgatories for
> > > debugging
> > > > > > > > purposes?
> > > > > > > > >
> > > > > > > > > 2) Should we also consider adding some extra metric
> counting
> > > old
> > > > > > > > versioned
> > > > > > > > > admin client request rates (this goes beyond
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-511%3A+Collect+and+Expose+Client%27s+Name+and+Version+in+the+Brokers
> > > > > > > > > since
> > > > > > > > > old versioned client would not report its Kafka version
> > > anyways);
> > > > > one
> > > > > > > use
> > > > > > > > > case I can think of besides debugging purposes, is that if
> we
> > > ever
> > > > > > > > decides
> > > > > > > > > to break compatibility in future versions way after the
> > bridge
> > > > > > > releases,
> > > > > > > > to
> > > > > > > > > reject any v1 requests and hence can totally remove this
> > > forwarding
> > > > > > > logic
> > > > > > > > > on brokers, we can leverage on this metric to find a safe
> > time
> > > to
> > > > > > > > upgrade.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Guozhang
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On Mon, Apr 6, 2020 at 3:50 PM Colin McCabe <
> > > cmcc...@apache.org>
> > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > > Hi Sönke,
> > > > > > > > > >
> > > > > > > > > > Yeah, that was my thought too.  The request has already
> > been
> > > > > > > validated
> > > > > > > > on
> > > > > > > > > > the forwarding broker, so we don't need to validate it
> > again.
> > > > > > > However,
> > > > > > > > > you
> > > > > > > > > > make a good point that it's unfortunate that the audit
> log
> > > would
> > > > > > lose
> > > > > > > > the
> > > > > > > > > > principal information if we didn't forward it as well.
> > > > > > > > > >
> > > > > > > > > > Perhaps we could add a tagged field to the request header
> > > for all
> > > > > > > > > > messages.  This field would contain the principal name.
> Of
> > > > > course,
> > > > > > > > this
> > > > > > > > > > field should only be allowed if the request arrives with
> > the
> > > > > > highest
> > > > > > > > > > permission levels (Probably ClusterAction on Cluster,
> since
> > > > > that's
> > > > > > > what
> > > > > > > > > all
> > > > > > > > > > the brokers have.)
> > > > > > > > > >
> > > > > > > > > > regards,
> > > > > > > > > > Colin
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > On Mon, Apr 6, 2020, at 14:37, Sönke Liebau wrote:
> > > > > > > > > > > Hi Boyang,
> > > > > > > > > > >
> > > > > > > > > > > thanks for the KIP. Sounds good overall.
> > > > > > > > > > >
> > > > > > > > > > > @Tom: I thought about your remark a little and think
> that
> > > in
> > > > > > > > principle
> > > > > > > > > we
> > > > > > > > > > > can get away without forwarding the principal at all.
> > > Brokers
> > > > > > > > currently
> > > > > > > > > > > authenticate and authorize requests before performing
> > > writes to
> > > > > > > > > > Zookeeper -
> > > > > > > > > > > as long as we don't change that it shouldn't matter,
> > > whether
> > > > > the
> > > > > > > > write
> > > > > > > > > > goes
> > > > > > > > > > > to ZK or the controller, as long as that request is
> > > properly
> > > > > > > > > > authenticated.
> > > > > > > > > > > So the broker would simply authorize and authenticate
> the
> > > > > > original
> > > > > > > > > > request
> > > > > > > > > > > and then forward it to the controller using its own
> > > > > credentials.
> > > > > > > And
> > > > > > > > > the
> > > > > > > > > > > controller could simply trust that this is a bona-fide
> > > request,
> > > > > > > > because
> > > > > > > > > > it
> > > > > > > > > > > came from a trusted peer.
> > > > > > > > > > >
> > > > > > > > > > > I can see two issues here, one is a bit academic I
> > think..
> > > > > > > > > > >
> > > > > > > > > > > 1. The controller would be unable to write a proper
> audit
> > > log,
> > > > > > > > because
> > > > > > > > > it
> > > > > > > > > > > cannot know who sent the original request.
> > > > > > > > > > >
> > > > > > > > > > > 2. In theory, clusters could use Plaintext Listeners
> for
> > > inter
> > > > > > > broker
> > > > > > > > > > > traffic because that is on a separate, secure network
> or
> > > > > similar
> > > > > > > > > reasons.
> > > > > > > > > > > In that case, the forwarded request would be
> > > unauthenticated -
> > > > > > then
> > > > > > > > > > again,
> > > > > > > > > > > so are all other requests between brokers, so nothing
> > lost
> > > > > > really.
> > > > > > > > > > >
> > > > > > > > > > > Overall though, I think that sending the principal
> along
> > > with
> > > > > the
> > > > > > > > > request
> > > > > > > > > > > shouldn't be a large issue though, it is just two
> Strings
> > > and a
> > > > > > > > > boolean.
> > > > > > > > > > > And the controller could bypass the PrincipalBuilder
> and
> > > just
> > > > > > pass
> > > > > > > > the
> > > > > > > > > > > Principal that was built and sent by the remote broker
> > > straight
> > > > > > to
> > > > > > > > the
> > > > > > > > > > > Authorizer. Since PrincipalBuilders are the same on all
> > > brokers
> > > > > > it
> > > > > > > > > > > shouldn't matter who does the processing I think.
> > > > > > > > > > >
> > > > > > > > > > > Best regards,
> > > > > > > > > > > Sönke
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > On Mon, 6 Apr 2020 at 22:30, Boyang Chen <
> > > > > > > reluctanthero...@gmail.com
> > > > > > > > >
> > > > > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > > Thanks Tom for the question! I'm not super familiar
> > with
> > > the
> > > > > > > > > Principal
> > > > > > > > > > > > stuff, could you elaborate more on the two points you
> > > > > proposed
> > > > > > > > here?
> > > > > > > > > > > >
> > > > > > > > > > > > I looked up Admin client and just take
> > > > > `createDelegationToken`
> > > > > > > API
> > > > > > > > > for
> > > > > > > > > > an
> > > > > > > > > > > > example, the request data encodes the principal
> > > information
> > > > > > > > already,
> > > > > > > > > so
> > > > > > > > > > > > broker should also leverage that information to proxy
> > the
> > > > > > request
> > > > > > > > > IMHO.
> > > > > > > > > > > >
> > > > > > > > > > > > Boyang
> > > > > > > > > > > >
> > > > > > > > > > > > On Mon, Apr 6, 2020 at 9:21 AM Tom Bentley <
> > > > > > tbent...@redhat.com>
> > > > > > > > > > wrote:
> > > > > > > > > > > >
> > > > > > > > > > > > > Hi Boyang,
> > > > > > > > > > > > >
> > > > > > > > > > > > > Thanks for the KIP!
> > > > > > > > > > > > >
> > > > > > > > > > > > > When a broker proxies a request to the controller
> how
> > > does
> > > > > > the
> > > > > > > > > > > > > authenticated principal get propagated? I think a
> > > couple of
> > > > > > > > things
> > > > > > > > > > might
> > > > > > > > > > > > > complicate this:
> > > > > > > > > > > > >
> > > > > > > > > > > > > 1. A PrincipalBuilder might be in use,
> > > > > > > > > > > > > 2. A Principal does not have to be serializable.
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > Kind regards,
> > > > > > > > > > > > >
> > > > > > > > > > > > > Tom
> > > > > > > > > > > > >
> > > > > > > > > > > > > On Sat, Apr 4, 2020 at 12:52 AM Boyang Chen <
> > > > > > > > > > reluctanthero...@gmail.com>
> > > > > > > > > > > > > wrote:
> > > > > > > > > > > > >
> > > > > > > > > > > > > > Hey all,
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > I would like to start off the discussion for
> > > KIP-590, a
> > > > > > > > follow-up
> > > > > > > > > > > > > > initiative after KIP-500:
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-590%3A+Redirect+Zookeeper+Mutation+Protocols+to+The+Controller
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > This KIP proposes to migrate existing Zookeeper
> > > mutation
> > > > > > > paths,
> > > > > > > > > > > > including
> > > > > > > > > > > > > > configuration, security and quota changes, to
> > > > > > controller-only
> > > > > > > > by
> > > > > > > > > > always
> > > > > > > > > > > > > > routing these alterations to the controller.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Let me know your thoughts!
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Best,
> > > > > > > > > > > > > > Boyang
> > > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > --
> > > > > > > > > > > Sönke Liebau
> > > > > > > > > > > Partner
> > > > > > > > > > > Tel. +49 179 7940878
> > > > > > > > > > > OpenCore GmbH & Co. KG - Thomas-Mann-Straße 8 - 22880
> > > Wedel -
> > > > > > > Germany
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > -- Guozhang
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > -Agam
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to