Uploaded image for project: 'Kafka'
  1. Kafka
  2. KAFKA-2327

broker doesn't start if config defines advertised.host but not advertised.port

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 0.9.0.0
    • 0.9.0.0
    • None
    • None

    Description

      To reproduce locally, in server.properties, define "advertised.host" and "port", but not "advertised.port"

      port=9092
      advertised.host.name=localhost

      Then start zookeeper and try to start kafka. The result is an error like so:
      [2015-07-09 11:29:20,760] FATAL (kafka.Kafka$)
      kafka.common.KafkaException: Unable to parse PLAINTEXT://localhost:null to a broker endpoint
      at kafka.cluster.EndPoint$.createEndPoint(EndPoint.scala:49)
      at kafka.utils.CoreUtils$$anonfun$listenerListToEndPoints$1.apply(CoreUtils.scala:309)
      at kafka.utils.CoreUtils$$anonfun$listenerListToEndPoints$1.apply(CoreUtils.scala:309)
      at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
      at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
      at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
      at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:34)
      at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
      at scala.collection.AbstractTraversable.map(Traversable.scala:105)
      at kafka.utils.CoreUtils$.listenerListToEndPoints(CoreUtils.scala:309)
      at kafka.server.KafkaConfig.getAdvertisedListeners(KafkaConfig.scala:728)
      at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:668)
      at kafka.server.KafkaConfig$.fromProps(KafkaConfig.scala:541)
      at kafka.Kafka$.main(Kafka.scala:58)
      at kafka.Kafka.main(Kafka.scala)

      Looks like this was changed in 5c9040745466945a04ea0315de583ccdab0614ac

      the cause seems to be in KafkaConfig.scala in the getAdvertisedListeners method, and I believe the fix is (starting at line 727)

      ...
          } else if (getString(KafkaConfig.AdvertisedHostNameProp) != null || getInt(KafkaConfig.AdvertisedPortProp) != null) {
            CoreUtils.listenerListToEndPoints("PLAINTEXT://" +
                  getString(KafkaConfig.AdvertisedHostNameProp) + ":" + getInt(KafkaConfig.AdvertisedPortProp))
      ...
      

      ->

          } else if (getString(KafkaConfig.AdvertisedHostNameProp) != null || getInt(KafkaConfig.AdvertisedPortProp) != null) {
            CoreUtils.listenerListToEndPoints("PLAINTEXT://" +
                  advertisedHostName + ":" + advertisedPort
      

      Attachments

        Activity

          People

            granders Geoff Anderson
            granders Geoff Anderson
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: