NULLABLE_STRING was just committed to trunk: https://github.com/apache/kafka/pull/866
Also we should pull in this PR before making changes to UpdateMetadata: https://github.com/apache/kafka/pull/896 Thanks, Grant On Fri, Feb 12, 2016 at 8:16 PM, Joel Koshy <jjkosh...@gmail.com> wrote: > We are adding a NULLABLE_STRING type (KAFKA-3088) but you would then need > to evolve the UpdateMetadata request. Regardless, it seems better to just > go with an empty string. > > On Fri, Feb 12, 2016 at 5:38 PM, Allen Wang <allenxw...@gmail.com> wrote: > > > In implementing changes to UpdateMetadataRequest, I noticed > > that org.apache.kafka.common.protocol.types.STRING does not allow null > > value. This creates a problem for rack as it is an optional field for > > broker. In Scala, it is declared as Option[String]. I was planning to > > transmit the rack as null in the protocol if rack is not configured for > the > > broker. > > > > There are two options: > > > > - Transmit the rack as empty string if rack is not configured for the > > broker. This implies that empty string cannot be used for the rack we > need > > to do this validation. This is reasonable since empty string for the rack > > is most likely a user error and I cannot think of a use case why users > > would pick empty string as rack. It does create some inconsistency > between > > what gets transmitted on the wire vs. the actual value in broker runtime. > > > > - Change STRING to allow null. I think that is also reasonable since > > ApiUtils.writeShortString and ApiUtils.readShortString APIs support null. > > However, I would like to know if there is any particular reason not to > > allow null for STRING. > > > > Any opinions? > > > > Thanks, > > Allen > > > > > > On Wed, Jan 20, 2016 at 1:50 PM, Allen Wang <allenxw...@gmail.com> > wrote: > > > > > Hi Arun, > > > > > > This is about making replica assignment rack aware. It is not about > > making > > > replica assignment algorithm pluggable. I think plug-ability should be > > > discussed separately from this KIP. > > > > > > Thanks, > > > Allen > > > > > > > > > On Tue, Jan 19, 2016 at 11:16 PM, Arun Mahadevan <ar...@apache.org> > > wrote: > > > > > >> Nice feature. Is this going to support only rack aware assignments? > > >> > > >> May be nice to make the implementation pluggable (with rack aware > being > > >> one) so that other kind of assignment algorithms can be plugged in > > future. > > >> > > >> - Arun > > >> > > >> > > >> > > >> On 1/15/16, 12:22 AM, "Allen Wang" <allenxw...@gmail.com> wrote: > > >> > > >> >Thanks Ismael. KIP is updated to use 0.9.0.0 and add link to the > JIRA. > > >> > > > >> > > > >> >On Thu, Jan 14, 2016 at 8:46 AM, Ismael Juma <ism...@juma.me.uk> > > wrote: > > >> > > > >> >> On Thu, Jan 14, 2016 at 1:24 AM, Allen Wang <allenxw...@gmail.com> > > >> wrote: > > >> >> > > >> >> > Updated KIP regarding how broker JSON version will be handled and > > new > > >> >> > procedure of upgrade. > > >> >> > > >> >> > > >> >> Thanks Allen. In the following text, I think we should replace > 0.9.0 > > >> with > > >> >> 0.9.0.0: > > >> >> > > >> >> "Due to a bug introduced in 0.9.0 in ZkUtils.getBrokerInfo(), old > > >> clients > > >> >> will throw an exception when it sees the broker JSON version is > not 1 > > >> or 2. > > >> >> Therefore, *a minor release 0.9.0.1 is required* to fix the problem > > >> first > > >> >> so that old clients can parse future version of broker JSON in > > >> ZooKeeper. > > >> >> That means 0.9.0 clients must be upgraded to 0.9.0.1 before 0.9.1 > > >> upgrade > > >> >> can start. In addition, since ZkUtils.getBrokerInfo() is also used > by > > >> >> broker, version specific code has to be used when registering > broker > > >> with > > >> >> ZooKeeper" > > >> >> > > >> >> Also, I posted a PR for supporting version > 2 in 0.9.0.1 and > trunk: > > >> >> > > >> >> https://github.com/apache/kafka/pull/773 > > >> >> > > >> >> Ismael > > >> >> > > >> > > >> > > > > > > -- Grant Henke Software Engineer | Cloudera gr...@cloudera.com | twitter.com/gchenke | linkedin.com/in/granthenke