Allen,

It's not ideal to add a new field in json without increasing the version.
Also, if we don't fix this issue in 0.9.0, if we ever change the version of
json in the future, the consumer in 0.9.0 will break after the broker is
upgraded to the new release. So, I suggest that we fix the behavior in
ZkUtils.getBrokerInfo()
in both trunk and 0.9.0 branch. After we release 0.9.0.1, the upgrade path
is for the old consumer to be upgraded to 0.9.0.1 before upgrading the
broker to 0.9.1 and beyond. This fix can be done in a separate jira.

Thanks,

Jun

On Tue, Jan 12, 2016 at 5:35 PM, Allen Wang <allenxw...@gmail.com> wrote:

> Agreed. So it seems that for 0.9.1, the only option is to keep the JSON
> version unchanged. But as part of the PR, I can change the behavior of
> ZkUtils.getBrokerInfo()
> to make it compatible with future JSON versions.
>
> Thanks,
> Allen
>
>
> On Tue, Jan 12, 2016 at 2:57 PM, Jun Rao <j...@confluent.io> wrote:
>
> > Hi, Allen,
> >
> > That's a good point. In 0.9.0.0, the old consumer reads broker info
> > directly from ZK and the code throws an exception if the version in json
> is
> > not 1 or 2. This old consumer will break when we upgrade the broker json
> to
> > version 3 in ZK in 0.9.1, which will be an issue. We overlooked this
> issue
> > in 0.9.0.0. The easiest fix is probably not to check the version in
> > ZkUtils.getBrokerInfo().
> > This way, as long as we are only adding new fields in broker json, we can
> > preserve the compatibility.
> >
> > Thanks,
> >
> > Jun
> >
> > On Tue, Jan 12, 2016 at 1:52 PM, Allen Wang <allenxw...@gmail.com>
> wrote:
> >
> > > Hi Jun,
> > >
> > > That's a good suggestion. However, it does not solve the problem for
> the
> > > clients or thirty party tools that get broker information directly from
> > > ZooKeeper.
> > >
> > > Thanks,
> > > Allen
> > >
> > >
> > > On Tue, Jan 12, 2016 at 1:29 PM, Jun Rao <j...@confluent.io> wrote:
> > >
> > > > Allen,
> > > >
> > > > Another way to do this is the following.
> > > >
> > > > When inter.broker.protocol.version is set to 0.9.0, the broker will
> > write
> > > > the broker info in ZK using version 2, ignoring the rack info.
> > > >
> > > > When inter.broker.protocol.version is set to 0.9.1, the broker will
> > write
> > > > the broker info in ZK using version 3, including the rack info.
> > > >
> > > > If one follows the upgrade process, after the 2nd round of rolling
> > > bounces,
> > > > every broker is capable of parsing version 3 of broker info in ZK.
> This
> > > is
> > > > when the rack-aware feature will be used.
> > > >
> > > >
> > > > Thanks,
> > > >
> > > > Jun
> > > >
> > > > On Tue, Jan 12, 2016 at 12:19 PM, Allen Wang <allenxw...@gmail.com>
> > > wrote:
> > > >
> > > > > Regarding the JSON version of Broker:
> > > > >
> > > > > I don't why the ZkUtils.getBrokerInfo() restricts the JSON versions
> > it
> > > > can
> > > > > read. It will throw exception if version is not 1 or 2. Seems to me
> > > that
> > > > it
> > > > > will cause compatibility problem whenever the version needs to be
> > > changed
> > > > > and make the upgrade path difficult.
> > > > >
> > > > > One option we have is to make rack also part of version 2 and keep
> > the
> > > > > version 2 unchanged for this update. This will make the old clients
> > > > > compatible. During rolling upgrade, it will also avoid problems if
> > the
> > > > > controller/broker is still the old version.
> > > > >
> > > > > However, ZkUtils.getBrokerInfo() will be updated to return the
> Broker
> > > > with
> > > > > rack so the rack information will be available once the
> server/client
> > > is
> > > > > upgraded to the latest version.
> > > > >
> > > > >
> > > > >
> > > > > On Wed, Jan 6, 2016 at 6:28 PM, Allen Wang <allenxw...@gmail.com>
> > > wrote:
> > > > >
> > > > > > Updated KIP according to Jun's comment and included changes to
> TMR.
> > > > > >
> > > > > > On Tue, Jan 5, 2016 at 5:59 PM, Jun Rao <j...@confluent.io>
> wrote:
> > > > > >
> > > > > >> Hi, Allen,
> > > > > >>
> > > > > >> A couple of minor comments on the KIP.
> > > > > >>
> > > > > >> 1. The version of the broker JSON string says 2. It should be 3.
> > > > > >>
> > > > > >> 2. The new version of UpdateMetadataRequest should be 2, instead
> > of
> > > 1.
> > > > > >> Could you include the full wire protocol of version 2 of
> > > > > >> UpdateMetadataRequest and highlight the changed part?
> > > > > >>
> > > > > >> Thanks,
> > > > > >>
> > > > > >> Jun
> > > > > >>
> > > > > >> On Tue, Jan 5, 2016 at 3:11 PM, Allen Wang <
> allenxw...@gmail.com>
> > > > > wrote:
> > > > > >>
> > > > > >> > Jun and I had a chance to discuss it in a meeting and it is
> > agreed
> > > > to
> > > > > >> > change the TMR in a different patch.
> > > > > >> >
> > > > > >> > I can change the KIP to include rack in TMR. The essential
> > change
> > > is
> > > > > to
> > > > > >> add
> > > > > >> > rack into class BrokerEndPoint and make TMR version aware.
> > > > > >> >
> > > > > >> >
> > > > > >> >
> > > > > >> > On Tue, Jan 5, 2016 at 10:21 AM, Aditya Auradkar <
> > > > > >> > aaurad...@linkedin.com.invalid> wrote:
> > > > > >> >
> > > > > >> > > Jun/Allen -
> > > > > >> > >
> > > > > >> > > Did we ever actually agree on whether we should evolve the
> TMR
> > > to
> > > > > >> include
> > > > > >> > > rack info or not?
> > > > > >> > > I don't feel strongly about it but I if it's the right thing
> > to
> > > do
> > > > > we
> > > > > >> > > should probably do it in this KIP (can be a separate
> patch)..
> > it
> > > > > >> isn't a
> > > > > >> > > large change.
> > > > > >> > >
> > > > > >> > > Aditya
> > > > > >> > >
> > > > > >> > > On Sat, Dec 26, 2015 at 3:01 PM, Allen Wang <
> > > allenxw...@gmail.com
> > > > >
> > > > > >> > wrote:
> > > > > >> > >
> > > > > >> > > > Added the rolling upgrade instruction in the KIP, similar
> to
> > > > those
> > > > > >> in
> > > > > >> > > 0.9.0
> > > > > >> > > > release notes.
> > > > > >> > > >
> > > > > >> > > > On Wed, Dec 16, 2015 at 11:32 AM, Allen Wang <
> > > > > allenxw...@gmail.com>
> > > > > >> > > wrote:
> > > > > >> > > >
> > > > > >> > > > > Hi Jun,
> > > > > >> > > > >
> > > > > >> > > > > The reason that TopicMetadataResponse is not included in
> > the
> > > > KIP
> > > > > >> is
> > > > > >> > > that
> > > > > >> > > > > it currently is not version aware . So we need to
> > introduce
> > > > > >> version
> > > > > >> > to
> > > > > >> > > it
> > > > > >> > > > > in order to make sure backward compatibility. It seems
> to
> > > me a
> > > > > big
> > > > > >> > > > change.
> > > > > >> > > > > Do we want to couple it with this KIP? Do we need to
> > further
> > > > > >> discuss
> > > > > >> > > what
> > > > > >> > > > > information to include in the new version besides rack?
> > For
> > > > > >> example,
> > > > > >> > > > should
> > > > > >> > > > > we include broker security protocol in
> > > TopicMetadataResponse?
> > > > > >> > > > >
> > > > > >> > > > > The other option is to make it a separate KIP to make
> > > > > >> > > > > TopicMetadataResponse version aware and decide what to
> > > > include,
> > > > > >> and
> > > > > >> > > make
> > > > > >> > > > > this KIP focus on the rack aware algorithm, admin tools
> > and
> > > > > >> related
> > > > > >> > > > > changes to inter-broker protocol .
> > > > > >> > > > >
> > > > > >> > > > > Thanks,
> > > > > >> > > > > Allen
> > > > > >> > > > >
> > > > > >> > > > >
> > > > > >> > > > >
> > > > > >> > > > >
> > > > > >> > > > > On Mon, Dec 14, 2015 at 8:30 AM, Jun Rao <
> > j...@confluent.io>
> > > > > >> wrote:
> > > > > >> > > > >
> > > > > >> > > > >> Allen,
> > > > > >> > > > >>
> > > > > >> > > > >> Thanks for the proposal. A few comments.
> > > > > >> > > > >>
> > > > > >> > > > >> 1. Since this KIP changes the inter broker
> communication
> > > > > protocol
> > > > > >> > > > >> (UpdateMetadataRequest), we will need to document the
> > > upgrade
> > > > > >> path
> > > > > >> > > > >> (similar
> > > > > >> > > > >> to what's described in
> > > > > >> > > > >> http://kafka.apache.org/090/documentation.html#upgrade
> ).
> > > > > >> > > > >>
> > > > > >> > > > >> 2. It might be useful to include the rack info of the
> > > broker
> > > > in
> > > > > >> > > > >> TopicMetadataResponse. This can be useful for
> > > administrative
> > > > > >> tasks,
> > > > > >> > as
> > > > > >> > > > >> well
> > > > > >> > > > >> as read affinity in the future.
> > > > > >> > > > >>
> > > > > >> > > > >> Jun
> > > > > >> > > > >>
> > > > > >> > > > >>
> > > > > >> > > > >>
> > > > > >> > > > >> On Thu, Dec 10, 2015 at 9:38 AM, Allen Wang <
> > > > > >> allenxw...@gmail.com>
> > > > > >> > > > wrote:
> > > > > >> > > > >>
> > > > > >> > > > >> > If there are no more comments I would like to call
> for
> > a
> > > > > vote.
> > > > > >> > > > >> >
> > > > > >> > > > >> >
> > > > > >> > > > >> > On Sun, Nov 15, 2015 at 10:08 PM, Allen Wang <
> > > > > >> > allenxw...@gmail.com>
> > > > > >> > > > >> wrote:
> > > > > >> > > > >> >
> > > > > >> > > > >> > > KIP is updated with more details and how to handle
> > the
> > > > > >> situation
> > > > > >> > > > where
> > > > > >> > > > >> > > rack information is incomplete.
> > > > > >> > > > >> > >
> > > > > >> > > > >> > > In the situation where rack information is
> > incomplete,
> > > > but
> > > > > we
> > > > > >> > want
> > > > > >> > > > to
> > > > > >> > > > >> > > continue with the assignment, I have suggested to
> > > ignore
> > > > > all
> > > > > >> > rack
> > > > > >> > > > >> > > information and fallback to original algorithm. The
> > > > reason
> > > > > is
> > > > > >> > > > >> explained
> > > > > >> > > > >> > > below:
> > > > > >> > > > >> > >
> > > > > >> > > > >> > > The other options are to assume that the broker
> > without
> > > > the
> > > > > >> rack
> > > > > >> > > > >> belong
> > > > > >> > > > >> > to
> > > > > >> > > > >> > > its own unique rack, or they belong to one
> "default"
> > > > rack.
> > > > > >> > Either
> > > > > >> > > > way
> > > > > >> > > > >> we
> > > > > >> > > > >> > > choose, it is highly likely to result in uneven
> > number
> > > of
> > > > > >> > brokers
> > > > > >> > > in
> > > > > >> > > > >> > racks,
> > > > > >> > > > >> > > and it is quite possible that the "made up" racks
> > will
> > > > have
> > > > > >> much
> > > > > >> > > > fewer
> > > > > >> > > > >> > > number of brokers. As I explained in the KIP,
> uneven
> > > > number
> > > > > >> of
> > > > > >> > > > >> brokers in
> > > > > >> > > > >> > > racks will lead to uneven distribution of replicas
> > > among
> > > > > >> brokers
> > > > > >> > > > (even
> > > > > >> > > > >> > > though the leader distribution is still even). The
> > > > brokers
> > > > > in
> > > > > >> > the
> > > > > >> > > > rack
> > > > > >> > > > >> > that
> > > > > >> > > > >> > > has fewer number of brokers will get more replicas
> > per
> > > > > broker
> > > > > >> > than
> > > > > >> > > > >> > brokers
> > > > > >> > > > >> > > in other racks.
> > > > > >> > > > >> > >
> > > > > >> > > > >> > > Given this fact and the replica assignment produced
> > > will
> > > > be
> > > > > >> > > > incorrect
> > > > > >> > > > >> > > anyway from rack aware point of view, ignoring all
> > rack
> > > > > >> > > information
> > > > > >> > > > >> and
> > > > > >> > > > >> > > fallback to the original algorithm is not a bad
> > choice
> > > > > since
> > > > > >> it
> > > > > >> > > will
> > > > > >> > > > >> at
> > > > > >> > > > >> > > least have a better guarantee of replica
> > distribution.
> > > > > >> > > > >> > >
> > > > > >> > > > >> > > Also for command line tools it gives user a choice
> if
> > > for
> > > > > any
> > > > > >> > > reason
> > > > > >> > > > >> they
> > > > > >> > > > >> > > want to ignore rack information and fallback to the
> > > > > original
> > > > > >> > > > >> algorithm.
> > > > > >> > > > >> > >
> > > > > >> > > > >> > >
> > > > > >> > > > >> > > On Tue, Nov 10, 2015 at 9:04 AM, Allen Wang <
> > > > > >> > allenxw...@gmail.com
> > > > > >> > > >
> > > > > >> > > > >> > wrote:
> > > > > >> > > > >> > >
> > > > > >> > > > >> > >> I am busy with some time pressing issues for the
> > last
> > > > few
> > > > > >> > days. I
> > > > > >> > > > >> will
> > > > > >> > > > >> > >> think about how the incomplete rack information
> will
> > > > > affect
> > > > > >> the
> > > > > >> > > > >> balance
> > > > > >> > > > >> > and
> > > > > >> > > > >> > >> update the KIP by early next week.
> > > > > >> > > > >> > >>
> > > > > >> > > > >> > >> Thanks,
> > > > > >> > > > >> > >> Allen
> > > > > >> > > > >> > >>
> > > > > >> > > > >> > >>
> > > > > >> > > > >> > >> On Tue, Nov 3, 2015 at 9:03 AM, Neha Narkhede <
> > > > > >> > n...@confluent.io
> > > > > >> > > >
> > > > > >> > > > >> > wrote:
> > > > > >> > > > >> > >>
> > > > > >> > > > >> > >>> Few suggestions on improving the KIP
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> > >>> *If some brokers have rack, and some do not, the
> > > > > algorithm
> > > > > >> > will
> > > > > >> > > > >> thrown
> > > > > >> > > > >> > an
> > > > > >> > > > >> > >>> > exception. This is to prevent incorrect
> > assignment
> > > > > >> caused by
> > > > > >> > > > user
> > > > > >> > > > >> > >>> error.*
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> > >>> In the KIP, can you clearly state the user-facing
> > > > > behavior
> > > > > >> > when
> > > > > >> > > > some
> > > > > >> > > > >> > >>> brokers have rack information and some don't.
> Which
> > > > > actions
> > > > > >> > and
> > > > > >> > > > >> > requests
> > > > > >> > > > >> > >>> will error out and how?
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> > >>> *Even distribution of partition leadership among
> > > > brokers*
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> > >>> There is some information about arranging the
> > sorted
> > > > > broker
> > > > > >> > list
> > > > > >> > > > >> > >>> interlaced
> > > > > >> > > > >> > >>> with rack ids. Can you describe the changes to
> the
> > > > > current
> > > > > >> > > > algorithm
> > > > > >> > > > >> > in a
> > > > > >> > > > >> > >>> little more detail? How does this interlacing
> work
> > if
> > > > > only
> > > > > >> a
> > > > > >> > > > subset
> > > > > >> > > > >> of
> > > > > >> > > > >> > >>> brokers have the rack id configured? Does this
> > still
> > > > work
> > > > > >> if
> > > > > >> > > > uneven
> > > > > >> > > > >> #
> > > > > >> > > > >> > of
> > > > > >> > > > >> > >>> brokers are assigned to each rack? It might work,
> > I'm
> > > > > >> looking
> > > > > >> > > for
> > > > > >> > > > >> more
> > > > > >> > > > >> > >>> details on the changes, since it will affect the
> > > > behavior
> > > > > >> seen
> > > > > >> > > by
> > > > > >> > > > >> the
> > > > > >> > > > >> > >>> user
> > > > > >> > > > >> > >>> - imbalance on either the leaders or data or
> both.
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> > >>> On Mon, Nov 2, 2015 at 6:39 PM, Aditya Auradkar <
> > > > > >> > > > >> > aaurad...@linkedin.com>
> > > > > >> > > > >> > >>> wrote:
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> > >>> > I think this sounds reasonable. Anyone else
> have
> > > > > >> comments?
> > > > > >> > > > >> > >>> >
> > > > > >> > > > >> > >>> > Aditya
> > > > > >> > > > >> > >>> >
> > > > > >> > > > >> > >>> > On Tue, Oct 27, 2015 at 5:23 PM, Allen Wang <
> > > > > >> > > > allenxw...@gmail.com
> > > > > >> > > > >> >
> > > > > >> > > > >> > >>> wrote:
> > > > > >> > > > >> > >>> >
> > > > > >> > > > >> > >>> > > During the discussion in the hangout, it was
> > > > > mentioned
> > > > > >> > that
> > > > > >> > > it
> > > > > >> > > > >> > would
> > > > > >> > > > >> > >>> be
> > > > > >> > > > >> > >>> > > desirable that consumers know the rack
> > > information
> > > > of
> > > > > >> the
> > > > > >> > > > >> brokers
> > > > > >> > > > >> > so
> > > > > >> > > > >> > >>> that
> > > > > >> > > > >> > >>> > > they can consume from the broker in the same
> > rack
> > > > to
> > > > > >> > reduce
> > > > > >> > > > >> > latency.
> > > > > >> > > > >> > >>> As I
> > > > > >> > > > >> > >>> > > understand this will only be beneficial if
> > > consumer
> > > > > can
> > > > > >> > > > consume
> > > > > >> > > > >> > from
> > > > > >> > > > >> > >>> any
> > > > > >> > > > >> > >>> > > broker in ISR, which is not possible now.
> > > > > >> > > > >> > >>> > >
> > > > > >> > > > >> > >>> > > I suggest we skip the change to TMR. Once the
> > > > change
> > > > > is
> > > > > >> > made
> > > > > >> > > > to
> > > > > >> > > > >> > >>> consumer
> > > > > >> > > > >> > >>> > to
> > > > > >> > > > >> > >>> > > be able to consume from any broker in ISR,
> the
> > > rack
> > > > > >> > > > information
> > > > > >> > > > >> can
> > > > > >> > > > >> > >>> be
> > > > > >> > > > >> > >>> > > added to TMR.
> > > > > >> > > > >> > >>> > >
> > > > > >> > > > >> > >>> > > Another thing I want to confirm is  command
> > line
> > > > > >> > behavior. I
> > > > > >> > > > >> think
> > > > > >> > > > >> > >>> the
> > > > > >> > > > >> > >>> > > desirable default behavior is to fail fast on
> > > > command
> > > > > >> line
> > > > > >> > > for
> > > > > >> > > > >> > >>> incomplete
> > > > > >> > > > >> > >>> > > rack mapping. The error message can include
> > > further
> > > > > >> > > > instruction
> > > > > >> > > > >> > that
> > > > > >> > > > >> > >>> > tells
> > > > > >> > > > >> > >>> > > the user to add an extra argument (like
> > > > > >> > > > >> "--allow-partial-rackinfo")
> > > > > >> > > > >> > >>> to
> > > > > >> > > > >> > >>> > > suppress the error and do an imperfect rack
> > aware
> > > > > >> > > assignment.
> > > > > >> > > > If
> > > > > >> > > > >> > the
> > > > > >> > > > >> > >>> > > default behavior is to allow incomplete
> > mapping,
> > > > the
> > > > > >> error
> > > > > >> > > can
> > > > > >> > > > >> > still
> > > > > >> > > > >> > >>> be
> > > > > >> > > > >> > >>> > > easily missed.
> > > > > >> > > > >> > >>> > >
> > > > > >> > > > >> > >>> > > The affected command line tools are
> > TopicCommand
> > > > and
> > > > > >> > > > >> > >>> > > ReassignPartitionsCommand.
> > > > > >> > > > >> > >>> > >
> > > > > >> > > > >> > >>> > > Thanks,
> > > > > >> > > > >> > >>> > > Allen
> > > > > >> > > > >> > >>> > >
> > > > > >> > > > >> > >>> > >
> > > > > >> > > > >> > >>> > >
> > > > > >> > > > >> > >>> > >
> > > > > >> > > > >> > >>> > >
> > > > > >> > > > >> > >>> > > On Mon, Oct 26, 2015 at 12:55 PM, Aditya
> > > Auradkar <
> > > > > >> > > > >> > >>> > aaurad...@linkedin.com>
> > > > > >> > > > >> > >>> > > wrote:
> > > > > >> > > > >> > >>> > >
> > > > > >> > > > >> > >>> > > > Hi Allen,
> > > > > >> > > > >> > >>> > > >
> > > > > >> > > > >> > >>> > > > For TopicMetadataResponse to understand
> > > version,
> > > > > you
> > > > > >> can
> > > > > >> > > > bump
> > > > > >> > > > >> up
> > > > > >> > > > >> > >>> the
> > > > > >> > > > >> > >>> > > > request version itself. Based on the
> version
> > of
> > > > the
> > > > > >> > > request,
> > > > > >> > > > >> the
> > > > > >> > > > >> > >>> > response
> > > > > >> > > > >> > >>> > > > can be appropriately serialized. It
> shouldn't
> > > be
> > > > a
> > > > > >> huge
> > > > > >> > > > >> change.
> > > > > >> > > > >> > For
> > > > > >> > > > >> > >>> > > > example: We went through something similar
> > for
> > > > > >> > > > ProduceRequest
> > > > > >> > > > >> > >>> recently
> > > > > >> > > > >> > >>> > (
> > > > > >> > > > >> > >>> > > > https://reviews.apache.org/r/33378/)
> > > > > >> > > > >> > >>> > > > I guess the reason protocol information is
> > not
> > > > > >> included
> > > > > >> > in
> > > > > >> > > > the
> > > > > >> > > > >> > TMR
> > > > > >> > > > >> > >>> is
> > > > > >> > > > >> > >>> > > > because the topic itself is independent of
> > any
> > > > > >> > particular
> > > > > >> > > > >> > protocol
> > > > > >> > > > >> > >>> (SSL
> > > > > >> > > > >> > >>> > > vs
> > > > > >> > > > >> > >>> > > > Plaintext). Having said that, I'm not sure
> we
> > > > even
> > > > > >> need
> > > > > >> > > rack
> > > > > >> > > > >> > >>> > information
> > > > > >> > > > >> > >>> > > in
> > > > > >> > > > >> > >>> > > > TMR. What usecase were you thinking of
> > > initially?
> > > > > >> > > > >> > >>> > > >
> > > > > >> > > > >> > >>> > > > For 1 - I'd be fine with adding an option
> to
> > > the
> > > > > >> command
> > > > > >> > > > line
> > > > > >> > > > >> > tools
> > > > > >> > > > >> > >>> > that
> > > > > >> > > > >> > >>> > > > check rack assignment. For e.g.
> > > > > >> "--strict-assignment" or
> > > > > >> > > > >> > something
> > > > > >> > > > >> > >>> > > similar.
> > > > > >> > > > >> > >>> > > >
> > > > > >> > > > >> > >>> > > > Aditya
> > > > > >> > > > >> > >>> > > >
> > > > > >> > > > >> > >>> > > > On Thu, Oct 22, 2015 at 6:44 PM, Allen
> Wang <
> > > > > >> > > > >> > allenxw...@gmail.com>
> > > > > >> > > > >> > >>> > > wrote:
> > > > > >> > > > >> > >>> > > >
> > > > > >> > > > >> > >>> > > > > For 2 and 3, I have updated the KIP.
> Please
> > > > take
> > > > > a
> > > > > >> > look.
> > > > > >> > > > One
> > > > > >> > > > >> > >>> thing I
> > > > > >> > > > >> > >>> > > have
> > > > > >> > > > >> > >>> > > > > changed is removing the proposal to add
> > rack
> > > to
> > > > > >> > > > >> > >>> > TopicMetadataResponse.
> > > > > >> > > > >> > >>> > > > The
> > > > > >> > > > >> > >>> > > > > reason is that unlike
> > UpdateMetadataRequest,
> > > > > >> > > > >> > >>> TopicMetadataResponse
> > > > > >> > > > >> > >>> > does
> > > > > >> > > > >> > >>> > > > not
> > > > > >> > > > >> > >>> > > > > understand version. I don't see a way to
> > > > include
> > > > > >> rack
> > > > > >> > > > >> without
> > > > > >> > > > >> > >>> > breaking
> > > > > >> > > > >> > >>> > > > old
> > > > > >> > > > >> > >>> > > > > version of clients. That's probably why
> > > secure
> > > > > >> > protocol
> > > > > >> > > is
> > > > > >> > > > >> not
> > > > > >> > > > >> > >>> > included
> > > > > >> > > > >> > >>> > > > in
> > > > > >> > > > >> > >>> > > > > the TopicMetadataResponse either. I think
> > it
> > > > will
> > > > > >> be a
> > > > > >> > > > much
> > > > > >> > > > >> > >>> bigger
> > > > > >> > > > >> > >>> > > change
> > > > > >> > > > >> > >>> > > > > to include rack in TopicMetadataResponse.
> > > > > >> > > > >> > >>> > > > >
> > > > > >> > > > >> > >>> > > > > For 1, my concern is that doing rack
> aware
> > > > > >> assignment
> > > > > >> > > > >> without
> > > > > >> > > > >> > >>> > complete
> > > > > >> > > > >> > >>> > > > > broker to rack mapping will result in
> > > > assignment
> > > > > >> that
> > > > > >> > is
> > > > > >> > > > not
> > > > > >> > > > >> > rack
> > > > > >> > > > >> > >>> > aware
> > > > > >> > > > >> > >>> > > > and
> > > > > >> > > > >> > >>> > > > > fail to provide fault tolerance in the
> > event
> > > of
> > > > > >> rack
> > > > > >> > > > outage.
> > > > > >> > > > >> > This
> > > > > >> > > > >> > >>> > kind
> > > > > >> > > > >> > >>> > > of
> > > > > >> > > > >> > >>> > > > > problem will be difficult to surface. And
> > the
> > > > > cost
> > > > > >> of
> > > > > >> > > this
> > > > > >> > > > >> > >>> problem is
> > > > > >> > > > >> > >>> > > > high:
> > > > > >> > > > >> > >>> > > > > you have to do partition reassignment if
> > you
> > > > are
> > > > > >> lucky
> > > > > >> > > to
> > > > > >> > > > >> spot
> > > > > >> > > > >> > >>> the
> > > > > >> > > > >> > >>> > > > problem
> > > > > >> > > > >> > >>> > > > > early on or face the consequence of data
> > loss
> > > > > >> during
> > > > > >> > > real
> > > > > >> > > > >> rack
> > > > > >> > > > >> > >>> > outage.
> > > > > >> > > > >> > >>> > > > >
> > > > > >> > > > >> > >>> > > > > I do see the concern of fail-fast as it
> > might
> > > > > also
> > > > > >> > cause
> > > > > >> > > > >> data
> > > > > >> > > > >> > >>> loss if
> > > > > >> > > > >> > >>> > > > > producer is not able produce the message
> > due
> > > to
> > > > > >> topic
> > > > > >> > > > >> creation
> > > > > >> > > > >> > >>> > failure.
> > > > > >> > > > >> > >>> > > > Is
> > > > > >> > > > >> > >>> > > > > it feasible to treat dynamic topic
> creation
> > > and
> > > > > >> > command
> > > > > >> > > > >> tools
> > > > > >> > > > >> > >>> > > > differently?
> > > > > >> > > > >> > >>> > > > > We allow dynamic topic creation with
> > > incomplete
> > > > > >> > > > broker-rack
> > > > > >> > > > >> > >>> mapping
> > > > > >> > > > >> > >>> > and
> > > > > >> > > > >> > >>> > > > > fail fast in command line. Another option
> > is
> > > to
> > > > > let
> > > > > >> > user
> > > > > >> > > > >> > >>> determine
> > > > > >> > > > >> > >>> > the
> > > > > >> > > > >> > >>> > > > > behavior for command line. For example,
> by
> > > > > default
> > > > > >> > fail
> > > > > >> > > > >> fast in
> > > > > >> > > > >> > >>> > command
> > > > > >> > > > >> > >>> > > > > line but allow incomplete broker-rack
> > mapping
> > > > if
> > > > > >> > another
> > > > > >> > > > >> switch
> > > > > >> > > > >> > >>> is
> > > > > >> > > > >> > >>> > > > > provided.
> > > > > >> > > > >> > >>> > > > >
> > > > > >> > > > >> > >>> > > > >
> > > > > >> > > > >> > >>> > > > >
> > > > > >> > > > >> > >>> > > > >
> > > > > >> > > > >> > >>> > > > > On Tue, Oct 20, 2015 at 10:05 AM, Aditya
> > > > > Auradkar <
> > > > > >> > > > >> > >>> > > > > aaurad...@linkedin.com.invalid> wrote:
> > > > > >> > > > >> > >>> > > > >
> > > > > >> > > > >> > >>> > > > > > Hey Allen,
> > > > > >> > > > >> > >>> > > > > >
> > > > > >> > > > >> > >>> > > > > > 1. If we choose fail fast topic
> creation,
> > > we
> > > > > will
> > > > > >> > have
> > > > > >> > > > >> topic
> > > > > >> > > > >> > >>> > creation
> > > > > >> > > > >> > >>> > > > > > failures while upgrading the cluster. I
> > > > really
> > > > > >> doubt
> > > > > >> > > we
> > > > > >> > > > >> want
> > > > > >> > > > >> > >>> this
> > > > > >> > > > >> > >>> > > > > behavior.
> > > > > >> > > > >> > >>> > > > > > Ideally, this should be invisible to
> > > clients
> > > > > of a
> > > > > >> > > > cluster.
> > > > > >> > > > >> > >>> > Currently,
> > > > > >> > > > >> > >>> > > > > each
> > > > > >> > > > >> > >>> > > > > > broker is effectively its own rack. So
> we
> > > > > >> probably
> > > > > >> > can
> > > > > >> > > > use
> > > > > >> > > > >> > the
> > > > > >> > > > >> > >>> rack
> > > > > >> > > > >> > >>> > > > > > information whenever possible but not
> > make
> > > > it a
> > > > > >> hard
> > > > > >> > > > >> > >>> requirement.
> > > > > >> > > > >> > >>> > To
> > > > > >> > > > >> > >>> > > > > extend
> > > > > >> > > > >> > >>> > > > > > Gwen's example, one badly configured
> > broker
> > > > > >> should
> > > > > >> > not
> > > > > >> > > > >> > degrade
> > > > > >> > > > >> > >>> > topic
> > > > > >> > > > >> > >>> > > > > > creation for the entire cluster.
> > > > > >> > > > >> > >>> > > > > >
> > > > > >> > > > >> > >>> > > > > > 2. Upgrade scenario - Can you add a
> > section
> > > > on
> > > > > >> the
> > > > > >> > > > upgrade
> > > > > >> > > > >> > >>> piece to
> > > > > >> > > > >> > >>> > > > > confirm
> > > > > >> > > > >> > >>> > > > > > that old clients will not see errors? I
> > > > believe
> > > > > >> > > > >> > >>> > > > > ZookeeperConsumerConnector
> > > > > >> > > > >> > >>> > > > > > reads the Broker objects from ZK. I
> > wanted
> > > to
> > > > > >> > confirm
> > > > > >> > > > that
> > > > > >> > > > >> > this
> > > > > >> > > > >> > >>> > will
> > > > > >> > > > >> > >>> > > > not
> > > > > >> > > > >> > >>> > > > > > cause any problems.
> > > > > >> > > > >> > >>> > > > > >
> > > > > >> > > > >> > >>> > > > > > 3. Could you elaborate your proposed
> > > changes
> > > > to
> > > > > >> the
> > > > > >> > > > >> > >>> > > > UpdateMetadataRequest
> > > > > >> > > > >> > >>> > > > > > in the "Public Interfaces" section?
> > > > > Personally, I
> > > > > >> > find
> > > > > >> > > > >> this
> > > > > >> > > > >> > >>> format
> > > > > >> > > > >> > >>> > > easy
> > > > > >> > > > >> > >>> > > > > to
> > > > > >> > > > >> > >>> > > > > > read in terms of wire protocol changes:
> > > > > >> > > > >> > >>> > > > > >
> > > > > >> > > > >> > >>> > > > > >
> > > > > >> > > > >> > >>> > > > >
> > > > > >> > > > >> > >>> > > >
> > > > > >> > > > >> > >>> > >
> > > > > >> > > > >> > >>> >
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> >
> > > > > >> > > > >>
> > > > > >> > > >
> > > > > >> > >
> > > > > >> >
> > > > > >>
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operations#KIP-4-Commandlineandcentralizedadministrativeoperations-CreateTopicRequest
> > > > > >> > > > >> > >>> > > > > >
> > > > > >> > > > >> > >>> > > > > > Aditya
> > > > > >> > > > >> > >>> > > > > >
> > > > > >> > > > >> > >>> > > > > > On Fri, Oct 16, 2015 at 3:45 PM, Allen
> > > Wang <
> > > > > >> > > > >> > >>> allenxw...@gmail.com>
> > > > > >> > > > >> > >>> > > > > wrote:
> > > > > >> > > > >> > >>> > > > > >
> > > > > >> > > > >> > >>> > > > > > > KIP is updated include rack as an
> > > optional
> > > > > >> > property
> > > > > >> > > > for
> > > > > >> > > > >> > >>> broker.
> > > > > >> > > > >> > >>> > > > Please
> > > > > >> > > > >> > >>> > > > > > take
> > > > > >> > > > >> > >>> > > > > > > a look and let me know if more
> details
> > > are
> > > > > >> needed.
> > > > > >> > > > >> > >>> > > > > > >
> > > > > >> > > > >> > >>> > > > > > > For the case where some brokers have
> > rack
> > > > and
> > > > > >> some
> > > > > >> > > do
> > > > > >> > > > >> not,
> > > > > >> > > > >> > >>> the
> > > > > >> > > > >> > >>> > > > current
> > > > > >> > > > >> > >>> > > > > > KIP
> > > > > >> > > > >> > >>> > > > > > > uses the fail-fast behavior. If there
> > are
> > > > > >> > concerns,
> > > > > >> > > we
> > > > > >> > > > >> can
> > > > > >> > > > >> > >>> > further
> > > > > >> > > > >> > >>> > > > > > discuss
> > > > > >> > > > >> > >>> > > > > > > this in the email thread or next
> > hangout.
> > > > > >> > > > >> > >>> > > > > > >
> > > > > >> > > > >> > >>> > > > > > >
> > > > > >> > > > >> > >>> > > > > > >
> > > > > >> > > > >> > >>> > > > > > > On Thu, Oct 15, 2015 at 10:42 AM,
> Allen
> > > > Wang
> > > > > <
> > > > > >> > > > >> > >>> > allenxw...@gmail.com
> > > > > >> > > > >> > >>> > > >
> > > > > >> > > > >> > >>> > > > > > wrote:
> > > > > >> > > > >> > >>> > > > > > >
> > > > > >> > > > >> > >>> > > > > > > > That's a good question. I can think
> > of
> > > > > three
> > > > > >> > > actions
> > > > > >> > > > >> if
> > > > > >> > > > >> > the
> > > > > >> > > > >> > >>> > rack
> > > > > >> > > > >> > >>> > > > > > > > information is incomplete:
> > > > > >> > > > >> > >>> > > > > > > >
> > > > > >> > > > >> > >>> > > > > > > > 1. Treat the node without rack as
> if
> > it
> > > > is
> > > > > on
> > > > > >> > its
> > > > > >> > > > >> unique
> > > > > >> > > > >> > >>> rack
> > > > > >> > > > >> > >>> > > > > > > > 2. Disregard all rack information
> and
> > > > > >> fallback
> > > > > >> > to
> > > > > >> > > > >> current
> > > > > >> > > > >> > >>> > > algorithm
> > > > > >> > > > >> > >>> > > > > > > > 3. Fail-fast
> > > > > >> > > > >> > >>> > > > > > > >
> > > > > >> > > > >> > >>> > > > > > > > Now I think about it, one and three
> > > make
> > > > > more
> > > > > >> > > sense.
> > > > > >> > > > >> The
> > > > > >> > > > >> > >>> reason
> > > > > >> > > > >> > >>> > > for
> > > > > >> > > > >> > >>> > > > > > > > fail-fast is that user mistake for
> > not
> > > > > >> providing
> > > > > >> > > the
> > > > > >> > > > >> rack
> > > > > >> > > > >> > >>> may
> > > > > >> > > > >> > >>> > > never
> > > > > >> > > > >> > >>> > > > > be
> > > > > >> > > > >> > >>> > > > > > > > found if we tolerate that and the
> > > > > assignment
> > > > > >> may
> > > > > >> > > not
> > > > > >> > > > >> be
> > > > > >> > > > >> > >>> rack
> > > > > >> > > > >> > >>> > > aware
> > > > > >> > > > >> > >>> > > > as
> > > > > >> > > > >> > >>> > > > > > the
> > > > > >> > > > >> > >>> > > > > > > > user has expected and this creates
> > > debug
> > > > > >> > problems
> > > > > >> > > > when
> > > > > >> > > > >> > >>> things
> > > > > >> > > > >> > >>> > > fail.
> > > > > >> > > > >> > >>> > > > > > > >
> > > > > >> > > > >> > >>> > > > > > > > What do you think? If not
> fail-fast,
> > is
> > > > > there
> > > > > >> > > anyway
> > > > > >> > > > >> we
> > > > > >> > > > >> > can
> > > > > >> > > > >> > >>> > make
> > > > > >> > > > >> > >>> > > > the
> > > > > >> > > > >> > >>> > > > > > user
> > > > > >> > > > >> > >>> > > > > > > > error standing out?
> > > > > >> > > > >> > >>> > > > > > > >
> > > > > >> > > > >> > >>> > > > > > > >
> > > > > >> > > > >> > >>> > > > > > > > On Thu, Oct 15, 2015 at 10:17 AM,
> > Gwen
> > > > > >> Shapira <
> > > > > >> > > > >> > >>> > > g...@confluent.io>
> > > > > >> > > > >> > >>> > > > > > > wrote:
> > > > > >> > > > >> > >>> > > > > > > >
> > > > > >> > > > >> > >>> > > > > > > >> Thanks! Just to clarify, when some
> > > > brokers
> > > > > >> have
> > > > > >> > > > rack
> > > > > >> > > > >> > >>> > assignment
> > > > > >> > > > >> > >>> > > > and
> > > > > >> > > > >> > >>> > > > > > some
> > > > > >> > > > >> > >>> > > > > > > >> don't, do we act like none of them
> > > have
> > > > > it?
> > > > > >> or
> > > > > >> > > like
> > > > > >> > > > >> > those
> > > > > >> > > > >> > >>> > > without
> > > > > >> > > > >> > >>> > > > > > > >> assignment are in their own rack?
> > > > > >> > > > >> > >>> > > > > > > >>
> > > > > >> > > > >> > >>> > > > > > > >> The first scenario is good when
> > first
> > > > > >> setting
> > > > > >> > up
> > > > > >> > > > >> > >>> > rack-awareness,
> > > > > >> > > > >> > >>> > > > but
> > > > > >> > > > >> > >>> > > > > > the
> > > > > >> > > > >> > >>> > > > > > > >> second makes more sense for
> on-going
> > > > > >> > maintenance
> > > > > >> > > (I
> > > > > >> > > > >> can
> > > > > >> > > > >> > >>> > totally
> > > > > >> > > > >> > >>> > > > see
> > > > > >> > > > >> > >>> > > > > > > >> someone
> > > > > >> > > > >> > >>> > > > > > > >> adding a node and forgetting to
> set
> > > the
> > > > > rack
> > > > > >> > > > >> property,
> > > > > >> > > > >> > we
> > > > > >> > > > >> > >>> > don't
> > > > > >> > > > >> > >>> > > > want
> > > > > >> > > > >> > >>> > > > > > > this
> > > > > >> > > > >> > >>> > > > > > > >> to change behavior for anything
> > except
> > > > the
> > > > > >> new
> > > > > >> > > > node).
> > > > > >> > > > >> > >>> > > > > > > >>
> > > > > >> > > > >> > >>> > > > > > > >> What do you think?
> > > > > >> > > > >> > >>> > > > > > > >>
> > > > > >> > > > >> > >>> > > > > > > >> Gwen
> > > > > >> > > > >> > >>> > > > > > > >>
> > > > > >> > > > >> > >>> > > > > > > >> On Thu, Oct 15, 2015 at 10:13 AM,
> > > Allen
> > > > > >> Wang <
> > > > > >> > > > >> > >>> > > > allenxw...@gmail.com>
> > > > > >> > > > >> > >>> > > > > > > >> wrote:
> > > > > >> > > > >> > >>> > > > > > > >>
> > > > > >> > > > >> > >>> > > > > > > >> > For scenario 1:
> > > > > >> > > > >> > >>> > > > > > > >> >
> > > > > >> > > > >> > >>> > > > > > > >> > - Add the rack information to
> > broker
> > > > > >> property
> > > > > >> > > > file
> > > > > >> > > > >> or
> > > > > >> > > > >> > >>> > > > dynamically
> > > > > >> > > > >> > >>> > > > > > set
> > > > > >> > > > >> > >>> > > > > > > >> it in
> > > > > >> > > > >> > >>> > > > > > > >> > the wrapper code to bootstrap
> > Kafka
> > > > > >> server.
> > > > > >> > You
> > > > > >> > > > >> would
> > > > > >> > > > >> > do
> > > > > >> > > > >> > >>> > that
> > > > > >> > > > >> > >>> > > > for
> > > > > >> > > > >> > >>> > > > > > all
> > > > > >> > > > >> > >>> > > > > > > >> > brokers and restart the brokers
> > one
> > > by
> > > > > >> one.
> > > > > >> > > > >> > >>> > > > > > > >> >
> > > > > >> > > > >> > >>> > > > > > > >> > In this scenario, the complete
> > > broker
> > > > to
> > > > > >> rack
> > > > > >> > > > >> mapping
> > > > > >> > > > >> > >>> may
> > > > > >> > > > >> > >>> > not
> > > > > >> > > > >> > >>> > > be
> > > > > >> > > > >> > >>> > > > > > > >> available
> > > > > >> > > > >> > >>> > > > > > > >> > until every broker is restarted.
> > > > During
> > > > > >> that
> > > > > >> > > time
> > > > > >> > > > >> we
> > > > > >> > > > >> > >>> fall
> > > > > >> > > > >> > >>> > back
> > > > > >> > > > >> > >>> > > > to
> > > > > >> > > > >> > >>> > > > > > > >> default
> > > > > >> > > > >> > >>> > > > > > > >> > replica assignment algorithm.
> > > > > >> > > > >> > >>> > > > > > > >> >
> > > > > >> > > > >> > >>> > > > > > > >> > For scenario 2:
> > > > > >> > > > >> > >>> > > > > > > >> >
> > > > > >> > > > >> > >>> > > > > > > >> > - Add the rack information to
> > broker
> > > > > >> property
> > > > > >> > > > file
> > > > > >> > > > >> or
> > > > > >> > > > >> > >>> > > > dynamically
> > > > > >> > > > >> > >>> > > > > > set
> > > > > >> > > > >> > >>> > > > > > > >> it in
> > > > > >> > > > >> > >>> > > > > > > >> > the wrapper code and start the
> > > broker.
> > > > > >> > > > >> > >>> > > > > > > >> >
> > > > > >> > > > >> > >>> > > > > > > >> >
> > > > > >> > > > >> > >>> > > > > > > >> > On Wed, Oct 14, 2015 at 2:36 PM,
> > > Gwen
> > > > > >> > Shapira <
> > > > > >> > > > >> > >>> > > > g...@confluent.io>
> > > > > >> > > > >> > >>> > > > > > > >> wrote:
> > > > > >> > > > >> > >>> > > > > > > >> >
> > > > > >> > > > >> > >>> > > > > > > >> > > Can you clarify the workflow
> for
> > > the
> > > > > >> > > following
> > > > > >> > > > >> > >>> scenarios:
> > > > > >> > > > >> > >>> > > > > > > >> > >
> > > > > >> > > > >> > >>> > > > > > > >> > > 1. I currently have 6 brokers
> > and
> > > > want
> > > > > >> to
> > > > > >> > add
> > > > > >> > > > >> rack
> > > > > >> > > > >> > >>> > > information
> > > > > >> > > > >> > >>> > > > > for
> > > > > >> > > > >> > >>> > > > > > > >> each
> > > > > >> > > > >> > >>> > > > > > > >> > > 2. I'm adding a new broker
> and I
> > > > want
> > > > > to
> > > > > >> > > > specify
> > > > > >> > > > >> > which
> > > > > >> > > > >> > >>> > rack
> > > > > >> > > > >> > >>> > > it
> > > > > >> > > > >> > >>> > > > > > > >> belongs on
> > > > > >> > > > >> > >>> > > > > > > >> > > while adding it.
> > > > > >> > > > >> > >>> > > > > > > >> > >
> > > > > >> > > > >> > >>> > > > > > > >> > > Thanks!
> > > > > >> > > > >> > >>> > > > > > > >> > >
> > > > > >> > > > >> > >>> > > > > > > >> > > On Tue, Oct 13, 2015 at 2:21
> PM,
> > > > Allen
> > > > > >> > Wang <
> > > > > >> > > > >> > >>> > > > > allenxw...@gmail.com
> > > > > >> > > > >> > >>> > > > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > wrote:
> > > > > >> > > > >> > >>> > > > > > > >> > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > We discussed the KIP in the
> > > > hangout
> > > > > >> > today.
> > > > > >> > > > The
> > > > > >> > > > >> > >>> > > > recommendation
> > > > > >> > > > >> > >>> > > > > is
> > > > > >> > > > >> > >>> > > > > > > to
> > > > > >> > > > >> > >>> > > > > > > >> > make
> > > > > >> > > > >> > >>> > > > > > > >> > > > rack as a broker property in
> > > > > >> ZooKeeper.
> > > > > >> > For
> > > > > >> > > > >> users
> > > > > >> > > > >> > >>> with
> > > > > >> > > > >> > >>> > > > > existing
> > > > > >> > > > >> > >>> > > > > > > rack
> > > > > >> > > > >> > >>> > > > > > > >> > > > information stored
> somewhere,
> > > they
> > > > > >> would
> > > > > >> > > need
> > > > > >> > > > >> to
> > > > > >> > > > >> > >>> > retrieve
> > > > > >> > > > >> > >>> > > > the
> > > > > >> > > > >> > >>> > > > > > > >> > information
> > > > > >> > > > >> > >>> > > > > > > >> > > > at broker start up and
> > > dynamically
> > > > > set
> > > > > >> > the
> > > > > >> > > > rack
> > > > > >> > > > >> > >>> > property,
> > > > > >> > > > >> > >>> > > > > which
> > > > > >> > > > >> > >>> > > > > > > can
> > > > > >> > > > >> > >>> > > > > > > >> be
> > > > > >> > > > >> > >>> > > > > > > >> > > > implemented as a wrapper to
> > > > > bootstrap
> > > > > >> > > broker.
> > > > > >> > > > >> > There
> > > > > >> > > > >> > >>> will
> > > > > >> > > > >> > >>> > > be
> > > > > >> > > > >> > >>> > > > no
> > > > > >> > > > >> > >>> > > > > > > >> > interface
> > > > > >> > > > >> > >>> > > > > > > >> > > or
> > > > > >> > > > >> > >>> > > > > > > >> > > > pluggable implementation to
> > > > retrieve
> > > > > >> the
> > > > > >> > > rack
> > > > > >> > > > >> > >>> > information.
> > > > > >> > > > >> > >>> > > > > > > >> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > The assumption is that you
> > > always
> > > > > >> need to
> > > > > >> > > > >> restart
> > > > > >> > > > >> > >>> the
> > > > > >> > > > >> > >>> > > broker
> > > > > >> > > > >> > >>> > > > > to
> > > > > >> > > > >> > >>> > > > > > > >> make a
> > > > > >> > > > >> > >>> > > > > > > >> > > > change to the rack.
> > > > > >> > > > >> > >>> > > > > > > >> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > Once the rack becomes a
> broker
> > > > > >> property,
> > > > > >> > it
> > > > > >> > > > >> will
> > > > > >> > > > >> > be
> > > > > >> > > > >> > >>> > > possible
> > > > > >> > > > >> > >>> > > > > to
> > > > > >> > > > >> > >>> > > > > > > make
> > > > > >> > > > >> > >>> > > > > > > >> > rack
> > > > > >> > > > >> > >>> > > > > > > >> > > > part of the meta data to
> help
> > > the
> > > > > >> > consumer
> > > > > >> > > > >> choose
> > > > > >> > > > >> > >>> which
> > > > > >> > > > >> > >>> > in
> > > > > >> > > > >> > >>> > > > > sync
> > > > > >> > > > >> > >>> > > > > > > >> replica
> > > > > >> > > > >> > >>> > > > > > > >> > > to
> > > > > >> > > > >> > >>> > > > > > > >> > > > consume from as part of the
> > > future
> > > > > >> > consumer
> > > > > >> > > > >> > >>> enhancement.
> > > > > >> > > > >> > >>> > > > > > > >> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > I will update the KIP.
> > > > > >> > > > >> > >>> > > > > > > >> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > Thanks,
> > > > > >> > > > >> > >>> > > > > > > >> > > > Allen
> > > > > >> > > > >> > >>> > > > > > > >> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > On Thu, Oct 8, 2015 at 9:23
> > AM,
> > > > > Allen
> > > > > >> > Wang
> > > > > >> > > <
> > > > > >> > > > >> > >>> > > > > > allenxw...@gmail.com>
> > > > > >> > > > >> > >>> > > > > > > >> > wrote:
> > > > > >> > > > >> > >>> > > > > > > >> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > > I attended Tuesday's KIP
> > > hangout
> > > > > but
> > > > > >> > this
> > > > > >> > > > KIP
> > > > > >> > > > >> > was
> > > > > >> > > > >> > >>> not
> > > > > >> > > > >> > >>> > > > > > discussed
> > > > > >> > > > >> > >>> > > > > > > >> due
> > > > > >> > > > >> > >>> > > > > > > >> > to
> > > > > >> > > > >> > >>> > > > > > > >> > > > > time constraint.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > > However, after hearing
> > > > discussion
> > > > > of
> > > > > >> > > > KIP-35,
> > > > > >> > > > >> I
> > > > > >> > > > >> > >>> have
> > > > > >> > > > >> > >>> > the
> > > > > >> > > > >> > >>> > > > > > feeling
> > > > > >> > > > >> > >>> > > > > > > >> that
> > > > > >> > > > >> > >>> > > > > > > >> > > > > incompatibility (caused by
> > new
> > > > > >> broker
> > > > > >> > > > >> property)
> > > > > >> > > > >> > >>> > between
> > > > > >> > > > >> > >>> > > > > > brokers
> > > > > >> > > > >> > >>> > > > > > > >> with
> > > > > >> > > > >> > >>> > > > > > > >> > > > > different versions  will
> be
> > > > solved
> > > > > >> > there.
> > > > > >> > > > In
> > > > > >> > > > >> > >>> addition,
> > > > > >> > > > >> > >>> > > > > having
> > > > > >> > > > >> > >>> > > > > > > >> stack
> > > > > >> > > > >> > >>> > > > > > > >> > in
> > > > > >> > > > >> > >>> > > > > > > >> > > > > broker property as meta
> data
> > > may
> > > > > >> also
> > > > > >> > > help
> > > > > >> > > > >> > >>> consumers
> > > > > >> > > > >> > >>> > in
> > > > > >> > > > >> > >>> > > > the
> > > > > >> > > > >> > >>> > > > > > > >> future.
> > > > > >> > > > >> > >>> > > > > > > >> > So
> > > > > >> > > > >> > >>> > > > > > > >> > > I
> > > > > >> > > > >> > >>> > > > > > > >> > > > am
> > > > > >> > > > >> > >>> > > > > > > >> > > > > open to adding stack
> > property
> > > to
> > > > > >> > broker.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > > Hopefully we can discuss
> > this
> > > in
> > > > > the
> > > > > >> > next
> > > > > >> > > > KIP
> > > > > >> > > > >> > >>> hangout.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > > On Wed, Sep 30, 2015 at
> 2:46
> > > PM,
> > > > > >> Allen
> > > > > >> > > > Wang <
> > > > > >> > > > >> > >>> > > > > > > allenxw...@gmail.com
> > > > > >> > > > >> > >>> > > > > > > >> >
> > > > > >> > > > >> > >>> > > > > > > >> > > > wrote:
> > > > > >> > > > >> > >>> > > > > > > >> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >> Can you send me the
> > > information
> > > > > on
> > > > > >> the
> > > > > >> > > > next
> > > > > >> > > > >> KIP
> > > > > >> > > > >> > >>> > > hangout?
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >> Currently the broker-rack
> > > > mapping
> > > > > >> is
> > > > > >> > not
> > > > > >> > > > >> > cached.
> > > > > >> > > > >> > >>> In
> > > > > >> > > > >> > >>> > > > > > KafkaApis,
> > > > > >> > > > >> > >>> > > > > > > >> > > > >> RackLocator.getRackInfo()
> > is
> > > > > called
> > > > > >> > each
> > > > > >> > > > >> time
> > > > > >> > > > >> > the
> > > > > >> > > > >> > >>> > > mapping
> > > > > >> > > > >> > >>> > > > > is
> > > > > >> > > > >> > >>> > > > > > > >> needed
> > > > > >> > > > >> > >>> > > > > > > >> > > for
> > > > > >> > > > >> > >>> > > > > > > >> > > > >> auto topic creation. This
> > > will
> > > > > >> ensure
> > > > > >> > > > latest
> > > > > >> > > > >> > >>> mapping
> > > > > >> > > > >> > >>> > is
> > > > > >> > > > >> > >>> > > > > used
> > > > > >> > > > >> > >>> > > > > > at
> > > > > >> > > > >> > >>> > > > > > > >> any
> > > > > >> > > > >> > >>> > > > > > > >> > > > time.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >> The ability to get the
> > > complete
> > > > > >> > mapping
> > > > > >> > > > >> makes
> > > > > >> > > > >> > it
> > > > > >> > > > >> > >>> > simple
> > > > > >> > > > >> > >>> > > > to
> > > > > >> > > > >> > >>> > > > > > > reuse
> > > > > >> > > > >> > >>> > > > > > > >> the
> > > > > >> > > > >> > >>> > > > > > > >> > > > same
> > > > > >> > > > >> > >>> > > > > > > >> > > > >> interface in command line
> > > > tools.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >> On Wed, Sep 30, 2015 at
> > 11:01
> > > > AM,
> > > > > >> > Aditya
> > > > > >> > > > >> > >>> Auradkar <
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>
> > > aaurad...@linkedin.com.invalid
> > > > >
> > > > > >> > wrote:
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> Perhaps we discuss this
> > > during
> > > > > the
> > > > > >> > next
> > > > > >> > > > KIP
> > > > > >> > > > >> > >>> hangout?
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> I do see that a
> pluggable
> > > rack
> > > > > >> > locator
> > > > > >> > > > can
> > > > > >> > > > >> be
> > > > > >> > > > >> > >>> useful
> > > > > >> > > > >> > >>> > > > but I
> > > > > >> > > > >> > >>> > > > > > do
> > > > > >> > > > >> > >>> > > > > > > >> see a
> > > > > >> > > > >> > >>> > > > > > > >> > > few
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> concerns:
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> - The RackLocator (as
> > > > described
> > > > > in
> > > > > >> > the
> > > > > >> > > > >> > >>> document),
> > > > > >> > > > >> > >>> > > > implies
> > > > > >> > > > >> > >>> > > > > > that
> > > > > >> > > > >> > >>> > > > > > > >> it
> > > > > >> > > > >> > >>> > > > > > > >> > can
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> discover rack
> information
> > > for
> > > > > any
> > > > > >> > node
> > > > > >> > > in
> > > > > >> > > > >> the
> > > > > >> > > > >> > >>> > cluster.
> > > > > >> > > > >> > >>> > > > How
> > > > > >> > > > >> > >>> > > > > > > does
> > > > > >> > > > >> > >>> > > > > > > >> it
> > > > > >> > > > >> > >>> > > > > > > >> > > deal
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> with rack location
> > changes?
> > > > For
> > > > > >> > > example,
> > > > > >> > > > >> if I
> > > > > >> > > > >> > >>> moved
> > > > > >> > > > >> > >>> > > > broker
> > > > > >> > > > >> > >>> > > > > > id
> > > > > >> > > > >> > >>> > > > > > > >> (1)
> > > > > >> > > > >> > >>> > > > > > > >> > > from
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> rack
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> X to Y, I only have to
> > start
> > > > > that
> > > > > >> > > broker
> > > > > >> > > > >> with
> > > > > >> > > > >> > a
> > > > > >> > > > >> > >>> > newer
> > > > > >> > > > >> > >>> > > > rack
> > > > > >> > > > >> > >>> > > > > > > >> config.
> > > > > >> > > > >> > >>> > > > > > > >> > If
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> RackLocator discovers
> > broker
> > > > ->
> > > > > >> rack
> > > > > >> > > > >> > >>> information at
> > > > > >> > > > >> > >>> > > > start
> > > > > >> > > > >> > >>> > > > > up
> > > > > >> > > > >> > >>> > > > > > > >> time,
> > > > > >> > > > >> > >>> > > > > > > >> > > any
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> change to a broker will
> > > > require
> > > > > >> > > bouncing
> > > > > >> > > > >> the
> > > > > >> > > > >> > >>> entire
> > > > > >> > > > >> > >>> > > > > cluster
> > > > > >> > > > >> > >>> > > > > > > >> since
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> createTopic requests can
> > be
> > > > sent
> > > > > >> to
> > > > > >> > any
> > > > > >> > > > >> node
> > > > > >> > > > >> > in
> > > > > >> > > > >> > >>> the
> > > > > >> > > > >> > >>> > > > > cluster.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> For this reason it may
> be
> > > > > simpler
> > > > > >> to
> > > > > >> > > have
> > > > > >> > > > >> each
> > > > > >> > > > >> > >>> node
> > > > > >> > > > >> > >>> > be
> > > > > >> > > > >> > >>> > > > > aware
> > > > > >> > > > >> > >>> > > > > > > of
> > > > > >> > > > >> > >>> > > > > > > >> its
> > > > > >> > > > >> > >>> > > > > > > >> > > own
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> rack and persist it in
> ZK
> > > > during
> > > > > >> > start
> > > > > >> > > up
> > > > > >> > > > >> > time.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> - A pluggable
> RackLocator
> > > > relies
> > > > > >> on
> > > > > >> > an
> > > > > >> > > > >> > external
> > > > > >> > > > >> > >>> > > service
> > > > > >> > > > >> > >>> > > > > > being
> > > > > >> > > > >> > >>> > > > > > > >> > > available
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> to
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> serve rack information.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> Out of curiosity, I
> looked
> > > up
> > > > > how
> > > > > >> a
> > > > > >> > > > couple
> > > > > >> > > > >> of
> > > > > >> > > > >> > >>> other
> > > > > >> > > > >> > >>> > > > > systems
> > > > > >> > > > >> > >>> > > > > > > deal
> > > > > >> > > > >> > >>> > > > > > > >> > with
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> zone/rack awareness.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> For Cassandra some
> > > interesting
> > > > > >> modes
> > > > > >> > > are:
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> (Property File
> > > configuration)
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>>
> > > > > >> > > > >> > >>> > > > > > > >> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > >
> > > > > >> > > > >> > >>> > > > > > > >> >
> > > > > >> > > > >> > >>> > > > > > > >>
> > > > > >> > > > >> > >>> > > > > > >
> > > > > >> > > > >> > >>> > > > > >
> > > > > >> > > > >> > >>> > > > >
> > > > > >> > > > >> > >>> > > >
> > > > > >> > > > >> > >>> > >
> > > > > >> > > > >> > >>> >
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> >
> > > > > >> > > > >>
> > > > > >> > > >
> > > > > >> > >
> > > > > >> >
> > > > > >>
> > > > >
> > > >
> > >
> >
> http://docs.datastax.com/en/cassandra/2.0/cassandra/architecture/architectureSnitchPFSnitch_t.html
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> (Dynamic inference)
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>>
> > > > > >> > > > >> > >>> > > > > > > >> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > >
> > > > > >> > > > >> > >>> > > > > > > >> >
> > > > > >> > > > >> > >>> > > > > > > >>
> > > > > >> > > > >> > >>> > > > > > >
> > > > > >> > > > >> > >>> > > > > >
> > > > > >> > > > >> > >>> > > > >
> > > > > >> > > > >> > >>> > > >
> > > > > >> > > > >> > >>> > >
> > > > > >> > > > >> > >>> >
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> >
> > > > > >> > > > >>
> > > > > >> > > >
> > > > > >> > >
> > > > > >> >
> > > > > >>
> > > > >
> > > >
> > >
> >
> http://docs.datastax.com/en/cassandra/2.0/cassandra/architecture/architectureSnitchRackInf_c.html
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> Voldemort does a static
> > node
> > > > ->
> > > > > >> zone
> > > > > >> > > > >> > assignment
> > > > > >> > > > >> > >>> > based
> > > > > >> > > > >> > >>> > > on
> > > > > >> > > > >> > >>> > > > > > > >> > > configuration.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> Aditya
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> On Wed, Sep 30, 2015 at
> > > 10:05
> > > > > AM,
> > > > > >> > Allen
> > > > > >> > > > >> Wang <
> > > > > >> > > > >> > >>> > > > > > > >> allenxw...@gmail.com
> > > > > >> > > > >> > >>> > > > > > > >> > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> wrote:
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > I would like to see if
> > we
> > > > can
> > > > > do
> > > > > >> > > both:
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > - Make RackLocator
> > > pluggable
> > > > > to
> > > > > >> > > > >> facilitate
> > > > > >> > > > >> > >>> > migration
> > > > > >> > > > >> > >>> > > > > with
> > > > > >> > > > >> > >>> > > > > > > >> > existing
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > broker-rack mapping
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > - Make rack an
> optional
> > > > > property
> > > > > >> > for
> > > > > >> > > > >> broker.
> > > > > >> > > > >> > >>> If
> > > > > >> > > > >> > >>> > rack
> > > > > >> > > > >> > >>> > > > is
> > > > > >> > > > >> > >>> > > > > > > >> available
> > > > > >> > > > >> > >>> > > > > > > >> > > > from
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > broker, treat it as
> > source
> > > > of
> > > > > >> > truth.
> > > > > >> > > > For
> > > > > >> > > > >> > users
> > > > > >> > > > >> > >>> > with
> > > > > >> > > > >> > >>> > > > > > existing
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> broker-rack
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > mapping somewhere
> else,
> > > they
> > > > > can
> > > > > >> > use
> > > > > >> > > > the
> > > > > >> > > > >> > >>> pluggable
> > > > > >> > > > >> > >>> > > way
> > > > > >> > > > >> > >>> > > > > or
> > > > > >> > > > >> > >>> > > > > > > they
> > > > > >> > > > >> > >>> > > > > > > >> > can
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> transfer
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > the mapping to the
> > broker
> > > > rack
> > > > > >> > > > property.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > One thing I am not
> sure
> > is
> > > > > what
> > > > > >> > > happens
> > > > > >> > > > >> at
> > > > > >> > > > >> > >>> rolling
> > > > > >> > > > >> > >>> > > > > upgrade
> > > > > >> > > > >> > >>> > > > > > > >> when
> > > > > >> > > > >> > >>> > > > > > > >> > we
> > > > > >> > > > >> > >>> > > > > > > >> > > > have
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > rack as a broker
> > property.
> > > > For
> > > > > >> > > brokers
> > > > > >> > > > >> with
> > > > > >> > > > >> > >>> older
> > > > > >> > > > >> > >>> > > > > version
> > > > > >> > > > >> > >>> > > > > > of
> > > > > >> > > > >> > >>> > > > > > > >> > Kafka,
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> will it
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > cause problem for
> them?
> > If
> > > > so,
> > > > > >> is
> > > > > >> > > there
> > > > > >> > > > >> any
> > > > > >> > > > >> > >>> > > > workaround?
> > > > > >> > > > >> > >>> > > > > I
> > > > > >> > > > >> > >>> > > > > > > also
> > > > > >> > > > >> > >>> > > > > > > >> > > think
> > > > > >> > > > >> > >>> > > > > > > >> > > > it
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > would be better not to
> > > have
> > > > > >> rack in
> > > > > >> > > the
> > > > > >> > > > >> > >>> controller
> > > > > >> > > > >> > >>> > > > wire
> > > > > >> > > > >> > >>> > > > > > > >> protocol
> > > > > >> > > > >> > >>> > > > > > > >> > > but
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> not
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > sure if it is
> > achievable.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > Thanks,
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > Allen
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > On Mon, Sep 28, 2015
> at
> > > 4:55
> > > > > PM,
> > > > > >> > Todd
> > > > > >> > > > >> > Palino <
> > > > > >> > > > >> > >>> > > > > > > >> tpal...@gmail.com>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> wrote:
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > I tend to like the
> > idea
> > > > of a
> > > > > >> > > > pluggable
> > > > > >> > > > >> > >>> locator.
> > > > > >> > > > >> > >>> > > For
> > > > > >> > > > >> > >>> > > > > > > >> example, we
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> already
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > have an interface
> for
> > > > > >> discovering
> > > > > >> > > > >> > >>> information
> > > > > >> > > > >> > >>> > > about
> > > > > >> > > > >> > >>> > > > > the
> > > > > >> > > > >> > >>> > > > > > > >> > physical
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> location
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > of servers. I don't
> > > relish
> > > > > the
> > > > > >> > idea
> > > > > >> > > > of
> > > > > >> > > > >> > >>> having to
> > > > > >> > > > >> > >>> > > > > > maintain
> > > > > >> > > > >> > >>> > > > > > > >> data
> > > > > >> > > > >> > >>> > > > > > > >> > in
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > multiple
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > places.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > -Todd
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > On Mon, Sep 28, 2015
> > at
> > > > 4:48
> > > > > >> PM,
> > > > > >> > > > Aditya
> > > > > >> > > > >> > >>> > Auradkar <
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > >
> > > > > aaurad...@linkedin.com.invalid
> > > > > >> >
> > > > > >> > > > wrote:
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > Thanks for
> starting
> > > this
> > > > > KIP
> > > > > >> > > Allen.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > I agree with Gwen
> > that
> > > > > >> having a
> > > > > >> > > > >> > >>> RackLocator
> > > > > >> > > > >> > >>> > > class
> > > > > >> > > > >> > >>> > > > > that
> > > > > >> > > > >> > >>> > > > > > > is
> > > > > >> > > > >> > >>> > > > > > > >> > > > pluggable
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > seems
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > to be too complex.
> > The
> > > > KIP
> > > > > >> > refers
> > > > > >> > > > to
> > > > > >> > > > >> > >>> > potentially
> > > > > >> > > > >> > >>> > > > > > non-ZK
> > > > > >> > > > >> > >>> > > > > > > >> > storage
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> for the
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > rack info which I
> > > don't
> > > > > >> think
> > > > > >> > is
> > > > > >> > > > >> > >>> necessary.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > Perhaps we can
> > persist
> > > > > this
> > > > > >> > info
> > > > > >> > > in
> > > > > >> > > > >> zk
> > > > > >> > > > >> > >>> under
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> /brokers/ids/<broker_id>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > similar to other
> > > broker
> > > > > >> > > properties
> > > > > >> > > > >> and
> > > > > >> > > > >> > >>> add a
> > > > > >> > > > >> > >>> > > > config
> > > > > >> > > > >> > >>> > > > > in
> > > > > >> > > > >> > >>> > > > > > > >> > > > KafkaConfig
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > called
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > "rack".
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > >
> > > > > >> > > > >> > >>> > > > > > >
> > > > > >> > > > >>
> {"jmx_port":-1,"endpoints":[...],"host":"xxx","port":yyy,
> > > > > >> > > > >> > >>> > > > > > > >> > > "rack":
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > "abc"}
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > Aditya
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > On Mon, Sep 28,
> 2015
> > > at
> > > > > 2:30
> > > > > >> > PM,
> > > > > >> > > > Gwen
> > > > > >> > > > >> > >>> Shapira
> > > > > >> > > > >> > >>> > <
> > > > > >> > > > >> > >>> > > > > > > >> > > g...@confluent.io
> > > > > >> > > > >> > >>> > > > > > > >> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > wrote:
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > Hi,
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > First, thanks
> for
> > > > > putting
> > > > > >> > out a
> > > > > >> > > > KIP
> > > > > >> > > > >> > for
> > > > > >> > > > >> > >>> > this.
> > > > > >> > > > >> > >>> > > > This
> > > > > >> > > > >> > >>> > > > > > is
> > > > > >> > > > >> > >>> > > > > > > >> super
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> important
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > for
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > production
> > > deployments
> > > > > of
> > > > > >> > > Kafka.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > Few questions:
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > 1) Are we sure
> we
> > > want
> > > > > "as
> > > > > >> > many
> > > > > >> > > > >> racks
> > > > > >> > > > >> > as
> > > > > >> > > > >> > >>> > > > > possible"?
> > > > > >> > > > >> > >>> > > > > > > I'd
> > > > > >> > > > >> > >>> > > > > > > >> > want
> > > > > >> > > > >> > >>> > > > > > > >> > > to
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > balance
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > between safety
> > (more
> > > > > >> racks)
> > > > > >> > and
> > > > > >> > > > >> > network
> > > > > >> > > > >> > >>> > > > > utilization
> > > > > >> > > > >> > >>> > > > > > > >> > (traffic
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> within a
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > rack
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > uses the
> > > > high-bandwidth
> > > > > >> TOR
> > > > > >> > > > >> switch).
> > > > > >> > > > >> > One
> > > > > >> > > > >> > >>> > > replica
> > > > > >> > > > >> > >>> > > > > on
> > > > > >> > > > >> > >>> > > > > > a
> > > > > >> > > > >> > >>> > > > > > > >> > > different
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> rack
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > and
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > the rest on same
> > > rack
> > > > > (if
> > > > > >> > > > possible)
> > > > > >> > > > >> > >>> sounds
> > > > > >> > > > >> > >>> > > > better
> > > > > >> > > > >> > >>> > > > > to
> > > > > >> > > > >> > >>> > > > > > > me.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > 2) Rack-locator
> > > class
> > > > > >> seems
> > > > > >> > > > overly
> > > > > >> > > > >> > >>> complex
> > > > > >> > > > >> > >>> > > > > compared
> > > > > >> > > > >> > >>> > > > > > to
> > > > > >> > > > >> > >>> > > > > > > >> > > adding a
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > rack.number
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > property to the
> > > broker
> > > > > >> > > properties
> > > > > >> > > > >> > file.
> > > > > >> > > > >> > >>> Why
> > > > > >> > > > >> > >>> > do
> > > > > >> > > > >> > >>> > > > we
> > > > > >> > > > >> > >>> > > > > > want
> > > > > >> > > > >> > >>> > > > > > > >> > that?
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > Gwen
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > On Mon, Sep 28,
> > 2015
> > > > at
> > > > > >> 12:15
> > > > > >> > > PM,
> > > > > >> > > > >> > Allen
> > > > > >> > > > >> > >>> > Wang <
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> allenxw...@gmail.com>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > wrote:
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > > Hello Kafka
> > > > > Developers,
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > > I just created
> > > > KIP-36
> > > > > >> for
> > > > > >> > > rack
> > > > > >> > > > >> aware
> > > > > >> > > > >> > >>> > replica
> > > > > >> > > > >> > >>> > > > > > > >> assignment.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>>
> > > > > >> > > > >> > >>> > > > > > > >> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > >
> > > > > >> > > > >> > >>> > > > > > > >> >
> > > > > >> > > > >> > >>> > > > > > > >>
> > > > > >> > > > >> > >>> > > > > > >
> > > > > >> > > > >> > >>> > > > > >
> > > > > >> > > > >> > >>> > > > >
> > > > > >> > > > >> > >>> > > >
> > > > > >> > > > >> > >>> > >
> > > > > >> > > > >> > >>> >
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> >
> > > > > >> > > > >>
> > > > > >> > > >
> > > > > >> > >
> > > > > >> >
> > > > > >>
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-36+Rack+aware+replica+assignment
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > > The goal is to
> > > > utilize
> > > > > >> the
> > > > > >> > > > >> isolation
> > > > > >> > > > >> > >>> > > provided
> > > > > >> > > > >> > >>> > > > by
> > > > > >> > > > >> > >>> > > > > > the
> > > > > >> > > > >> > >>> > > > > > > >> > racks
> > > > > >> > > > >> > >>> > > > > > > >> > > in
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> data
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > center
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > > and distribute
> > > > > replicas
> > > > > >> to
> > > > > >> > > > racks
> > > > > >> > > > >> to
> > > > > >> > > > >> > >>> > provide
> > > > > >> > > > >> > >>> > > > > fault
> > > > > >> > > > >> > >>> > > > > > > >> > > tolerance.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > > Comments are
> > > > welcome.
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > > Thanks,
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > > Allen
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> > >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>> >
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >>
> > > > > >> > > > >> > >>> > > > > > > >> > > > >
> > > > > >> > > > >> > >>> > > > > > > >> > > >
> > > > > >> > > > >> > >>> > > > > > > >> > >
> > > > > >> > > > >> > >>> > > > > > > >> >
> > > > > >> > > > >> > >>> > > > > > > >>
> > > > > >> > > > >> > >>> > > > > > > >
> > > > > >> > > > >> > >>> > > > > > > >
> > > > > >> > > > >> > >>> > > > > > >
> > > > > >> > > > >> > >>> > > > > >
> > > > > >> > > > >> > >>> > > > >
> > > > > >> > > > >> > >>> > > >
> > > > > >> > > > >> > >>> > >
> > > > > >> > > > >> > >>> >
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> > >>> --
> > > > > >> > > > >> > >>> Thanks,
> > > > > >> > > > >> > >>> Neha
> > > > > >> > > > >> > >>>
> > > > > >> > > > >> > >>
> > > > > >> > > > >> > >>
> > > > > >> > > > >> > >
> > > > > >> > > > >> >
> > > > > >> > > > >>
> > > > > >> > > > >
> > > > > >> > > > >
> > > > > >> > > >
> > > > > >> > >
> > > > > >> >
> > > > > >>
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to