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