Updated KIP regarding how broker JSON version will be handled and new
procedure of upgrade.

On Wed, Jan 13, 2016 at 10:58 AM, Allen Wang <allenxw...@gmail.com> wrote:

> Hi Jun,
>
> I feel it is a bit complicated and unconventional to have a major release
> have dependency on a minor release. It would also double the cost of
> releasing.
>
> On the other hand, if we want to skip the minor release and fix
> ZkUtils.getBrokerInfo() in 0.9.1, it would require all 0.9.0 clients to
> upgrade first to 0.9.1 before the upgrading brokers, which is also a bit
> unconventional. It is also problematic since 0.9.1 client will expect rack
> field (even though it may be encoded as null) when it tries to deserialize
> TopicMetadataResponse.
>
> So it looks like we have to have a minor release first.
>
> Thanks,
> Allen
>
>
>
> On Tue, Jan 12, 2016 at 6:27 PM, Jun Rao <j...@confluent.io> wrote:
>
>> 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