That sounds great, thanks Jun!

On Wed, Jun 10, 2020 at 11:44 AM Jun Rao <j...@confluent.io> wrote:

> Hi, Boyang,
>
> Thanks for the reply.
>
> For the metric, we just need to define a metric of meter type and of name
> NumRequestsForwardingToControllerPerSec. Meter exposes a few standard JMX
> attributes including an accumulated total and rates (
>
> https://metrics.dropwizard.io/2.2.0/apidocs/com/yammer/metrics/core/Meter.html
> ).
>
> Jun
>
> On Wed, Jun 10, 2020 at 10:38 AM Boyang Chen <reluctanthero...@gmail.com>
> wrote:
>
> > Thanks Jun for the suggestions! I have addressed suggestion and
> simplified
> > the metrics part.
> >
> > On Tue, Jun 9, 2020 at 5:46 PM Jun Rao <j...@confluent.io> wrote:
> >
> > > Hi, Boyang,
> > >
> > > Thanks for the KIP. Just a few comments on the metrics.
> > >
> > > 1. It would be useful to document the full JMX metric names (package,
> > type,
> > > etc) of the new metrics. Also, for rates on the server side, we
> > > typically use Yammer Meter.
> > >
> > >  Sounds good.
> >
> > 2. For num-messages-redirected-rate, would num-requests-redirected-rate
> be
> > > better?
> > >
> > > Actually for the scope of this KIP, we are no longer needing to have a
> > separate tracking
> > of forwarded request rate, because the Envelope RPC is dropped.
> >
> >
> > > 3. num-client-forwarding-to-controller-rate: Is that based on clientId,
> > > client IP, client request version or sth else? How do you plan to
> > implement
> > > that since it seems to require tracking the current unique client set
> > > somehow. An alternative approach is to maintain a
> > > num-requests-redirected-rate metric with a client tag.
> > >
> > The clientId tag approach makes sense, will add to the KIP.
> >
> > Jun
> > >
> > >
> > >
> > > On Mon, Jun 8, 2020 at 9:36 AM Boyang Chen <reluctanthero...@gmail.com
> >
> > > wrote:
> > >
> > > > Hey there,
> > > >
> > > > If no more question is raised, I will go ahead and start the vote
> > > shortly.
> > > >
> > > > On Thu, Jun 4, 2020 at 12:39 PM Boyang Chen <
> > reluctanthero...@gmail.com>
> > > > wrote:
> > > >
> > > > > Hey there,
> > > > >
> > > > > bumping this thread for any further KIP-590 discussion, since it's
> > been
> > > > > quiet for a while.
> > > > >
> > > > > Boyang
> > > > >
> > > > > On Thu, May 21, 2020 at 10:31 AM Boyang Chen <
> > > reluctanthero...@gmail.com
> > > > >
> > > > > wrote:
> > > > >
> > > > >> Thanks David, I agree the wording here is not clear, and the
> fellow
> > > > >> broker should just send a new CreateTopicRequest in this case.
> > > > >>
> > > > >> In the meantime, we had some offline discussion about the Envelope
> > API
> > > > as
> > > > >> well. Although it provides certain privileges like data embedding
> > and
> > > > >> principal embedding, it creates a security hole by letting a
> > malicious
> > > > user
> > > > >> impersonate any forwarding broker, thus pretending to be any admin
> > > user.
> > > > >> Passing the principal around also increases the vulnerability,
> > > compared
> > > > >> with other standard ways such as passing a verified token, but it
> is
> > > > >> unfortunately not fully supported with Kafka security.
> > > > >>
> > > > >> So for the security concerns, we are abandoning the Envelope
> > approach
> > > > and
> > > > >> fallback to just forward the raw admin requests. The
> authentication
> > > will
> > > > >> happen on the receiving broker side instead of on the controller,
> so
> > > > that
> > > > >> we are able to stripped off the principal fields and only include
> > the
> > > > >> principal in header as optional field for audit logging purpose.
> > > > >> Furthermore, we shall propose adding a separate endpoint for
> > > > >> broker-controller communication which should be recommended to
> > enable
> > > > >> secure connections so that a malicious client could not pretend to
> > be
> > > a
> > > > >> broker and perform impersonation.
> > > > >>
> > > > >> Let me know your thoughts.
> > > > >>
> > > > >> Best,
> > > > >> Boyang
> > > > >>
> > > > >> On Tue, May 19, 2020 at 12:17 AM David Jacot <dja...@confluent.io
> >
> > > > wrote:
> > > > >>
> > > > >>> Hi Boyang,
> > > > >>>
> > > > >>> I've got another question regarding the auto topic creation case.
> > The
> > > > KIP
> > > > >>> says: "Currently the target broker shall just utilize its own ZK
> > > client
> > > > >>> to
> > > > >>> create
> > > > >>> internal topics, which is disallowed in the bridge release. For
> > above
> > > > >>> scenarios,
> > > > >>> non-controller broker shall just forward a CreateTopicRequest to
> > the
> > > > >>> controller
> > > > >>> instead and let controller take care of the rest, while waiting
> for
> > > the
> > > > >>> response
> > > > >>> in the meantime." There will be no request to forward in this
> case,
> > > > >>> right?
> > > > >>> Instead,
> > > > >>> a CreateTopicsRequest is created and sent to the controller node.
> > > > >>>
> > > > >>> When the CreateTopicsRequest is sent as a side effect of the
> > > > >>> MetadataRequest,
> > > > >>> it would be good to know the principal and the clientId in the
> > > > controller
> > > > >>> (quota,
> > > > >>> audit, etc.). Do you plan to use the Envelope API for this case
> as
> > > well
> > > > >>> or
> > > > >>> to call
> > > > >>> the regular API directly? Another was to phrase it would be:
> Shall
> > > the
> > > > >>> internal
> > > > >>> CreateTopicsRequest be sent with the original metadata
> (principal,
> > > > >>> clientId, etc.)
> > > > >>> of the MetadataRequest or as an admin request?
> > > > >>>
> > > > >>> Best,
> > > > >>> David
> > > > >>>
> > > > >>> On Fri, May 8, 2020 at 2:04 AM Guozhang Wang <wangg...@gmail.com
> >
> > > > wrote:
> > > > >>>
> > > > >>> > Just to adds a bit more FYI here related to the last question
> > from
> > > > >>> David:
> > > > >>> > in KIP-595 while implementing the new requests we are also
> > adding a
> > > > >>> > "KafkaNetworkChannel" which is used for brokers to send vote /
> > > fetch
> > > > >>> > records, so besides the discussion on listeners I think
> > > > implementation
> > > > >>> wise
> > > > >>> > we can also consider consolidating a lot of those into the same
> > > > >>> call-trace
> > > > >>> > as well -- of course this is not related to public APIs so
> maybe
> > > just
> > > > >>> needs
> > > > >>> > to be coordinated among developments:
> > > > >>> >
> > > > >>> > 1. Broker -> Controller: ISR Change, Topic Creation, Admin
> > Redirect
> > > > >>> > (KIP-497).
> > > > >>> > 2. Controller -> Broker: LeaderAndISR / MetadataUpdate; though
> > > these
> > > > >>> are
> > > > >>> > likely going to be deprecated post KIP-500.
> > > > >>> > 3. Txn Coordinator -> Broker: TxnMarker
> > > > >>> >
> > > > >>> >
> > > > >>> > Guozhang
> > > > >>> >
> > > > >>> > On Wed, May 6, 2020 at 8:58 PM Boyang Chen <
> > > > reluctanthero...@gmail.com
> > > > >>> >
> > > > >>> > wrote:
> > > > >>> >
> > > > >>> > > Hey David,
> > > > >>> > >
> > > > >>> > > thanks for the feedbacks!
> > > > >>> > >
> > > > >>> > > On Wed, May 6, 2020 at 2:06 AM David Jacot <
> > dja...@confluent.io>
> > > > >>> wrote:
> > > > >>> > >
> > > > >>> > > > Hi Boyang,
> > > > >>> > > >
> > > > >>> > > > While re-reading the KIP, I've got few small
> > > questions/comments:
> > > > >>> > > >
> > > > >>> > > > 1. When auto topic creation is enabled, brokers will send a
> > > > >>> > > > CreateTopicRequest
> > > > >>> > > > to the controller instead of writing to ZK directly. It
> means
> > > > that
> > > > >>> > > > creation of these
> > > > >>> > > > topics are subject to be rejected with an error if a
> > > > >>> CreateTopicPolicy
> > > > >>> > is
> > > > >>> > > > used. Today,
> > > > >>> > > > it bypasses the policy entirely. I suppose that clusters
> > > allowing
> > > > >>> auto
> > > > >>> > > > topic creation
> > > > >>> > > > don't have a policy in place so it is not a big deal. I
> > suggest
> > > > to
> > > > >>> call
> > > > >>> > > > out explicitly the
> > > > >>> > > > limitation in the KIP though.
> > > > >>> > > >
> > > > >>> > > > That's a good idea, will add to the KIP.
> > > > >>> > >
> > > > >>> > >
> > > > >>> > > > 2. In the same vein as my first point. How do you plan to
> > > handle
> > > > >>> errors
> > > > >>> > > > when internal
> > > > >>> > > > topics are created by a broker? Do you plan to retry
> > retryable
> > > > >>> errors
> > > > >>> > > > indefinitely?
> > > > >>> > > >
> > > > >>> > > > I checked a bit on the admin client handling of the create
> > > topic
> > > > >>> RPC.
> > > > >>> > It
> > > > >>> > > seems that
> > > > >>> > > the only retriable exceptions at the moment are
> NOT_CONTROLLER
> > > and
> > > > >>> > > REQUEST_TIMEOUT.
> > > > >>> > > So I guess we just need to retry on these exceptions?
> > > > >>> > >
> > > > >>> > >
> > > > >>> > > > 3. Could you clarify which listener will be used for the
> > > internal
> > > > >>> > > requests?
> > > > >>> > > > Do you plan
> > > > >>> > > > to use the control plane listener or perhaps the
> inter-broker
> > > > >>> listener?
> > > > >>> > > >
> > > > >>> > > > As we discussed in the KIP, currently the internal design
> for
> > > > >>> > > broker->controller channel has not been
> > > > >>> > > done yet, and I feel it makes sense to consolidate redirect
> RPC
> > > and
> > > > >>> > > internal topic creation RPC to this future channel,
> > > > >>> > > which are details to be filled in the near future, right now
> > some
> > > > >>> > > controller refactoring effort is still WIP.
> > > > >>> > >
> > > > >>> > >
> > > > >>> > > > Thanks,
> > > > >>> > > > David
> > > > >>> > > >
> > > > >>> > > > On Mon, May 4, 2020 at 9:37 AM Sönke Liebau
> > > > >>> > > > <soenke.lie...@opencore.com.invalid> wrote:
> > > > >>> > > >
> > > > >>> > > > > Ah, I see, thanks for the clarification!
> > > > >>> > > > >
> > > > >>> > > > > Shouldn't be an issue I think. My understanding of KIPs
> was
> > > > >>> always
> > > > >>> > that
> > > > >>> > > > > they are mostly intended as a place to discuss and agree
> > > > changes
> > > > >>> up
> > > > >>> > > > front,
> > > > >>> > > > > whereas tracking the actual releases that things go into
> > > should
> > > > >>> be
> > > > >>> > > > handled
> > > > >>> > > > > in Jira.
> > > > >>> > > > > So maybe we just create new jiras for any subsequent work
> > and
> > > > >>> either
> > > > >>> > > link
> > > > >>> > > > > those or make them subtasks (even though this jira is
> > > already a
> > > > >>> > subtask
> > > > >>> > > > > itself), that should allow us to properly track all
> > releases
> > > > that
> > > > >>> > work
> > > > >>> > > > goes
> > > > >>> > > > > into.
> > > > >>> > > > >
> > > > >>> > > > > Thanks for your work on this!!
> > > > >>> > > > >
> > > > >>> > > > > Best,
> > > > >>> > > > > Sönke
> > > > >>> > > > >
> > > > >>> > > > >
> > > > >>> > > > > On Sat, 2 May 2020 at 00:31, Boyang Chen <
> > > > >>> reluctanthero...@gmail.com
> > > > >>> > >
> > > > >>> > > > > wrote:
> > > > >>> > > > >
> > > > >>> > > > > > Sure thing Sonke, what I suggest is that usual KIPs get
> > > > >>> accepted to
> > > > >>> > > go
> > > > >>> > > > > into
> > > > >>> > > > > > next release. It could span for a couple of releases
> > > because
> > > > of
> > > > >>> > > > > engineering
> > > > >>> > > > > > time, but no change has to be shipped in specific
> future
> > > > >>> releases,
> > > > >>> > > like
> > > > >>> > > > > the
> > > > >>> > > > > > backward incompatible change for KafkaPrincipal. But I
> > > guess
> > > > >>> it's
> > > > >>> > not
> > > > >>> > > > > > really a blocker, as long as we stated clearly in the
> KIP
> > > how
> > > > >>> we
> > > > >>> > are
> > > > >>> > > > > going
> > > > >>> > > > > > to roll things out, and let it partially finish in 2.6.
> > > > >>> > > > > >
> > > > >>> > > > > > Boyang
> > > > >>> > > > > >
> > > > >>> > > > > > On Fri, May 1, 2020 at 2:32 PM Sönke Liebau
> > > > >>> > > > > > <soenke.lie...@opencore.com.invalid> wrote:
> > > > >>> > > > > >
> > > > >>> > > > > > > Hi Boyang,
> > > > >>> > > > > > >
> > > > >>> > > > > > > thanks for the update, sounds reasonable to me.
> Making
> > > it a
> > > > >>> > > breaking
> > > > >>> > > > > > change
> > > > >>> > > > > > > is definitely the safer route to go.
> > > > >>> > > > > > >
> > > > >>> > > > > > > Just one quick question regarding your mail, I didn't
> > > fully
> > > > >>> > > > understand
> > > > >>> > > > > > what
> > > > >>> > > > > > > you mean by "I think this is the first time we need
> to
> > > > >>> introduce
> > > > >>> > a
> > > > >>> > > > KIP
> > > > >>> > > > > > > without having it
> > > > >>> > > > > > > fully accepted in next release."  - could you perhaps
> > > > explain
> > > > >>> > that
> > > > >>> > > > some
> > > > >>> > > > > > > more very briefly?
> > > > >>> > > > > > >
> > > > >>> > > > > > > Best regards,
> > > > >>> > > > > > > Sönke
> > > > >>> > > > > > >
> > > > >>> > > > > > >
> > > > >>> > > > > > >
> > > > >>> > > > > > > On Fri, 1 May 2020 at 23:03, Boyang Chen <
> > > > >>> > > reluctanthero...@gmail.com
> > > > >>> > > > >
> > > > >>> > > > > > > wrote:
> > > > >>> > > > > > >
> > > > >>> > > > > > > > Hey Tom,
> > > > >>> > > > > > > >
> > > > >>> > > > > > > > thanks for the suggestion. As long as we could
> > > correctly
> > > > >>> > > serialize
> > > > >>> > > > > the
> > > > >>> > > > > > > > principal and embed in the Envelope, I think we
> could
> > > > still
> > > > >>> > > > leverage
> > > > >>> > > > > > the
> > > > >>> > > > > > > > controller to do the client request authentication.
> > > > >>> Although
> > > > >>> > this
> > > > >>> > > > > pays
> > > > >>> > > > > > an
> > > > >>> > > > > > > > extra round trip if the authorization is doomed to
> > fail
> > > > on
> > > > >>> the
> > > > >>> > > > > receiver
> > > > >>> > > > > > > > side, having a centralized processing unit is more
> > > > >>> favorable
> > > > >>> > such
> > > > >>> > > > as
> > > > >>> > > > > > > > ensuring the audit log is consistent instead of
> > > > scattering
> > > > >>> > > between
> > > > >>> > > > > > > > forwarder and receiver.
> > > > >>> > > > > > > >
> > > > >>> > > > > > > > Boyang
> > > > >>> > > > > > > >
> > > > >>> > > > > > > > On Wed, Apr 29, 2020 at 9:50 AM Tom Bentley <
> > > > >>> > tbent...@redhat.com
> > > > >>> > > >
> > > > >>> > > > > > wrote:
> > > > >>> > > > > > > >
> > > > >>> > > > > > > > > Hi Boyang,
> > > > >>> > > > > > > > >
> > > > >>> > > > > > > > > Thanks for the update. In the EnvelopeRequest
> > > handling
> > > > >>> > section
> > > > >>> > > of
> > > > >>> > > > > the
> > > > >>> > > > > > > KIP
> > > > >>> > > > > > > > > it might be worth saying explicitly that
> > > authorization
> > > > >>> of the
> > > > >>> > > > > request
> > > > >>> > > > > > > > will
> > > > >>> > > > > > > > > happen as normal. Otherwise what you're proposing
> > > makes
> > > > >>> sense
> > > > >>> > > to
> > > > >>> > > > > me.
> > > > >>> > > > > > > > >
> > > > >>> > > > > > > > > Thanks again,
> > > > >>> > > > > > > > >
> > > > >>> > > > > > > > > Tom
> > > > >>> > > > > > > > >
> > > > >>> > > > > > > > >
> > > > >>> > > > > > > > >
> > > > >>> > > > > > > > > On Wed, Apr 29, 2020 at 5:27 PM Boyang Chen <
> > > > >>> > > > > > > reluctanthero...@gmail.com>
> > > > >>> > > > > > > > > wrote:
> > > > >>> > > > > > > > >
> > > > >>> > > > > > > > > > Thanks for the proposed idea Sonke. I reviewed
> it
> > > and
> > > > >>> had
> > > > >>> > > some
> > > > >>> > > > > > > offline
> > > > >>> > > > > > > > > > discussion with Colin, Rajini and Mathew.
> > > > >>> > > > > > > > > >
> > > > >>> > > > > > > > > > We do need to add serializability to the
> > > > >>> PrincipalBuilder
> > > > >>> > > > > > interface,
> > > > >>> > > > > > > > but
> > > > >>> > > > > > > > > we
> > > > >>> > > > > > > > > > should not make any default implementation
> which
> > > > could
> > > > >>> go
> > > > >>> > > wrong
> > > > >>> > > > > and
> > > > >>> > > > > > > > messy
> > > > >>> > > > > > > > > > up with the security in a production
> environment
> > if
> > > > the
> > > > >>> > user
> > > > >>> > > > > > neglects
> > > > >>> > > > > > > > it.
> > > > >>> > > > > > > > > > Instead we need to make it required and
> backward
> > > > >>> > > incompatible.
> > > > >>> > > > > So I
> > > > >>> > > > > > > > > > integrated your proposed methods and expand the
> > > > >>> Envelope
> > > > >>> > RPC
> > > > >>> > > > > with a
> > > > >>> > > > > > > > > couple
> > > > >>> > > > > > > > > > of more fields for audit log purpose as well.
> > > > >>> > > > > > > > > >
> > > > >>> > > > > > > > > > Since the KafkaPrincipal builder
> serializability
> > > is a
> > > > >>> > binary
> > > > >>> > > > > > > > incompatible
> > > > >>> > > > > > > > > > change, I propose (also stated in the KIP) the
> > > > >>> following
> > > > >>> > > > > > > implementation
> > > > >>> > > > > > > > > > plan:
> > > > >>> > > > > > > > > >
> > > > >>> > > > > > > > > >    1. For next *2.x* release:
> > > > >>> > > > > > > > > >       1. Get new admin client forwarding
> changes
> > > > >>> > > > > > > > > >       2. Get the Envelope RPC implementation
> > > > >>> > > > > > > > > >       3. Get the forwarding path working and
> > > validate
> > > > >>> the
> > > > >>> > > > > function
> > > > >>> > > > > > > with
> > > > >>> > > > > > > > > >       fake principals in testing environment,
> > > without
> > > > >>> > actual
> > > > >>> > > > > > > triggering
> > > > >>> > > > > > > > > in
> > > > >>> > > > > > > > > > the
> > > > >>> > > > > > > > > >       production system
> > > > >>> > > > > > > > > >    2. For next *3.0 *release:
> > > > >>> > > > > > > > > >       1. Introduce serializability to
> > > > PrincipalBuilder
> > > > >>> > > > > > > > > >       2. Turn on forwarding path in production
> > and
> > > > >>> perform
> > > > >>> > > > > > end-to-end
> > > > >>> > > > > > > > > >       testing
> > > > >>> > > > > > > > > >
> > > > >>> > > > > > > > > >
> > > > >>> > > > > > > > > > I think this is the first time we need to
> > > introduce a
> > > > >>> KIP
> > > > >>> > > > without
> > > > >>> > > > > > > > having
> > > > >>> > > > > > > > > it
> > > > >>> > > > > > > > > > fully accepted in next release. Let me know if
> > this
> > > > >>> sounds
> > > > >>> > > > > > > reasonable.
> > > > >>> > > > > > > > > >
> > > > >>> > > > > > > > > > On Fri, Apr 24, 2020 at 1:00 AM Sönke Liebau
> > > > >>> > > > > > > > > > <soenke.lie...@opencore.com.invalid> wrote:
> > > > >>> > > > > > > > > >
> > > > >>> > > > > > > > > > > After thinking on this a little bit, maybe
> this
> > > > >>> would be
> > > > >>> > an
> > > > >>> > > > > > option:
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > > add default methods serialize and deserialize
> > to
> > > > the
> > > > >>> > > > > > > > > > KafkaPrincipalBuilder
> > > > >>> > > > > > > > > > > interface, these could be very short:
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > > default String serialize(KafkaPrincipal
> > > principal)
> > > > {
> > > > >>> > > > > > > > > > >     return principal.toString();
> > > > >>> > > > > > > > > > > }
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > > default KafkaPrincipal deserialize(String
> > > > >>> > principalString)
> > > > >>> > > {
> > > > >>> > > > > > > > > > >     return
> > > > >>> > > > SecurityUtils.parseKafkaPrincipal(principalString);
> > > > >>> > > > > > > > > > > }
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > > This would mean that all existing
> > implementations
> > > > of
> > > > >>> that
> > > > >>> > > > > > interface
> > > > >>> > > > > > > > > > > are unaffected, as this code is pretty much
> > what
> > > is
> > > > >>> > > currently
> > > > >>> > > > > > being
> > > > >>> > > > > > > > > > > used when their principals need to be
> > serialized.
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > > But it offers people using custom principals
> > the
> > > > >>> chance
> > > > >>> > to
> > > > >>> > > > > > override
> > > > >>> > > > > > > > > > > these methods and ensure that all information
> > > gets
> > > > >>> > > serialized
> > > > >>> > > > > for
> > > > >>> > > > > > > > > > > delegation tokens or request forwarding.
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > > Wherever we need to de/serialize principals
> > (for
> > > > >>> example
> > > > >>> > in
> > > > >>> > > > the
> > > > >>> > > > > > > > > > > DelegationTokenManager [1]) we obtain an
> > instance
> > > > of
> > > > >>> the
> > > > >>> > > > > > configured
> > > > >>> > > > > > > > > > > PrincipalBuilder class and use that to do the
> > > > actual
> > > > >>> > work.
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > > What do you think?
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > > Best regards,
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > > Sönke
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > > [1]
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > >
> > > > >>> > > > > > > > >
> > > > >>> > > > > > > >
> > > > >>> > > > > > >
> > > > >>> > > > > >
> > > > >>> > > > >
> > > > >>> > > >
> > > > >>> > >
> > > > >>> >
> > > > >>>
> > > >
> > >
> >
> https://github.com/apache/kafka/blob/33d06082117d971cdcddd4f01392006b543f3c01/core/src/main/scala/kafka/server/DelegationTokenManager.scala#L122
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > > On Thu, 23 Apr 2020 at 17:42, Boyang Chen <
> > > > >>> > > > > > > > reluctanthero...@gmail.com>
> > > > >>> > > > > > > > > > > wrote:
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > > > Thanks all,
> > > > >>> > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > IIUC, the necessity of doing the audit log
> on
> > > the
> > > > >>> > > > controller
> > > > >>> > > > > > side
> > > > >>> > > > > > > > is
> > > > >>> > > > > > > > > > > > because we need to make sure the authorized
> > > > >>> resource
> > > > >>> > > > > > > modifications
> > > > >>> > > > > > > > > > > > eventually arrive on the target broker
> side,
> > > but
> > > > is
> > > > >>> > that
> > > > >>> > > > > really
> > > > >>> > > > > > > > > > > necessary?
> > > > >>> > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > I'm thinking the possibility of doing the
> > audit
> > > > >>> log on
> > > > >>> > > the
> > > > >>> > > > > > > > forwarding
> > > > >>> > > > > > > > > > > > broker side, which could simplify the
> > > discussion
> > > > of
> > > > >>> > > > principal
> > > > >>> > > > > > > > > > > serialization
> > > > >>> > > > > > > > > > > > here. The other option I could think of is
> to
> > > > >>> serialize
> > > > >>> > > the
> > > > >>> > > > > > > entire
> > > > >>> > > > > > > > > > audit
> > > > >>> > > > > > > > > > > > log message if we were supposed to approve,
> > and
> > > > >>> pass it
> > > > >>> > > as
> > > > >>> > > > > part
> > > > >>> > > > > > > of
> > > > >>> > > > > > > > > the
> > > > >>> > > > > > > > > > > > Envelope.
> > > > >>> > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > Let me know if you think either of these
> > > > approaches
> > > > >>> > would
> > > > >>> > > > > work.
> > > > >>> > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > On Thu, Apr 23, 2020 at 7:01 AM Sönke
> Liebau
> > > > >>> > > > > > > > > > > > <soenke.lie...@opencore.com.invalid>
> wrote:
> > > > >>> > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > I agree that this would be useful to have
> > and
> > > > >>> > shouldn't
> > > > >>> > > > > > create
> > > > >>> > > > > > > > > issues
> > > > >>> > > > > > > > > > > in
> > > > >>> > > > > > > > > > > > > 99% of all cases. But it would be a
> > breaking
> > > > >>> change
> > > > >>> > to
> > > > >>> > > a
> > > > >>> > > > > > public
> > > > >>> > > > > > > > > API.
> > > > >>> > > > > > > > > > > > > I had a quick look at the two large
> > projects
> > > > that
> > > > >>> > come
> > > > >>> > > to
> > > > >>> > > > > > mind
> > > > >>> > > > > > > > > which
> > > > >>> > > > > > > > > > > > might
> > > > >>> > > > > > > > > > > > > be affected: Ranger and Sentry - both
> seem
> > to
> > > > >>> operate
> > > > >>> > > > > > directly
> > > > >>> > > > > > > > with
> > > > >>> > > > > > > > > > > > > KafkaPrincipal instead of subclassing it.
> > But
> > > > >>> anybody
> > > > >>> > > who
> > > > >>> > > > > > > > > > > > > extended KafkaPrincipal would probably
> need
> > > to
> > > > >>> update
> > > > >>> > > > their
> > > > >>> > > > > > > > code..
> > > > >>> > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > Writing this sparked the thought that
> this
> > > > issue
> > > > >>> > should
> > > > >>> > > > > also
> > > > >>> > > > > > > > > concern
> > > > >>> > > > > > > > > > > > > delegation tokens, as Principals need to
> be
> > > > >>> > stored/sent
> > > > >>> > > > > > around
> > > > >>> > > > > > > > for
> > > > >>> > > > > > > > > > > those
> > > > >>> > > > > > > > > > > > > too.
> > > > >>> > > > > > > > > > > > > Had a brief look at the code and for
> > > Delegation
> > > > >>> > Tokens
> > > > >>> > > we
> > > > >>> > > > > > seem
> > > > >>> > > > > > > to
> > > > >>> > > > > > > > > use
> > > > >>> > > > > > > > > > > > > SecurityUtils#parseKafkaPrincipal[1]
> which
> > > > would
> > > > >>> > ignore
> > > > >>> > > > any
> > > > >>> > > > > > > > > > additional
> > > > >>> > > > > > > > > > > > > information from custom Principals.
> > > > >>> > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > We'll probably want to at least add a
> note
> > on
> > > > >>> that to
> > > > >>> > > the
> > > > >>> > > > > > docs
> > > > >>> > > > > > > -
> > > > >>> > > > > > > > > > unless
> > > > >>> > > > > > > > > > > > it
> > > > >>> > > > > > > > > > > > > is there already, I've only looked for
> > about
> > > 30
> > > > >>> > > seconds..
> > > > >>> > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > Best regards,
> > > > >>> > > > > > > > > > > > > Sönke
> > > > >>> > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > [1]
> > > > >>> > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > >
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > >
> > > > >>> > > > > > > > >
> > > > >>> > > > > > > >
> > > > >>> > > > > > >
> > > > >>> > > > > >
> > > > >>> > > > >
> > > > >>> > > >
> > > > >>> > >
> > > > >>> >
> > > > >>>
> > > >
> > >
> >
> https://github.com/apache/kafka/blob/e9fcfe4fb7b9ae2f537ce355fe2ab51a58034c64/clients/src/main/java/org/apache/kafka/common/utils/SecurityUtils.java#L52
> > > > >>> > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > On Thu, 23 Apr 2020 at 14:35, Colin
> McCabe
> > <
> > > > >>> > > > > > cmcc...@apache.org
> > > > >>> > > > > > > >
> > > > >>> > > > > > > > > > wrote:
> > > > >>> > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > Hmm... Maybe we need to add some way to
> > > > >>> serialize
> > > > >>> > and
> > > > >>> > > > > > > > deserialize
> > > > >>> > > > > > > > > > > > > > KafkaPrincipal subclasses to/from
> string.
> > > We
> > > > >>> could
> > > > >>> > > > add a
> > > > >>> > > > > > > > method
> > > > >>> > > > > > > > > to
> > > > >>> > > > > > > > > > > > > > KafkaPrincipalBuilder#deserialize and a
> > > > method
> > > > >>> > > > > > > > > > > > KafkaPrincipal#serialize,
> > > > >>> > > > > > > > > > > > > I
> > > > >>> > > > > > > > > > > > > > suppose.
> > > > >>> > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > best,
> > > > >>> > > > > > > > > > > > > > Colin
> > > > >>> > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > On Thu, Apr 23, 2020, at 02:14, Tom
> > Bentley
> > > > >>> wrote:
> > > > >>> > > > > > > > > > > > > > > Hi folks,
> > > > >>> > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > Colin wrote:
> > > > >>> > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > The final broker knows it can trust
> > the
> > > > >>> > principal
> > > > >>> > > > > name
> > > > >>> > > > > > in
> > > > >>> > > > > > > > the
> > > > >>> > > > > > > > > > > > > envelope
> > > > >>> > > > > > > > > > > > > > > > (since EnvelopeRequest requires
> > > > >>> CLUSTERACTION
> > > > >>> > on
> > > > >>> > > > > > > CLUSTER).
> > > > >>> > > > > > > > > So
> > > > >>> > > > > > > > > > it
> > > > >>> > > > > > > > > > > > can
> > > > >>> > > > > > > > > > > > > > use
> > > > >>> > > > > > > > > > > > > > > > that principal name for
> authorization
> > > > >>> (given
> > > > >>> > who
> > > > >>> > > > you
> > > > >>> > > > > > are,
> > > > >>> > > > > > > > > what
> > > > >>> > > > > > > > > > > can
> > > > >>> > > > > > > > > > > > > you
> > > > >>> > > > > > > > > > > > > > > > do?)  The forwarded principal name
> > will
> > > > >>> also be
> > > > >>> > > > used
> > > > >>> > > > > > for
> > > > >>> > > > > > > > > > logging.
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > My understanding (and I'm happy to be
> > > > >>> corrected)
> > > > >>> > is
> > > > >>> > > > > that
> > > > >>> > > > > > a
> > > > >>> > > > > > > > > custom
> > > > >>> > > > > > > > > > > > > > > authoriser might rely on the
> > > KafkaPrincipal
> > > > >>> > > instance
> > > > >>> > > > > > being
> > > > >>> > > > > > > a
> > > > >>> > > > > > > > > > > subclass
> > > > >>> > > > > > > > > > > > > of
> > > > >>> > > > > > > > > > > > > > > KafkaPrincipal (e.g. the subclass has
> > > extra
> > > > >>> > fields
> > > > >>> > > > with
> > > > >>> > > > > > the
> > > > >>> > > > > > > > > > > > principal's
> > > > >>> > > > > > > > > > > > > > > "roles"). So you can't construct a
> > > > >>> KafkaPrinicpal
> > > > >>> > > on
> > > > >>> > > > > the
> > > > >>> > > > > > > > > > controller
> > > > >>> > > > > > > > > > > > > which
> > > > >>> > > > > > > > > > > > > > > would be guaranteed to work for
> > arbitrary
> > > > >>> > > > authorizers.
> > > > >>> > > > > > You
> > > > >>> > > > > > > > have
> > > > >>> > > > > > > > > > to
> > > > >>> > > > > > > > > > > > > > perform
> > > > >>> > > > > > > > > > > > > > > authorization on the first broker
> > > > (rejecting
> > > > >>> some
> > > > >>> > > of
> > > > >>> > > > > the
> > > > >>> > > > > > > > > batched
> > > > >>> > > > > > > > > > > > > > requests),
> > > > >>> > > > > > > > > > > > > > > forward the authorized ones to the
> > > > >>> controller,
> > > > >>> > > which
> > > > >>> > > > > then
> > > > >>> > > > > > > has
> > > > >>> > > > > > > > > to
> > > > >>> > > > > > > > > > > > trust
> > > > >>> > > > > > > > > > > > > > that
> > > > >>> > > > > > > > > > > > > > > the authorization has been done and
> > make
> > > > the
> > > > >>> ZK
> > > > >>> > > > writes
> > > > >>> > > > > > > > without
> > > > >>> > > > > > > > > > > > > > > authorization. Because the controller
> > > > cannot
> > > > >>> > invoke
> > > > >>> > > > the
> > > > >>> > > > > > > > > > authorizer
> > > > >>> > > > > > > > > > > > that
> > > > >>> > > > > > > > > > > > > > > means that the authorizer audit
> logging
> > > (on
> > > > >>> the
> > > > >>> > > > > > controller)
> > > > >>> > > > > > > > > would
> > > > >>> > > > > > > > > > > not
> > > > >>> > > > > > > > > > > > > > > include these operations. But they
> > would
> > > be
> > > > >>> in
> > > > >>> > the
> > > > >>> > > > > audit
> > > > >>> > > > > > > > > logging
> > > > >>> > > > > > > > > > > from
> > > > >>> > > > > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > > original broker, so the information
> > would
> > > > >>> not be
> > > > >>> > > > lost.
> > > > >>> > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > There's also a problem with using the
> > > > >>> constructed
> > > > >>> > > > > > principal
> > > > >>> > > > > > > > for
> > > > >>> > > > > > > > > > > other
> > > > >>> > > > > > > > > > > > > > > logging (i.e. non authorizer logging)
> > on
> > > > the
> > > > >>> > > > > controller:
> > > > >>> > > > > > > > > There's
> > > > >>> > > > > > > > > > > > > nothing
> > > > >>> > > > > > > > > > > > > > > stopping a custom KafkaPrincipal
> > subclass
> > > > >>> from
> > > > >>> > > > > overriding
> > > > >>> > > > > > > > > > > toString()
> > > > >>> > > > > > > > > > > > to
> > > > >>> > > > > > > > > > > > > > > return something different from
> > > > >>> > "${type}:${name}".
> > > > >>> > > If
> > > > >>> > > > > > > you're
> > > > >>> > > > > > > > > > > > building a
> > > > >>> > > > > > > > > > > > > > > "fake" KafkaPrincipal on the
> controller
> > > > from
> > > > >>> the
> > > > >>> > > type
> > > > >>> > > > > and
> > > > >>> > > > > > > > name
> > > > >>> > > > > > > > > > then
> > > > >>> > > > > > > > > > > > its
> > > > >>> > > > > > > > > > > > > > > toString() would be "wrong". A
> solution
> > > to
> > > > >>> this
> > > > >>> > > would
> > > > >>> > > > > be
> > > > >>> > > > > > to
> > > > >>> > > > > > > > > also
> > > > >>> > > > > > > > > > > > > > serialize
> > > > >>> > > > > > > > > > > > > > > the toString() into the envelope and
> > have
> > > > >>> some
> > > > >>> > > > > > > > > > > ProxiedKafkaPrincipal
> > > > >>> > > > > > > > > > > > > > class
> > > > >>> > > > > > > > > > > > > > > which you instantiate on the
> controller
> > > > >>> which has
> > > > >>> > > > > > > overridden
> > > > >>> > > > > > > > > > > toString
> > > > >>> > > > > > > > > > > > > to
> > > > >>> > > > > > > > > > > > > > > return the right value. Obviously you
> > > could
> > > > >>> > > optimize
> > > > >>> > > > > this
> > > > >>> > > > > > > > using
> > > > >>> > > > > > > > > > an
> > > > >>> > > > > > > > > > > > > > optional
> > > > >>> > > > > > > > > > > > > > > field so you only serialize the
> > > toString()
> > > > >>> if it
> > > > >>> > > > > differed
> > > > >>> > > > > > > > from
> > > > >>> > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > value
> > > > >>> > > > > > > > > > > > > > > you'd get from
> > KafkaPrincipal.toString().
> > > > >>> Maybe
> > > > >>> > > > > non-audit
> > > > >>> > > > > > > > > logging
> > > > >>> > > > > > > > > > > > using
> > > > >>> > > > > > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > > wrong string value of a principal is
> > > > >>> sufficiently
> > > > >>> > > > minor
> > > > >>> > > > > > > that
> > > > >>> > > > > > > > > this
> > > > >>> > > > > > > > > > > > isn't
> > > > >>> > > > > > > > > > > > > > > even worth trying to solve.
> > > > >>> > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > Kind regards,
> > > > >>> > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > Tom
> > > > >>> > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > On Wed, Apr 22, 2020 at 10:59 PM
> Sönke
> > > > Liebau
> > > > >>> > > > > > > > > > > > > > > <soenke.lie...@opencore.com.invalid>
> > > > wrote:
> > > > >>> > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > Hi Colin,
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > thanks for your summary! Just one
> > > > question
> > > > >>> -
> > > > >>> > and
> > > > >>> > > I
> > > > >>> > > > > may
> > > > >>> > > > > > be
> > > > >>> > > > > > > > > > missing
> > > > >>> > > > > > > > > > > > an
> > > > >>> > > > > > > > > > > > > > > > obvious point here..
> > > > >>> > > > > > > > > > > > > > > > You write:
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > "The initial broker should do
> > > > >>> authentication
> > > > >>> > (who
> > > > >>> > > > are
> > > > >>> > > > > > > you?)
> > > > >>> > > > > > > > > and
> > > > >>> > > > > > > > > > > > come
> > > > >>> > > > > > > > > > > > > up
> > > > >>> > > > > > > > > > > > > > > > with a principal name.  Then it
> > creates
> > > > an
> > > > >>> > > envelope
> > > > >>> > > > > > > > request,
> > > > >>> > > > > > > > > > > which
> > > > >>> > > > > > > > > > > > > will
> > > > >>> > > > > > > > > > > > > > > > contain that principal name, and
> > sends
> > > it
> > > > >>> along
> > > > >>> > > > with
> > > > >>> > > > > > the
> > > > >>> > > > > > > > > > > unmodified
> > > > >>> > > > > > > > > > > > > > > > original request to the final
> broker.
> > > > >>>  [... ]
> > > > >>> > > The
> > > > >>> > > > > > final
> > > > >>> > > > > > > > > broker
> > > > >>> > > > > > > > > > > > knows
> > > > >>> > > > > > > > > > > > > > it
> > > > >>> > > > > > > > > > > > > > > > can trust the principal name in the
> > > > >>> envelope
> > > > >>> > > (since
> > > > >>> > > > > > > > > > > EnvelopeRequest
> > > > >>> > > > > > > > > > > > > > > > requires CLUSTERACTION on CLUSTER).
> > So
> > > > it
> > > > >>> can
> > > > >>> > > use
> > > > >>> > > > > that
> > > > >>> > > > > > > > > > principal
> > > > >>> > > > > > > > > > > > > name
> > > > >>> > > > > > > > > > > > > > for
> > > > >>> > > > > > > > > > > > > > > > authorization (given who you are,
> > what
> > > > can
> > > > >>> you
> > > > >>> > > > do?) "
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > My understanding is, that you don't
> > > want
> > > > to
> > > > >>> > > > serialize
> > > > >>> > > > > > the
> > > > >>> > > > > > > > > > > Principal
> > > > >>> > > > > > > > > > > > > > (due to
> > > > >>> > > > > > > > > > > > > > > > the discussed issues with custom
> > > > >>> principals)
> > > > >>> > but
> > > > >>> > > > > reduce
> > > > >>> > > > > > > the
> > > > >>> > > > > > > > > > > > principal
> > > > >>> > > > > > > > > > > > > > down
> > > > >>> > > > > > > > > > > > > > > > to a string representation that
> would
> > > be
> > > > >>> used
> > > > >>> > for
> > > > >>> > > > > > logging
> > > > >>> > > > > > > > and
> > > > >>> > > > > > > > > > > > > > > > authorization?
> > > > >>> > > > > > > > > > > > > > > > If that understanding is correct
> > then I
> > > > >>> don't
> > > > >>> > > think
> > > > >>> > > > > we
> > > > >>> > > > > > > > could
> > > > >>> > > > > > > > > > use
> > > > >>> > > > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > > > regular Authorizer on the target
> > > broker,
> > > > >>> > because
> > > > >>> > > > that
> > > > >>> > > > > > > would
> > > > >>> > > > > > > > > > need
> > > > >>> > > > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > actual
> > > > >>> > > > > > > > > > > > > > > > principal object to work on.
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > Also, a thought that just occurred
> to
> > > me,
> > > > >>> we
> > > > >>> > > might
> > > > >>> > > > > > > actually
> > > > >>> > > > > > > > > > need
> > > > >>> > > > > > > > > > > to
> > > > >>> > > > > > > > > > > > > log
> > > > >>> > > > > > > > > > > > > > > > different principal strings for the
> > > case
> > > > of
> > > > >>> > > queries
> > > > >>> > > > > > like
> > > > >>> > > > > > > > > > > > AlterConfigs
> > > > >>> > > > > > > > > > > > > > > > (mentioned by Rajini) which may
> > contain
> > > > >>> > multiple
> > > > >>> > > > > > > resources.
> > > > >>> > > > > > > > > > Take
> > > > >>> > > > > > > > > > > an
> > > > >>> > > > > > > > > > > > > > LDAP
> > > > >>> > > > > > > > > > > > > > > > authorizer that grants access based
> > on
> > > > >>> group
> > > > >>> > > > > > membership -
> > > > >>> > > > > > > > the
> > > > >>> > > > > > > > > > > same
> > > > >>> > > > > > > > > > > > > > > > alterconfig request may contain
> > > resources
> > > > >>> that
> > > > >>> > > are
> > > > >>> > > > > > > > authorized
> > > > >>> > > > > > > > > > > based
> > > > >>> > > > > > > > > > > > > on
> > > > >>> > > > > > > > > > > > > > > > group1 as well as resources
> > authorized
> > > > >>> based on
> > > > >>> > > > > > > membership
> > > > >>> > > > > > > > in
> > > > >>> > > > > > > > > > > > group 2
> > > > >>> > > > > > > > > > > > > > ..
> > > > >>> > > > > > > > > > > > > > > > And in all cases we'd need to log
> the
> > > > >>> specific
> > > > >>> > > > > reason I
> > > > >>> > > > > > > > > think..
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > Basically I think that we might
> have
> > a
> > > > hard
> > > > >>> > time
> > > > >>> > > > > > properly
> > > > >>> > > > > > > > > > > > authorizing
> > > > >>> > > > > > > > > > > > > > and
> > > > >>> > > > > > > > > > > > > > > > logging without being able to
> forward
> > > the
> > > > >>> > entire
> > > > >>> > > > > > > > principal..
> > > > >>> > > > > > > > > > but
> > > > >>> > > > > > > > > > > > > > again, I
> > > > >>> > > > > > > > > > > > > > > > might be heading down an entirely
> > wrong
> > > > >>> path
> > > > >>> > here
> > > > >>> > > > :)
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > Best regards,
> > > > >>> > > > > > > > > > > > > > > > Sönke
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > On Wed, 22 Apr 2020 at 23:13,
> > Guozhang
> > > > >>> Wang <
> > > > >>> > > > > > > > > > wangg...@gmail.com>
> > > > >>> > > > > > > > > > > > > > wrote:
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > Colin, Boyang: thanks for the
> > > updates,
> > > > I
> > > > >>> > agree
> > > > >>> > > > that
> > > > >>> > > > > > an
> > > > >>> > > > > > > > > > > > > > EnvelopeRequest
> > > > >>> > > > > > > > > > > > > > > > > would be a less vulnerable
> approach
> > > > than
> > > > >>> > > optional
> > > > >>> > > > > > > fields,
> > > > >>> > > > > > > > > and
> > > > >>> > > > > > > > > > > I'm
> > > > >>> > > > > > > > > > > > > > just
> > > > >>> > > > > > > > > > > > > > > > > wondering if we would keep the
> > > > >>> > EnvelopeRequest
> > > > >>> > > > for
> > > > >>> > > > > a
> > > > >>> > > > > > > long
> > > > >>> > > > > > > > > > > time. I
> > > > >>> > > > > > > > > > > > > was
> > > > >>> > > > > > > > > > > > > > > > > thinking that, potentially if we
> > > > require
> > > > >>> > > clients
> > > > >>> > > > to
> > > > >>> > > > > > be
> > > > >>> > > > > > > on
> > > > >>> > > > > > > > > > newer
> > > > >>> > > > > > > > > > > > > > version
> > > > >>> > > > > > > > > > > > > > > > > when talking to a 3.0+ (assuming
> > 3.0
> > > is
> > > > >>> the
> > > > >>> > > > bridge
> > > > >>> > > > > > > > release)
> > > > >>> > > > > > > > > > > > > brokers,
> > > > >>> > > > > > > > > > > > > > then
> > > > >>> > > > > > > > > > > > > > > > > we do not need to keep this code
> > for
> > > > too
> > > > >>> > long,
> > > > >>> > > > but
> > > > >>> > > > > I
> > > > >>> > > > > > > > think
> > > > >>> > > > > > > > > > that
> > > > >>> > > > > > > > > > > > > > would be
> > > > >>> > > > > > > > > > > > > > > > a
> > > > >>> > > > > > > > > > > > > > > > > very hasty compatibility breaking
> > so
> > > > >>> maybe we
> > > > >>> > > > > indeed
> > > > >>> > > > > > > need
> > > > >>> > > > > > > > > to
> > > > >>> > > > > > > > > > > keep
> > > > >>> > > > > > > > > > > > > > this
> > > > >>> > > > > > > > > > > > > > > > > forwarding mechanism many years.
> > > > >>> > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > Regarding future use cases, I
> think
> > > the
> > > > >>> > example
> > > > >>> > > > > that
> > > > >>> > > > > > > > Boyang
> > > > >>> > > > > > > > > > > > > > mentioned may
> > > > >>> > > > > > > > > > > > > > > > > not be very practical honestly,
> > > because
> > > > >>> when
> > > > >>> > > > > there's
> > > > >>> > > > > > a
> > > > >>> > > > > > > > > > > > connectivity
> > > > >>> > > > > > > > > > > > > > > > issue,
> > > > >>> > > > > > > > > > > > > > > > > it is either a network partition
> > > > between
> > > > >>> > > > > "controller,
> > > > >>> > > > > > > A |
> > > > >>> > > > > > > > > B",
> > > > >>> > > > > > > > > > > or
> > > > >>> > > > > > > > > > > > > > > > > "controller | A, B". In other
> > words,
> > > if
> > > > >>> the
> > > > >>> > > > > > controller
> > > > >>> > > > > > > > can
> > > > >>> > > > > > > > > > talk
> > > > >>> > > > > > > > > > > > to
> > > > >>> > > > > > > > > > > > > A,
> > > > >>> > > > > > > > > > > > > > > > then
> > > > >>> > > > > > > > > > > > > > > > > very likely A would not be able
> to
> > > talk
> > > > >>> to B
> > > > >>> > > > > > either...
> > > > >>> > > > > > > > > > anyways,
> > > > >>> > > > > > > > > > > > > > since the
> > > > >>> > > > > > > > > > > > > > > > > forwarding would be there for a
> > > > >>> sufficiently
> > > > >>> > > long
> > > > >>> > > > > > > time, I
> > > > >>> > > > > > > > > > think
> > > > >>> > > > > > > > > > > > > > keeping
> > > > >>> > > > > > > > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > > > > additional envelope makes sense.
> > > > >>> > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > Guozhang
> > > > >>> > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > On Wed, Apr 22, 2020 at 1:47 PM
> > > Boyang
> > > > >>> Chen <
> > > > >>> > > > > > > > > > > > > > reluctanthero...@gmail.com>
> > > > >>> > > > > > > > > > > > > > > > > wrote:
> > > > >>> > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > Thanks Colin for the summary!
> And
> > > > >>> Guozhang,
> > > > >>> > > > > > regarding
> > > > >>> > > > > > > > the
> > > > >>> > > > > > > > > > > > future
> > > > >>> > > > > > > > > > > > > > use
> > > > >>> > > > > > > > > > > > > > > > > cases,
> > > > >>> > > > > > > > > > > > > > > > > > consider a scenario where there
> > are
> > > > >>> > temporary
> > > > >>> > > > > > > > > connectivity
> > > > >>> > > > > > > > > > > > issue
> > > > >>> > > > > > > > > > > > > > > > between
> > > > >>> > > > > > > > > > > > > > > > > > controller to a fellow broker
> A,
> > > the
> > > > >>> > > controller
> > > > >>> > > > > > could
> > > > >>> > > > > > > > > then
> > > > >>> > > > > > > > > > > > > leverage
> > > > >>> > > > > > > > > > > > > > > > > another
> > > > >>> > > > > > > > > > > > > > > > > > healthy broker B to do a
> > forwarding
> > > > >>> request
> > > > >>> > > to
> > > > >>> > > > A
> > > > >>> > > > > in
> > > > >>> > > > > > > > order
> > > > >>> > > > > > > > > > to
> > > > >>> > > > > > > > > > > > > > maintain a
> > > > >>> > > > > > > > > > > > > > > > > > communication.
> > > > >>> > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > Even for KIP-590 scope, the
> > > > forwarding
> > > > >>> > > > mechanism
> > > > >>> > > > > > > shall
> > > > >>> > > > > > > > > not
> > > > >>> > > > > > > > > > be
> > > > >>> > > > > > > > > > > > > > transit
> > > > >>> > > > > > > > > > > > > > > > as
> > > > >>> > > > > > > > > > > > > > > > > we
> > > > >>> > > > > > > > > > > > > > > > > > do need to support older
> version
> > of
> > > > >>> admin
> > > > >>> > > > clients
> > > > >>> > > > > > > for a
> > > > >>> > > > > > > > > > > couple
> > > > >>> > > > > > > > > > > > of
> > > > >>> > > > > > > > > > > > > > years
> > > > >>> > > > > > > > > > > > > > > > > > IIUC.
> > > > >>> > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > Boyang
> > > > >>> > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > On Wed, Apr 22, 2020 at 1:29 PM
> > > Colin
> > > > >>> > McCabe
> > > > >>> > > <
> > > > >>> > > > > > > > > > > > cmcc...@apache.org
> > > > >>> > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > wrote:
> > > > >>> > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > Hi all,
> > > > >>> > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > I guess the way I see this
> > > working
> > > > is
> > > > >>> > that
> > > > >>> > > > the
> > > > >>> > > > > > > > request
> > > > >>> > > > > > > > > > gets
> > > > >>> > > > > > > > > > > > > sent
> > > > >>> > > > > > > > > > > > > > from
> > > > >>> > > > > > > > > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > > > > > > client, to the initial
> broker,
> > > and
> > > > >>> then
> > > > >>> > > > > forwarded
> > > > >>> > > > > > > to
> > > > >>> > > > > > > > > the
> > > > >>> > > > > > > > > > > > final
> > > > >>> > > > > > > > > > > > > > > > broker.
> > > > >>> > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > The initial broker should do
> > > > >>> > authentication
> > > > >>> > > > > (who
> > > > >>> > > > > > > are
> > > > >>> > > > > > > > > > you?)
> > > > >>> > > > > > > > > > > > and
> > > > >>> > > > > > > > > > > > > > come
> > > > >>> > > > > > > > > > > > > > > > up
> > > > >>> > > > > > > > > > > > > > > > > > > with a principal name.  Then
> it
> > > > >>> creates
> > > > >>> > an
> > > > >>> > > > > > envelope
> > > > >>> > > > > > > > > > > request,
> > > > >>> > > > > > > > > > > > > > which
> > > > >>> > > > > > > > > > > > > > > > will
> > > > >>> > > > > > > > > > > > > > > > > > > contain that principal name,
> > and
> > > > >>> sends it
> > > > >>> > > > along
> > > > >>> > > > > > > with
> > > > >>> > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > unmodified
> > > > >>> > > > > > > > > > > > > > > > > > > original request to the final
> > > > >>> broker.  (I
> > > > >>> > > > agree
> > > > >>> > > > > > > with
> > > > >>> > > > > > > > > Tom
> > > > >>> > > > > > > > > > > and
> > > > >>> > > > > > > > > > > > > > Rajini
> > > > >>> > > > > > > > > > > > > > > > > that
> > > > >>> > > > > > > > > > > > > > > > > > we
> > > > >>> > > > > > > > > > > > > > > > > > > can't forward the information
> > > > needed
> > > > >>> to
> > > > >>> > do
> > > > >>> > > > > > > > > authentication
> > > > >>> > > > > > > > > > > on
> > > > >>> > > > > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > > > final
> > > > >>> > > > > > > > > > > > > > > > > > > broker, but I also think we
> > don't
> > > > >>> need
> > > > >>> > to,
> > > > >>> > > > > since
> > > > >>> > > > > > we
> > > > >>> > > > > > > > can
> > > > >>> > > > > > > > > > do
> > > > >>> > > > > > > > > > > it
> > > > >>> > > > > > > > > > > > > on
> > > > >>> > > > > > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > > > > > > initial broker.)
> > > > >>> > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > The final broker knows it can
> > > trust
> > > > >>> the
> > > > >>> > > > > principal
> > > > >>> > > > > > > > name
> > > > >>> > > > > > > > > in
> > > > >>> > > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > > > envelope
> > > > >>> > > > > > > > > > > > > > > > > > > (since EnvelopeRequest
> requires
> > > > >>> > > CLUSTERACTION
> > > > >>> > > > > on
> > > > >>> > > > > > > > > > CLUSTER).
> > > > >>> > > > > > > > > > > > So
> > > > >>> > > > > > > > > > > > > > it can
> > > > >>> > > > > > > > > > > > > > > > > use
> > > > >>> > > > > > > > > > > > > > > > > > > that principal name for
> > > > authorization
> > > > >>> > > (given
> > > > >>> > > > > who
> > > > >>> > > > > > > you
> > > > >>> > > > > > > > > are,
> > > > >>> > > > > > > > > > > > what
> > > > >>> > > > > > > > > > > > > > can
> > > > >>> > > > > > > > > > > > > > > > you
> > > > >>> > > > > > > > > > > > > > > > > > > do?)  The forwarded principal
> > > name
> > > > >>> will
> > > > >>> > > also
> > > > >>> > > > be
> > > > >>> > > > > > > used
> > > > >>> > > > > > > > > for
> > > > >>> > > > > > > > > > > > > logging.
> > > > >>> > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > One question is why we need
> an
> > > > >>> > > > EnvelopeRequest.
> > > > >>> > > > > > > > Well,
> > > > >>> > > > > > > > > if
> > > > >>> > > > > > > > > > > we
> > > > >>> > > > > > > > > > > > > > don't
> > > > >>> > > > > > > > > > > > > > > > have
> > > > >>> > > > > > > > > > > > > > > > > > an
> > > > >>> > > > > > > > > > > > > > > > > > > EnvelopeRequest, we need
> > > somewhere
> > > > >>> else
> > > > >>> > to
> > > > >>> > > > put
> > > > >>> > > > > > the
> > > > >>> > > > > > > > > > > forwarded
> > > > >>> > > > > > > > > > > > > > > > principal
> > > > >>> > > > > > > > > > > > > > > > > > > name.  I don't think
> overriding
> > > an
> > > > >>> > existing
> > > > >>> > > > > field
> > > > >>> > > > > > > > (like
> > > > >>> > > > > > > > > > > > > > clientId) is
> > > > >>> > > > > > > > > > > > > > > > a
> > > > >>> > > > > > > > > > > > > > > > > > good
> > > > >>> > > > > > > > > > > > > > > > > > > option for this.  It's messy,
> > and
> > > > >>> loses
> > > > >>> > > > > > > information.
> > > > >>> > > > > > > > > It
> > > > >>> > > > > > > > > > > also
> > > > >>> > > > > > > > > > > > > > raises
> > > > >>> > > > > > > > > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > > > > > > question of how the final
> > broker
> > > > >>> knows
> > > > >>> > that
> > > > >>> > > > the
> > > > >>> > > > > > > > > clientId
> > > > >>> > > > > > > > > > in
> > > > >>> > > > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > > > > received
> > > > >>> > > > > > > > > > > > > > > > > > > message is not "really" a
> > > clientId,
> > > > >>> but
> > > > >>> > is
> > > > >>> > > a
> > > > >>> > > > > > > > principal
> > > > >>> > > > > > > > > > > name.
> > > > >>> > > > > > > > > > > > > > Without
> > > > >>> > > > > > > > > > > > > > > > > an
> > > > >>> > > > > > > > > > > > > > > > > > > envelope, there's no way to
> > > clearly
> > > > >>> mark
> > > > >>> > a
> > > > >>> > > > > > request
> > > > >>> > > > > > > as
> > > > >>> > > > > > > > > > > > > forwarded,
> > > > >>> > > > > > > > > > > > > > so
> > > > >>> > > > > > > > > > > > > > > > > > there's
> > > > >>> > > > > > > > > > > > > > > > > > > no reason for the final
> broker
> > to
> > > > >>> treat
> > > > >>> > > this
> > > > >>> > > > > > > > > differently
> > > > >>> > > > > > > > > > > > than a
> > > > >>> > > > > > > > > > > > > > > > regular
> > > > >>> > > > > > > > > > > > > > > > > > > clientId (or whatever).
> > > > >>> > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > We talked about using
> optional
> > > > >>> fields to
> > > > >>> > > > > contain
> > > > >>> > > > > > > the
> > > > >>> > > > > > > > > > > > forwarded
> > > > >>> > > > > > > > > > > > > > > > > principal
> > > > >>> > > > > > > > > > > > > > > > > > > name, but this is also messy
> > and
> > > > >>> > > potentially
> > > > >>> > > > > > > > dangerous.
> > > > >>> > > > > > > > > > > > Older
> > > > >>> > > > > > > > > > > > > > > > brokers
> > > > >>> > > > > > > > > > > > > > > > > > will
> > > > >>> > > > > > > > > > > > > > > > > > > simply ignore the optional
> > > fields,
> > > > >>> which
> > > > >>> > > > could
> > > > >>> > > > > > > result
> > > > >>> > > > > > > > > in
> > > > >>> > > > > > > > > > > them
> > > > >>> > > > > > > > > > > > > > > > executing
> > > > >>> > > > > > > > > > > > > > > > > > > operations as the wrong
> > > principal.
> > > > >>> Of
> > > > >>> > > > course,
> > > > >>> > > > > > this
> > > > >>> > > > > > > > > would
> > > > >>> > > > > > > > > > > > > > require a
> > > > >>> > > > > > > > > > > > > > > > > > > misconfiguration in order to
> > > > happen,
> > > > >>> but
> > > > >>> > it
> > > > >>> > > > > still
> > > > >>> > > > > > > > seems
> > > > >>> > > > > > > > > > > > better
> > > > >>> > > > > > > > > > > > > > to set
> > > > >>> > > > > > > > > > > > > > > > > up
> > > > >>> > > > > > > > > > > > > > > > > > > the system so that this
> > > > >>> misconfiguration
> > > > >>> > is
> > > > >>> > > > > > > detected,
> > > > >>> > > > > > > > > > > rather
> > > > >>> > > > > > > > > > > > > than
> > > > >>> > > > > > > > > > > > > > > > > > silently
> > > > >>> > > > > > > > > > > > > > > > > > > ignored.
> > > > >>> > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > It's true that the need for
> > > > >>> forwarding is
> > > > >>> > > > > > > "temporary"
> > > > >>> > > > > > > > > in
> > > > >>> > > > > > > > > > > some
> > > > >>> > > > > > > > > > > > > > sense,
> > > > >>> > > > > > > > > > > > > > > > > > since
> > > > >>> > > > > > > > > > > > > > > > > > > we only need it for older
> > > clients.
> > > > >>> > > However,
> > > > >>> > > > we
> > > > >>> > > > > > > will
> > > > >>> > > > > > > > > want
> > > > >>> > > > > > > > > > > to
> > > > >>> > > > > > > > > > > > > > support
> > > > >>> > > > > > > > > > > > > > > > > > these
> > > > >>> > > > > > > > > > > > > > > > > > > older clients for many years
> to
> > > > come.
> > > > >>> > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > I agree that the usefulness
> of
> > > > >>> > > > EnvelopeRequest
> > > > >>> > > > > is
> > > > >>> > > > > > > > > limited
> > > > >>> > > > > > > > > > > by
> > > > >>> > > > > > > > > > > > it
> > > > >>> > > > > > > > > > > > > > > > being a
> > > > >>> > > > > > > > > > > > > > > > > > > superuser-only request at the
> > > > moment.
> > > > >>> > > > Perhaps
> > > > >>> > > > > > > there
> > > > >>> > > > > > > > > are
> > > > >>> > > > > > > > > > > some
> > > > >>> > > > > > > > > > > > > > changes
> > > > >>> > > > > > > > > > > > > > > > > to
> > > > >>> > > > > > > > > > > > > > > > > > > how custom principals work
> that
> > > > would
> > > > >>> > allow
> > > > >>> > > > us
> > > > >>> > > > > to
> > > > >>> > > > > > > get
> > > > >>> > > > > > > > > > > around
> > > > >>> > > > > > > > > > > > > > this in
> > > > >>> > > > > > > > > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > > > > > > future.  We should think
> about
> > > that
> > > > >>> so
> > > > >>> > that
> > > > >>> > > > we
> > > > >>> > > > > > have
> > > > >>> > > > > > > > > this
> > > > >>> > > > > > > > > > > > > > > > functionality
> > > > >>> > > > > > > > > > > > > > > > > in
> > > > >>> > > > > > > > > > > > > > > > > > > the future if it's needed.
> > > > >>> > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > best,
> > > > >>> > > > > > > > > > > > > > > > > > > Colin
> > > > >>> > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > On Wed, Apr 22, 2020, at
> 11:21,
> > > > >>> Guozhang
> > > > >>> > > Wang
> > > > >>> > > > > > > wrote:
> > > > >>> > > > > > > > > > > > > > > > > > > > Hello Gwen,
> > > > >>> > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > > The purpose here is for
> > > > maintaining
> > > > >>> > > > > > compatibility
> > > > >>> > > > > > > > old
> > > > >>> > > > > > > > > > > > > clients,
> > > > >>> > > > > > > > > > > > > > who
> > > > >>> > > > > > > > > > > > > > > > do
> > > > >>> > > > > > > > > > > > > > > > > > not
> > > > >>> > > > > > > > > > > > > > > > > > > > have functionality to do
> > > > re-routing
> > > > >>> > admin
> > > > >>> > > > > > > requests
> > > > >>> > > > > > > > > > > > > themselves.
> > > > >>> > > > > > > > > > > > > > New
> > > > >>> > > > > > > > > > > > > > > > > > > clients
> > > > >>> > > > > > > > > > > > > > > > > > > > can of course do this
> > > themselves
> > > > by
> > > > >>> > > > detecting
> > > > >>> > > > > > > who's
> > > > >>> > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > controller.
> > > > >>> > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > > Hello Colin / Boyang,
> > > > >>> > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > > Regarding the usage of the
> > > > >>> envelope,
> > > > >>> > I'm
> > > > >>> > > > > > curious
> > > > >>> > > > > > > > what
> > > > >>> > > > > > > > > > are
> > > > >>> > > > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > > > > potential
> > > > >>> > > > > > > > > > > > > > > > > > > > future use cases that would
> > > > require
> > > > >>> > > request
> > > > >>> > > > > > > > > forwarding
> > > > >>> > > > > > > > > > > and
> > > > >>> > > > > > > > > > > > > > hence
> > > > >>> > > > > > > > > > > > > > > > > > envelope
> > > > >>> > > > > > > > > > > > > > > > > > > > would be useful?
> Originally I
> > > > >>> thought
> > > > >>> > > that
> > > > >>> > > > > the
> > > > >>> > > > > > > > > > forwarding
> > > > >>> > > > > > > > > > > > > > mechanism
> > > > >>> > > > > > > > > > > > > > > > > is
> > > > >>> > > > > > > > > > > > > > > > > > > only
> > > > >>> > > > > > > > > > > > > > > > > > > > temporary as we need it for
> > the
> > > > >>> bridge
> > > > >>> > > > > release,
> > > > >>> > > > > > > and
> > > > >>> > > > > > > > > > > moving
> > > > >>> > > > > > > > > > > > > > forward
> > > > >>> > > > > > > > > > > > > > > > we
> > > > >>> > > > > > > > > > > > > > > > > > > will
> > > > >>> > > > > > > > > > > > > > > > > > > > get rid of this to simplify
> > the
> > > > >>> code
> > > > >>> > > base.
> > > > >>> > > > If
> > > > >>> > > > > > we
> > > > >>> > > > > > > do
> > > > >>> > > > > > > > > > have
> > > > >>> > > > > > > > > > > > > valid
> > > > >>> > > > > > > > > > > > > > use
> > > > >>> > > > > > > > > > > > > > > > > > cases
> > > > >>> > > > > > > > > > > > > > > > > > > in
> > > > >>> > > > > > > > > > > > > > > > > > > > the future which makes us
> > > believe
> > > > >>> that
> > > > >>> > > > > request
> > > > >>> > > > > > > > > > forwarding
> > > > >>> > > > > > > > > > > > > would
> > > > >>> > > > > > > > > > > > > > > > > > actually
> > > > >>> > > > > > > > > > > > > > > > > > > be
> > > > >>> > > > > > > > > > > > > > > > > > > > a permanent feature
> retained
> > on
> > > > the
> > > > >>> > > broker
> > > > >>> > > > > > side,
> > > > >>> > > > > > > > I'm
> > > > >>> > > > > > > > > on
> > > > >>> > > > > > > > > > > > board
> > > > >>> > > > > > > > > > > > > > with
> > > > >>> > > > > > > > > > > > > > > > > > adding
> > > > >>> > > > > > > > > > > > > > > > > > > > the envelope request
> > protocol.
> > > > >>> > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > > Guozhang
> > > > >>> > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > > On Wed, Apr 22, 2020 at
> 8:22
> > AM
> > > > >>> Gwen
> > > > >>> > > > Shapira
> > > > >>> > > > > <
> > > > >>> > > > > > > > > > > > > > g...@confluent.io>
> > > > >>> > > > > > > > > > > > > > > > > > wrote:
> > > > >>> > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > > > Hey Boyang,
> > > > >>> > > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > > > Sorry if this was already
> > > > >>> discussed,
> > > > >>> > > but
> > > > >>> > > > I
> > > > >>> > > > > > > didn't
> > > > >>> > > > > > > > > see
> > > > >>> > > > > > > > > > > > this
> > > > >>> > > > > > > > > > > > > as
> > > > >>> > > > > > > > > > > > > > > > > > rejected
> > > > >>> > > > > > > > > > > > > > > > > > > > > alternative:
> > > > >>> > > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > > > Until now, we always did
> > > client
> > > > >>> side
> > > > >>> > > > > routing
> > > > >>> > > > > > -
> > > > >>> > > > > > > > the
> > > > >>> > > > > > > > > > > client
> > > > >>> > > > > > > > > > > > > > itself
> > > > >>> > > > > > > > > > > > > > > > > > found
> > > > >>> > > > > > > > > > > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > > > > > > > > controller via metadata
> and
> > > > >>> directed
> > > > >>> > > > > requests
> > > > >>> > > > > > > > > > > > accordingly.
> > > > >>> > > > > > > > > > > > > > > > Brokers
> > > > >>> > > > > > > > > > > > > > > > > > that
> > > > >>> > > > > > > > > > > > > > > > > > > > > were not the controller,
> > > > rejected
> > > > >>> > those
> > > > >>> > > > > > > requests.
> > > > >>> > > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > > > Why did we decide to move
> > to
> > > > >>> broker
> > > > >>> > > side
> > > > >>> > > > > > > routing?
> > > > >>> > > > > > > > > Was
> > > > >>> > > > > > > > > > > the
> > > > >>> > > > > > > > > > > > > > > > > client-side
> > > > >>> > > > > > > > > > > > > > > > > > > > > option discussed and
> > rejected
> > > > >>> > somewhere
> > > > >>> > > > > and I
> > > > >>> > > > > > > > > missed
> > > > >>> > > > > > > > > > > it?
> > > > >>> > > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > > > Gwen
> > > > >>> > > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > > > On Fri, Apr 3, 2020, 4:45
> > PM
> > > > >>> 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
> > > > >>> > > > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > > > --
> > > > >>> > > > > > > > > > > > > > > > > > > > -- Guozhang
> > > > >>> > > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > > --
> > > > >>> > > > > > > > > > > > > > > > > -- Guozhang
> > > > >>> > > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > > > --
> > > > >>> > > > > > > > > > > > > > > > Sönke Liebau
> > > > >>> > > > > > > > > > > > > > > > Partner
> > > > >>> > > > > > > > > > > > > > > > Tel. +49 179 7940878
> > > > >>> > > > > > > > > > > > > > > > OpenCore GmbH & Co. KG -
> > > > >>> Thomas-Mann-Straße 8 -
> > > > >>> > > > 22880
> > > > >>> > > > > > > > Wedel -
> > > > >>> > > > > > > > > > > > Germany
> > > > >>> > > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > > > --
> > > > >>> > > > > > > > > > > > > Sönke Liebau
> > > > >>> > > > > > > > > > > > > Partner
> > > > >>> > > > > > > > > > > > > Tel. +49 179 7940878
> > > > >>> > > > > > > > > > > > > OpenCore GmbH & Co. KG -
> Thomas-Mann-Straße
> > > 8 -
> > > > >>> 22880
> > > > >>> > > > > Wedel -
> > > > >>> > > > > > > > > Germany
> > > > >>> > > > > > > > > > > > >
> > > > >>> > > > > > > > > > > >
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > > > --
> > > > >>> > > > > > > > > > > Sönke Liebau
> > > > >>> > > > > > > > > > > Partner
> > > > >>> > > > > > > > > > > Tel. +49 179 7940878
> > > > >>> > > > > > > > > > > OpenCore GmbH & Co. KG - Thomas-Mann-Straße
> 8 -
> > > > 22880
> > > > >>> > > Wedel -
> > > > >>> > > > > > > Germany
> > > > >>> > > > > > > > > > >
> > > > >>> > > > > > > > > >
> > > > >>> > > > > > > > >
> > > > >>> > > > > > > >
> > > > >>> > > > > > >
> > > > >>> > > > > > >
> > > > >>> > > > > > > --
> > > > >>> > > > > > > Sönke Liebau
> > > > >>> > > > > > > Partner
> > > > >>> > > > > > > Tel. +49 179 7940878
> > > > >>> > > > > > > OpenCore GmbH & Co. KG - Thomas-Mann-Straße 8 - 22880
> > > > Wedel -
> > > > >>> > > Germany
> > > > >>> > > > > > >
> > > > >>> > > > > >
> > > > >>> > > > >
> > > > >>> > > > >
> > > > >>> > > > > --
> > > > >>> > > > > Sönke Liebau
> > > > >>> > > > > Partner
> > > > >>> > > > > Tel. +49 179 7940878
> > > > >>> > > > > OpenCore GmbH & Co. KG - Thomas-Mann-Straße 8 - 22880
> > Wedel -
> > > > >>> Germany
> > > > >>> > > > >
> > > > >>> > > >
> > > > >>> > >
> > > > >>> >
> > > > >>> >
> > > > >>> > --
> > > > >>> > -- Guozhang
> > > > >>> >
> > > > >>>
> > > > >>
> > > >
> > >
> >
>

Reply via email to