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 > > > > >> > > > >> > >>> > > > > >> > > > >> > >> > > > > >> > > > >> > >> > > > > >> > > > >> > > > > > > >> > > > >> > > > > > >> > > > >> > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > > > > > > > > > > >