+1
Thanks for the updated KIP.

On Tue, Oct 9, 2018 at 3:28 PM Lucas Wang <lucasatu...@gmail.com> wrote:

> Thanks Jun, I've updated the KIP with the new names.
>
> Hi Joel, Becket, Dong, Ismael,
> Since you've reviewed this KIP in the past, can you please review it again?
> Thanks a lot!
>
> Lucas
>
> On Mon, Oct 8, 2018 at 6:10 PM Jun Rao <j...@confluent.io> wrote:
>
>> Hi, Lucas,
>>
>> Yes, the new names sound good to me.
>>
>> Thanks,
>>
>> Jun
>>
>> On Fri, Oct 5, 2018 at 1:12 PM, Lucas Wang <lucasatu...@gmail.com> wrote:
>>
>> > Thanks for the suggestion, Ismael. I like it.
>> >
>> > Jun,
>> > I'm excited to get the +1, thanks a lot!
>> > Meanwhile what do you feel about renaming the metrics and config to
>> >
>> > ControlPlaneRequestQueueSize
>> >
>> > ControlPlaneNetworkProcessorIdlePercent
>> >
>> > ControlPlaneRequestHandlerIdlePercent
>> >
>> > control.plane.listener.name
>> >
>> > ?
>> >
>> >
>> > Thanks,
>> >
>> > Lucas
>> >
>> > On Thu, Oct 4, 2018 at 11:38 AM Ismael Juma <isma...@gmail.com> wrote:
>> >
>> > > Have we considered control plane if we think control by itself is
>> > > ambiguous? I agree with the original concern that "controller" may be
>> > > confusing for something that affects all brokers.
>> > >
>> > > Ismael
>> > >
>> > >
>> > > On 4 Oct 2018 11:08 am, "Lucas Wang" <lucasatu...@gmail.com> wrote:
>> > >
>> > > Thanks Jun. I've changed the KIP with the suggested 2 step upgrade.
>> > > Please take a look again when you have time.
>> > >
>> > > Regards,
>> > > Lucas
>> > >
>> > >
>> > > On Thu, Oct 4, 2018 at 10:06 AM Jun Rao <j...@confluent.io> wrote:
>> > >
>> > > > Hi, Lucas,
>> > > >
>> > > > 200. That's a valid concern. So, we can probably just keep the
>> current
>> > > > name.
>> > > >
>> > > > 201. I am thinking that you would upgrade in the same way as
>> changing
>> > > > inter.broker.listener.name. This requires 2 rounds of rolling
>> restart.
>> > > In
>> > > > the first round, we add the controller endpoint to the listeners w/o
>> > > > setting controller.listener.name. In the second round, every broker
>> > sets
>> > > > controller.listener.name. At that point, the controller listener is
>> > > ready
>> > > > in every broker.
>> > > >
>> > > > Thanks,
>> > > >
>> > > > Jun
>> > > >
>> > > > On Tue, Oct 2, 2018 at 10:38 AM, Lucas Wang <lucasatu...@gmail.com>
>> > > wrote:
>> > > >
>> > > > > Thanks for the further comments, Jun.
>> > > > >
>> > > > > 200. Currently in the code base, we have the term of
>> "ControlBatch"
>> > > > related
>> > > > > to
>> > > > > idempotent/transactional producing. Do you think it's a concern
>> for
>> > > > reusing
>> > > > > the term "control"?
>> > > > >
>> > > > > 201. It's not clear to me how it would work by following the same
>> > > > strategy
>> > > > > for "controller.listener.name".
>> > > > > Say the new controller has its "controller.listener.name" set to
>> the
>> > > > value
>> > > > > "CONTROLLER", and broker 1
>> > > > > has picked up this KIP by announcing
>> > > > > "endpoints": [
>> > > > >         "CONTROLLER://broker1.example.com:9091",
>> > > > >         "INTERNAL://broker1.example.com:9092",
>> > > > >         "EXTERNAL://host1.example.com:9093"
>> > > > >     ],
>> > > > >
>> > > > > while broker2 has not picked up the change, and is announcing
>> > > > > "endpoints": [
>> > > > >         "INTERNAL://broker2.example.com:9092",
>> > > > >         "EXTERNAL://host2.example.com:9093"
>> > > > >     ],
>> > > > > to support both broker 1 for the new behavior and broker 2 for the
>> > old
>> > > > > behavior, it seems the controller must
>> > > > > check their published endpoints. Am I missing something?
>> > > > >
>> > > > > Thanks!
>> > > > > Lucas
>> > > > >
>> > > > > On Mon, Oct 1, 2018 at 6:29 PM Jun Rao <j...@confluent.io> wrote:
>> > > > >
>> > > > > > Hi, Lucas,
>> > > > > >
>> > > > > > Sorry for the delay. The updated wiki looks good to me overall.
>> > Just
>> > > a
>> > > > > > couple more minor comments.
>> > > > > >
>> > > > > > 200.
>> > > kafka.network:name=ControllerRequestQueueSize,type=RequestChannel:
>> > > > > The
>> > > > > > name ControllerRequestQueueSize gives the impression that it's
>> only
>> > > for
>> > > > > the
>> > > > > > controller broker. Perhaps we can just rename all metrics and
>> > configs
>> > > > > from
>> > > > > > controller to control. This indicates that the threads and the
>> > queues
>> > > > are
>> > > > > > for the control requests (as oppose to data requests).
>> > > > > >
>> > > > > > 201. "<new controller, old broker>: In this scenario, the
>> > controller
>> > > > will
>> > > > > > have the "controller.listener.name" config set to a value like
>> > > > > > "CONTROLLER", however the broker's exposed endpoints do not
>> have an
>> > > > entry
>> > > > > > corresponding to the new listener name. Hence the controller
>> should
>> > > > > > preserve the existing behavior by determining the endpoint using
>> > > > > > *inter-broker-listener-name *value. The end result should be the
>> > same
>> > > > > > behavior as today." Currently, the controller makes connections
>> > based
>> > > > on
>> > > > > > its local inter.broker.listener.name config without checking
>> the
>> > > > target
>> > > > > > broker's ZK registration. For consistency, perhaps we can just
>> > follow
>> > > > the
>> > > > > > same strategy for controller.listener.name. This existing
>> behavior
>> > > > seems
>> > > > > > simpler to understand and has the benefit of catching
>> inconsistent
>> > > > > configs
>> > > > > > across brokers.
>> > > > > >
>> > > > > > Thanks,
>> > > > > >
>> > > > > > Jun
>> > > > > >
>> > > > > > On Mon, Oct 1, 2018 at 8:43 AM, Lucas Wang <
>> lucasatu...@gmail.com>
>> > > > > wrote:
>> > > > > >
>> > > > > > > Hi Jun,
>> > > > > > >
>> > > > > > > Sorry to bother you again. Can you please take a look at the
>> wiki
>> > > > again
>> > > > > > > when you have time?
>> > > > > > >
>> > > > > > > Thanks a lot!
>> > > > > > > Lucas
>> > > > > > >
>> > > > > > > On Wed, Sep 19, 2018 at 3:57 PM Lucas Wang <
>> > lucasatu...@gmail.com>
>> > > > > > wrote:
>> > > > > > >
>> > > > > > > > Hi Jun,
>> > > > > > > >
>> > > > > > > > Thanks a lot for the detailed explanation.
>> > > > > > > > I've restored the wiki to a previous version that does not
>> > > require
>> > > > > > config
>> > > > > > > > changes,
>> > > > > > > > and keeps the current behavior with the proposed changes
>> turned
>> > > off
>> > > > > by
>> > > > > > > > default.
>> > > > > > > > I'd appreciate it if you can review it again.
>> > > > > > > >
>> > > > > > > > Thanks!
>> > > > > > > > Lucas
>> > > > > > > >
>> > > > > > > > On Tue, Sep 18, 2018 at 1:48 PM Jun Rao <j...@confluent.io>
>> > > wrote:
>> > > > > > > >
>> > > > > > > >> Hi, Lucas,
>> > > > > > > >>
>> > > > > > > >> When upgrading to a minor release, I think the expectation
>> is
>> > > > that a
>> > > > > > > user
>> > > > > > > >> wouldn't need to make any config changes, other than the
>> usual
>> > > > > > > >> inter.broker.protocol. If we require other config changes
>> > during
>> > > > an
>> > > > > > > >> upgrade, then it's probably better to do that in a major
>> > > release.
>> > > > > > > >>
>> > > > > > > >> Regarding your proposal, I think removing
>> host/advertised_host
>> > > in
>> > > > > > favor
>> > > > > > > of
>> > > > > > > >> listeners:advertised_listeners seems useful regardless of
>> this
>> > > > KIP.
>> > > > > > > >> However, that can probably wait until a major release.
>> > > > > > > >>
>> > > > > > > >> As for the controller listener, I am not sure if one has to
>> > set
>> > > > it.
>> > > > > To
>> > > > > > > >> make
>> > > > > > > >> a cluster healthy, one sort of have to make sure that the
>> > > request
>> > > > > > queue
>> > > > > > > is
>> > > > > > > >> never full and no request will be sitting in the request
>> queue
>> > > for
>> > > > > > long.
>> > > > > > > >> If
>> > > > > > > >> one does that, setting the controller listener may not be
>> > > > necessary.
>> > > > > > On
>> > > > > > > >> the
>> > > > > > > >> flip side, even if one sets the controller listener, but
>> the
>> > > > request
>> > > > > > > queue
>> > > > > > > >> and the request time for the data part are still high, the
>> > > cluster
>> > > > > may
>> > > > > > > >> still not be healthy. Given that we have already started
>> the
>> > 2.1
>> > > > > > release
>> > > > > > > >> planning, perhaps we can start with not requiring the
>> > controller
>> > > > > > > listener.
>> > > > > > > >> If this is indeed something that everyone wants to set, we
>> can
>> > > > make
>> > > > > > it a
>> > > > > > > >> required config in a major release.
>> > > > > > > >>
>> > > > > > > >> Thanks,
>> > > > > > > >>
>> > > > > > > >> Jun
>> > > > > > > >>
>> > > > > > > >> On Tue, Sep 11, 2018 at 3:46 PM, Lucas Wang <
>> > > > lucasatu...@gmail.com>
>> > > > > > > >> wrote:
>> > > > > > > >>
>> > > > > > > >> > @Jun Rao <j...@confluent.io>
>> > > > > > > >> >
>> > > > > > > >> > I made the recent config changes after thinking about the
>> > > > default
>> > > > > > > >> behavior
>> > > > > > > >> > for adopting this KIP.
>> > > > > > > >> > I think there are basically two options:
>> > > > > > > >> > 1. By default, the behavior proposed in this KIP is
>> turned
>> > > off,
>> > > > > and
>> > > > > > > >> > operators can turn it
>> > > > > > > >> > on by adding the "controller.listener.name" config and
>> > > entries
>> > > > in
>> > > > > > the
>> > > > > > > >> > "listeners" and "advertised.listeners" list.
>> > > > > > > >> > If no "controller.listener.name" is added, it'll be the
>> > *same
>> > > > as*
>> > > > > > > the "
>> > > > > > > >> > inter.broker.listener.name",
>> > > > > > > >> > and the proposed feature is effectively turned off.
>> > > > > > > >> > This has been the assumption in the KIP writeup before.
>> > > > > > > >> >
>> > > > > > > >> > 2. By default, the behavior proposed in this KIP is
>> turned
>> > on,
>> > > > and
>> > > > > > > >> > operators are forced to
>> > > > > > > >> > recognize the proposed change if their "listeners"
>> config is
>> > > set
>> > > > > > (this
>> > > > > > > >> is
>> > > > > > > >> > most likely in production environments),
>> > > > > > > >> > by allocating a new port for controller connections, and
>> > > adding
>> > > > a
>> > > > > > new
>> > > > > > > >> > endpoint to the "listeners" config.
>> > > > > > > >> > For cases where "listeners" is not set explicitly,
>> > > > > > > >> > there needs to be a default value for it that includes
>> the
>> > > > > > controller
>> > > > > > > >> > listener name,
>> > > > > > > >> > e.g. "PLAINTEXT://:9092,CONTROLLER://:9091"
>> > > > > > > >> >
>> > > > > > > >> > I chose to go with option 2 since as author of this KIP,
>> > > > > > > >> > I naturally think in the long run, it's worth the effort
>> to
>> > > > adopt
>> > > > > > this
>> > > > > > > >> > feature,
>> > > > > > > >> > in order to prevent issues under circumstances listed in
>> the
>> > > > > > > motivation
>> > > > > > > >> > section.
>> > > > > > > >> >
>> > > > > > > >> > 100, following the argument above, I want to enforce the
>> > > > > separation
>> > > > > > > >> > between controller
>> > > > > > > >> > and data plane requests. Hence the "
>> > controller.listener.name"
>> > > > > > should
>> > > > > > > >> > never be the same
>> > > > > > > >> > as the "inter.broker.listener.name", which is intended
>> for
>> > > data
>> > > > > > plane
>> > > > > > > >> > requests.
>> > > > > > > >> >
>> > > > > > > >> > 101, the default value for "listeners" will be
>> > > > > > > >> > "PLAINTEXT://:9092,CONTROLLER://:9091",
>> > > > > > > >> > making values of "host", and "port" not being used under
>> any
>> > > > > config
>> > > > > > > >> > settings.
>> > > > > > > >> > And the default value for "advertised.listeners" will be
>> > > derived
>> > > > > > from
>> > > > > > > >> > "listeners",
>> > > > > > > >> > making the values of "advertised.host", and
>> > "advertised.port"
>> > > > not
>> > > > > > > being
>> > > > > > > >> > used any more.
>> > > > > > > >> >
>> > > > > > > >> > 102, for upgrading, a single broker that has "listeners"
>> > > and/or
>> > > > > > > >> > "advertised.listeners" set,
>> > > > > > > >> > must add a new endpoint for the CONTROLLER listener
>> name, or
>> > > end
>> > > > > up
>> > > > > > > >> using
>> > > > > > > >> > the default listeners "PLAINTEXT://:9092,CONTROLLER:
>> > //:9091".
>> > > > > > > >> > During rolling upgrade, in cases of <old controller> +
>> <new
>> > > > > broker>
>> > > > > > or
>> > > > > > > >> > <new controller>  + <old broker>
>> > > > > > > >> > we still need to fall back to the current behavior.
>> However
>> > > > after
>> > > > > > the
>> > > > > > > >> > rolling upgrade is done,
>> > > > > > > >> > it is guaranteed that the controller plane and data plane
>> > are
>> > > > > > > separated,
>> > > > > > > >> > given
>> > > > > > > >> > the "controller.listener.name" must be different from "
>> > > > > > > >> > inter.broker.listener.name".
>> > > > > > > >> >
>> > > > > > > >> > @Ismael Juma <ism...@juma.me.uk>
>> > > > > > > >> > Thanks for pointing that out. I did not know that.
>> > > > > > > >> > However my question is if the argument above makes sense,
>> > and
>> > > my
>> > > > > > code
>> > > > > > > >> > change
>> > > > > > > >> > causes the configs "host", "port", "advertised.host",
>> > > > > > > "advertised.port"
>> > > > > > > >> to
>> > > > > > > >> > be not used under any circumstance,
>> > > > > > > >> > then it's no different from removing them.
>> > > > > > > >> > Anyway if there is still a concern about removing them,
>> is
>> > > > there a
>> > > > > > new
>> > > > > > > >> > major new version
>> > > > > > > >> > now or in the future where I can remove them?
>> > > > > > > >> >
>> > > > > > > >> > Thanks!
>> > > > > > > >> > Lucas
>> > > > > > > >> >
>> > > > > > > >> > On Mon, Sep 10, 2018 at 1:30 PM Ismael Juma <
>> > > ism...@juma.me.uk>
>> > > > > > > wrote:
>> > > > > > > >> >
>> > > > > > > >> >> To be clear, we can only remove configs in major new
>> > > versions.
>> > > > > > > >> Otherwise,
>> > > > > > > >> >> we can only deprecate them.
>> > > > > > > >> >>
>> > > > > > > >> >> Ismael
>> > > > > > > >> >>
>> > > > > > > >> >> On Mon, Sep 10, 2018 at 10:47 AM Jun Rao <
>> j...@confluent.io
>> > >
>> > > > > wrote:
>> > > > > > > >> >>
>> > > > > > > >> >> > Hi, Lucas,
>> > > > > > > >> >> >
>> > > > > > > >> >> > For the network idlePct, your understanding is
>> correct.
>> > > > > > Currently,
>> > > > > > > >> >> > networkIdlePct metric is calculated as the average of
>> (1
>> > -
>> > > > > > > io-ratio)
>> > > > > > > >> in
>> > > > > > > >> >> the
>> > > > > > > >> >> > selector of all network threads.
>> > > > > > > >> >> >
>> > > > > > > >> >> > The metrics part looks good to me in the updated KIP.
>> > > > > > > >> >> >
>> > > > > > > >> >> > I am not still not quite sure about the configs.
>> > > > > > > >> >> >
>> > > > > > > >> >> > 100. "Whenever the "controller.listener.name" is set,
>> > upon
>> > > > > > broker
>> > > > > > > >> >> startup,
>> > > > > > > >> >> > we will validate its value and make sure it's
>> different
>> > > from
>> > > > > the
>> > > > > > > >> >> > *inter-broker-listener-name *value." Does that mean
>> that
>> > > > > > > >> >> > controller.listener.name has to be different from
>> > > > > > > >> >> > inter.broker.listener.name?
>> > > > > > > >> >> > That seems limiting.
>> > > > > > > >> >> >
>> > > > > > > >> >> > 101. The KIP says that advertised.listeners and
>> listeners
>> > > > will
>> > > > > > now
>> > > > > > > >> have
>> > > > > > > >> >> a
>> > > > > > > >> >> > different default value including controller. Could
>> you
>> > > > > document
>> > > > > > > what
>> > > > > > > >> >> the
>> > > > > > > >> >> > default value looks like?
>> > > > > > > >> >> >
>> > > > > > > >> >> > 102. About removing the the following configs. How
>> does
>> > > that
>> > > > > > affect
>> > > > > > > >> the
>> > > > > > > >> >> > upgrade path? Do we now expect a user to add a new
>> config
>> > > > when
>> > > > > > > >> upgrading
>> > > > > > > >> >> > from an old version to a new one?
>> > > > > > > >> >> > host
>> > > > > > > >> >> > port
>> > > > > > > >> >> > advertised.host
>> > > > > > > >> >> > advertised.port
>> > > > > > > >> >> >
>> > > > > > > >> >> > Thanks,
>> > > > > > > >> >> >
>> > > > > > > >> >> > Jun
>> > > > > > > >> >> >
>> > > > > > > >> >> >
>> > > > > > > >> >> > On Thu, Sep 6, 2018 at 5:14 PM, Lucas Wang <
>> > > > > > lucasatu...@gmail.com>
>> > > > > > > >> >> wrote:
>> > > > > > > >> >> >
>> > > > > > > >> >> > > @Jun Rao <j...@confluent.io>
>> > > > > > > >> >> > >
>> > > > > > > >> >> > > One clarification, currently on the selector level,
>> we
>> > > have
>> > > > > the
>> > > > > > > >> >> > > io-wait-ratio metric.
>> > > > > > > >> >> > > For the new controller *network* thread, we can use
>> it
>> > > > > directly
>> > > > > > > for
>> > > > > > > >> >> > > IdlePct, instead of using 1- io-ratio,
>> > > > > > > >> >> > > so that the logic is similar to the current average
>> > > IdlePct
>> > > > > for
>> > > > > > > >> >> network
>> > > > > > > >> >> > > threads. Is that correct?
>> > > > > > > >> >> > >
>> > > > > > > >> >> > > I've revised the KIP by adding two new metrics for
>> > > > measuring
>> > > > > > the
>> > > > > > > >> >> IdlePct
>> > > > > > > >> >> > > for the two additional threads.
>> > > > > > > >> >> > > Please take a look again. Thanks!
>> > > > > > > >> >> > >
>> > > > > > > >> >> > > Lucas
>> > > > > > > >> >> > >
>> > > > > > > >> >> > >
>> > > > > > > >> >> > >
>> > > > > > > >> >> > >
>> > > > > > > >> >> > >
>> > > > > > > >> >> > > On Wed, Sep 5, 2018 at 5:01 PM Jun Rao <
>> > j...@confluent.io
>> > > >
>> > > > > > wrote:
>> > > > > > > >> >> > >
>> > > > > > > >> >> > > > Hi, Lucas,
>> > > > > > > >> >> > > >
>> > > > > > > >> >> > > > Thanks for the updated KIP.
>> > > > > > > >> >> > > >
>> > > > > > > >> >> > > > For monitoring the network thread utilization for
>> the
>> > > > > control
>> > > > > > > >> >> plane, we
>> > > > > > > >> >> > > > already have the metric io-ratio at the selector
>> > level
>> > > > > > (idlePct
>> > > > > > > >> is
>> > > > > > > >> >> 1 -
>> > > > > > > >> >> > > > io-ratio). So, we just need to give that selector
>> a
>> > > > > > meaningful
>> > > > > > > >> name.
>> > > > > > > >> >> > > >
>> > > > > > > >> >> > > > For monitoring the io thread utilization for the
>> > > control
>> > > > > > plane,
>> > > > > > > >> it's
>> > > > > > > >> >> > > > probably useful to have a separate metric for
>> that.
>> > The
>> > > > > > > >> controller
>> > > > > > > >> >> > > request
>> > > > > > > >> >> > > > queue size may not reflect the history in a
>> window.
>> > > > > > > >> >> > > >
>> > > > > > > >> >> > > > Jun
>> > > > > > > >> >> > > >
>> > > > > > > >> >> > > > On Wed, Sep 5, 2018 at 3:38 PM, Lucas Wang <
>> > > > > > > >> lucasatu...@gmail.com>
>> > > > > > > >> >> > > wrote:
>> > > > > > > >> >> > > >
>> > > > > > > >> >> > > > > Thanks Jun for your quick response. It looks
>> like I
>> > > > > forgot
>> > > > > > to
>> > > > > > > >> >> click
>> > > > > > > >> >> > the
>> > > > > > > >> >> > > > > "Update" button, :)
>> > > > > > > >> >> > > > > It's updated now.
>> > > > > > > >> >> > > > >
>> > > > > > > >> >> > > > > Regarding the idle ratio metrics for the
>> additional
>> > > > > > threads,
>> > > > > > > I
>> > > > > > > >> >> > > discussed
>> > > > > > > >> >> > > > > with Joel,
>> > > > > > > >> >> > > > > and think they are not as useful, and I added
>> our
>> > > > > reasoning
>> > > > > > > in
>> > > > > > > >> the
>> > > > > > > >> >> > last
>> > > > > > > >> >> > > > > paragraph of the
>> > > > > > > >> >> > > > > "How are controller requests handled over the
>> > > dedicated
>> > > > > > > >> >> connections?"
>> > > > > > > >> >> > > > > section.
>> > > > > > > >> >> > > > > On the other hand, we don't strongly oppose
>> adding
>> > > them
>> > > > > if
>> > > > > > > you
>> > > > > > > >> >> think
>> > > > > > > >> >> > > they
>> > > > > > > >> >> > > > > are necessary.
>> > > > > > > >> >> > > > >
>> > > > > > > >> >> > > > > Thanks,
>> > > > > > > >> >> > > > > Lucas
>> > > > > > > >> >> > > > >
>> > > > > > > >> >> > > > >
>> > > > > > > >> >> > > > > On Wed, Sep 5, 2018 at 3:12 PM Jun Rao <
>> > > > j...@confluent.io
>> > > > > >
>> > > > > > > >> wrote:
>> > > > > > > >> >> > > > >
>> > > > > > > >> >> > > > > > Hi, Lucas,
>> > > > > > > >> >> > > > > >
>> > > > > > > >> >> > > > > > Thanks for the reply. Have you actually
>> updated
>> > the
>> > > > > KIP?
>> > > > > > > The
>> > > > > > > >> >> wiki
>> > > > > > > >> >> > > says
>> > > > > > > >> >> > > > > that
>> > > > > > > >> >> > > > > > it's last updated on Aug. 22. and some of the
>> > > changes
>> > > > > > that
>> > > > > > > >> you
>> > > > > > > >> >> > > > mentioned
>> > > > > > > >> >> > > > > > (#1 and #3) are not there.
>> > > > > > > >> >> > > > > >
>> > > > > > > >> >> > > > > > Also, regarding Joel's comment on
>> network/request
>> > > > idle
>> > > > > > > ratio
>> > > > > > > >> >> > metrics,
>> > > > > > > >> >> > > > > could
>> > > > > > > >> >> > > > > > you comment on whether they include the new
>> > > > controller
>> > > > > > > >> >> listener? If
>> > > > > > > >> >> > > > not,
>> > > > > > > >> >> > > > > do
>> > > > > > > >> >> > > > > > we need additional metrics to measure the
>> > > utilization
>> > > > > of
>> > > > > > > the
>> > > > > > > >> io
>> > > > > > > >> >> > > thread
>> > > > > > > >> >> > > > > for
>> > > > > > > >> >> > > > > > the control plane?
>> > > > > > > >> >> > > > > >
>> > > > > > > >> >> > > > > > Jun
>> > > > > > > >> >> > > > > >
>> > > > > > > >> >> > > > > > On Mon, Aug 27, 2018 at 6:26 PM, Lucas Wang <
>> > > > > > > >> >> lucasatu...@gmail.com
>> > > > > > > >> >> > >
>> > > > > > > >> >> > > > > wrote:
>> > > > > > > >> >> > > > > >
>> > > > > > > >> >> > > > > > > Thanks for the comments, Jun.
>> > > > > > > >> >> > > > > > >
>> > > > > > > >> >> > > > > > > 1. I think the answer should be no, since
>> the "
>> > > > > > > >> >> > > > > > inter.broker.listener.name"
>> > > > > > > >> >> > > > > > > are also used
>> > > > > > > >> >> > > > > > > for replication traffic, and merging these
>> two
>> > > > types
>> > > > > of
>> > > > > > > >> >> request
>> > > > > > > >> >> > to
>> > > > > > > >> >> > > > the
>> > > > > > > >> >> > > > > > > single threaded tunnel
>> > > > > > > >> >> > > > > > > would defeat the purpose of this KIP and
>> also
>> > > hurt
>> > > > > > > >> replication
>> > > > > > > >> >> > > > > > throughput.
>> > > > > > > >> >> > > > > > > So I think that means
>> > > > > > > >> >> > > > > > > we should validate to make sure when the new
>> > > config
>> > > > > is
>> > > > > > > set,
>> > > > > > > >> >> it's
>> > > > > > > >> >> > > > > > different
>> > > > > > > >> >> > > > > > > from "inter.broker.listener.name"
>> > > > > > > >> >> > > > > > > or "security.inter.broker.protocol",
>> > whichever is
>> > > > > set.
>> > > > > > > >> >> > > > > > >
>> > > > > > > >> >> > > > > > > 2. Normally all broker configs in a given
>> > cluster
>> > > > are
>> > > > > > > >> changed
>> > > > > > > >> >> at
>> > > > > > > >> >> > > the
>> > > > > > > >> >> > > > > same
>> > > > > > > >> >> > > > > > > time. If there is a typo in the
>> > > > > > > >> >> > > > > > > controller.listener.name and it's not
>> > available
>> > > in
>> > > > > the
>> > > > > > > >> >> endpoints
>> > > > > > > >> >> > > > list,
>> > > > > > > >> >> > > > > > we
>> > > > > > > >> >> > > > > > > could catch it, give an error
>> > > > > > > >> >> > > > > > > and block restart of the first broker in the
>> > > > cluster.
>> > > > > > > With
>> > > > > > > >> >> that,
>> > > > > > > >> >> > we
>> > > > > > > >> >> > > > > could
>> > > > > > > >> >> > > > > > > keep the current behavior
>> > > > > > > >> >> > > > > > > in the KIP write up that falls back to
>> > > > > > > >> >> > "inter.broker.listener.nam"
>> > > > > > > >> >> > > > when
>> > > > > > > >> >> > > > > > the
>> > > > > > > >> >> > > > > > > "controller.listener.name"
>> > > > > > > >> >> > > > > > > is not found during the migration phase of
>> this
>> > > > KIP.
>> > > > > > > >> Thoughts?
>> > > > > > > >> >> > > > > > >
>> > > > > > > >> >> > > > > > > 3. That makes sense, and I've changed it.
>> > > > > > > >> >> > > > > > >
>> > > > > > > >> >> > > > > > > Thanks,
>> > > > > > > >> >> > > > > > > Lucas
>> > > > > > > >> >> > > > > > >
>> > > > > > > >> >> > > > > > > On Thu, Aug 23, 2018 at 3:46 PM Jun Rao <
>> > > > > > > j...@confluent.io>
>> > > > > > > >> >> > wrote:
>> > > > > > > >> >> > > > > > >
>> > > > > > > >> >> > > > > > > > Hi, Lucas,
>> > > > > > > >> >> > > > > > > >
>> > > > > > > >> >> > > > > > > > Sorry for the delay. The new proposal
>> looks
>> > > good
>> > > > to
>> > > > > > me
>> > > > > > > >> >> > overall. A
>> > > > > > > >> >> > > > few
>> > > > > > > >> >> > > > > > > minor
>> > > > > > > >> >> > > > > > > > comments below.
>> > > > > > > >> >> > > > > > > >
>> > > > > > > >> >> > > > > > > > 1. It's possible that
>> > > > listener.name.for.controller
>> > > > > is
>> > > > > > > >> set,
>> > > > > > > >> >> but
>> > > > > > > >> >> > > set
>> > > > > > > >> >> > > > to
>> > > > > > > >> >> > > > > > the
>> > > > > > > >> >> > > > > > > > same value as inter.broker.listener.name.
>> In
>> > > > that
>> > > > > > > case,
>> > > > > > > >> >> should
>> > > > > > > >> >> > > we
>> > > > > > > >> >> > > > > > have a
>> > > > > > > >> >> > > > > > > > single network thread and the request
>> > handling
>> > > > > thread
>> > > > > > > for
>> > > > > > > >> >> that
>> > > > > > > >> >> > > > > > listener?
>> > > > > > > >> >> > > > > > > >
>> > > > > > > >> >> > > > > > > > 2. Currently, the controller always picks
>> the
>> > > > > > listener
>> > > > > > > >> >> > specified
>> > > > > > > >> >> > > by
>> > > > > > > >> >> > > > > > > > inter.broker.listener.name even if the
>> > > listener
>> > > > > name
>> > > > > > > is
>> > > > > > > >> not
>> > > > > > > >> >> > > > present
>> > > > > > > >> >> > > > > in
>> > > > > > > >> >> > > > > > > the
>> > > > > > > >> >> > > > > > > > receiving broker. This KIP proposes a
>> > slightly
>> > > > > > > different
>> > > > > > > >> >> > approach
>> > > > > > > >> >> > > > for
>> > > > > > > >> >> > > > > > > > picking listener.name.for.controller only
>> > when
>> > > > the
>> > > > > > > >> receiving
>> > > > > > > >> >> > end
>> > > > > > > >> >> > > > has
>> > > > > > > >> >> > > > > > the
>> > > > > > > >> >> > > > > > > > listener and switches
>> > > > listener.name.for.controller
>> > > > > > > >> >> otherwise.
>> > > > > > > >> >> > > There
>> > > > > > > >> >> > > > > are
>> > > > > > > >> >> > > > > > > > some tradeoffs between the two
>> approaches. To
>> > > > > change
>> > > > > > > the
>> > > > > > > >> >> inter
>> > > > > > > >> >> > > > broker
>> > > > > > > >> >> > > > > > > > listener, the former requires 2 steps: (1)
>> > > adding
>> > > > > the
>> > > > > > > new
>> > > > > > > >> >> > > listener
>> > > > > > > >> >> > > > to
>> > > > > > > >> >> > > > > > > > listener list in every broker and (2)
>> > changing
>> > > > > > > >> >> > > > > > > > listener.name.for.controller.
>> > > > > > > >> >> > > > > > > > The latter can do both changes in 1 step.
>> On
>> > > the
>> > > > > > hand,
>> > > > > > > if
>> > > > > > > >> >> > > > > > > > listener.name.for.controller
>> > > > > > > >> >> > > > > > > > is mis-configured, the former will report
>> an
>> > > > error
>> > > > > > and
>> > > > > > > >> the
>> > > > > > > >> >> > latter
>> > > > > > > >> >> > > > > will
>> > > > > > > >> >> > > > > > > hide
>> > > > > > > >> >> > > > > > > > it (so the user may not know the
>> > > > misconfiguration).
>> > > > > > It
>> > > > > > > >> seems
>> > > > > > > >> >> > that
>> > > > > > > >> >> > > > we
>> > > > > > > >> >> > > > > > > should
>> > > > > > > >> >> > > > > > > > pick one approach to handle both
>> > > > > > > >> >> listener.name.for.controller
>> > > > > > > >> >> > and
>> > > > > > > >> >> > > > > > > > inter.broker.listener.name consistently.
>> To
>> > > me,
>> > > > > the
>> > > > > > > >> former
>> > > > > > > >> >> > seems
>> > > > > > > >> >> > > > > > > slightly
>> > > > > > > >> >> > > > > > > > better.
>> > > > > > > >> >> > > > > > > >
>> > > > > > > >> >> > > > > > > > 3. To be consistent with the existing
>> naming,
>> > > > > should
>> > > > > > > >> >> > > > > > > > listener.name.for.controller
>> > > > > > > >> >> > > > > > > > be controller.listener.name?
>> > > > > > > >> >> > > > > > > >
>> > > > > > > >> >> > > > > > > > Thanks,
>> > > > > > > >> >> > > > > > > >
>> > > > > > > >> >> > > > > > > > Jun
>> > > > > > > >> >> > > > > > > >
>> > > > > > > >> >> > > > > > > >
>> > > > > > > >> >> > > > > > > > On Thu, Aug 9, 2018 at 3:21 PM, Lucas
>> Wang <
>> > > > > > > >> >> > > lucasatu...@gmail.com>
>> > > > > > > >> >> > > > > > > wrote:
>> > > > > > > >> >> > > > > > > >
>> > > > > > > >> >> > > > > > > > > Hi Jun and Joel,
>> > > > > > > >> >> > > > > > > > >
>> > > > > > > >> >> > > > > > > > > The KIP writeup has changed by quite a
>> bit
>> > > > since
>> > > > > > your
>> > > > > > > >> +1.
>> > > > > > > >> >> > > > > > > > > Can you please take another review?
>> Thanks
>> > a
>> > > > lot
>> > > > > > for
>> > > > > > > >> your
>> > > > > > > >> >> > time!
>> > > > > > > >> >> > > > > > > > >
>> > > > > > > >> >> > > > > > > > > Lucas
>> > > > > > > >> >> > > > > > > > >
>> > > > > > > >> >> > > > > > > > > On Tue, Jul 17, 2018 at 10:33 AM, Joel
>> > Koshy
>> > > <
>> > > > > > > >> >> > > > jjkosh...@gmail.com>
>> > > > > > > >> >> > > > > > > > wrote:
>> > > > > > > >> >> > > > > > > > >
>> > > > > > > >> >> > > > > > > > > > +1 on the KIP.
>> > > > > > > >> >> > > > > > > > > >
>> > > > > > > >> >> > > > > > > > > > (I'm not sure we actually necessary to
>> > > > > introduce
>> > > > > > > the
>> > > > > > > >> >> > > condition
>> > > > > > > >> >> > > > > > > > variables
>> > > > > > > >> >> > > > > > > > > > for the concern that Jun raised, but
>> it's
>> > > an
>> > > > > > > >> >> implementation
>> > > > > > > >> >> > > > > detail
>> > > > > > > >> >> > > > > > > that
>> > > > > > > >> >> > > > > > > > > we
>> > > > > > > >> >> > > > > > > > > > can defer to a discussion in the PR.)
>> > > > > > > >> >> > > > > > > > > >
>> > > > > > > >> >> > > > > > > > > > On Sat, Jul 14, 2018 at 10:45 PM,
>> Lucas
>> > > Wang
>> > > > <
>> > > > > > > >> >> > > > > > lucasatu...@gmail.com>
>> > > > > > > >> >> > > > > > > > > > wrote:
>> > > > > > > >> >> > > > > > > > > >
>> > > > > > > >> >> > > > > > > > > > > Hi Jun,
>> > > > > > > >> >> > > > > > > > > > >
>> > > > > > > >> >> > > > > > > > > > > I agree by using the conditional
>> > > variables,
>> > > > > > there
>> > > > > > > >> is
>> > > > > > > >> >> no
>> > > > > > > >> >> > > need
>> > > > > > > >> >> > > > to
>> > > > > > > >> >> > > > > > add
>> > > > > > > >> >> > > > > > > > > such
>> > > > > > > >> >> > > > > > > > > > a
>> > > > > > > >> >> > > > > > > > > > > new config.
>> > > > > > > >> >> > > > > > > > > > > Also thanks for approving this KIP.
>> > > > > > > >> >> > > > > > > > > > >
>> > > > > > > >> >> > > > > > > > > > > Lucas
>> > > > > > > >> >> > > > > > > > > > >
>> > > > > > > >> >> > > > > > > > > >
>> > > > > > > >> >> > > > > > > > >
>> > > > > > > >> >> > > > > > > >
>> > > > > > > >> >> > > > > > >
>> > > > > > > >> >> > > > > >
>> > > > > > > >> >> > > > >
>> > > > > > > >> >> > > >
>> > > > > > > >> >> > >
>> > > > > > > >> >> >
>> > > > > > > >> >>
>> > > > > > > >> >
>> > > > > > > >>
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>>
>

Reply via email to