Index: core/src/test/scala/unit/kafka/consumer/ZookeeperConsumerConnectorTest.scala
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/src/test/scala/unit/kafka/consumer/ZookeeperConsumerConnectorTest.scala	(revision 7130da90a9ee9e6fb4beb2a2a6ab05c06c9bfac4)
+++ core/src/test/scala/unit/kafka/consumer/ZookeeperConsumerConnectorTest.scala	(revision )
@@ -17,20 +17,22 @@
 
 package kafka.consumer
 
+import java.util.Collections
+
 import junit.framework.Assert._
+import kafka.common.MessageStreamsExistException
 import kafka.integration.KafkaServerTestHarness
-import kafka.server._
-import scala.collection._
-import org.scalatest.junit.JUnit3Suite
 import kafka.message._
 import kafka.serializer._
-import org.I0Itec.zkclient.ZkClient
-import kafka.utils._
-import java.util.Collections
-import org.apache.log4j.{Logger, Level}
+import kafka.server._
 import kafka.utils.TestUtils._
-import kafka.common.MessageStreamsExistException
+import kafka.utils._
+import org.I0Itec.zkclient.ZkClient
+import org.apache.log4j.{Level, Logger}
+import org.scalatest.junit.JUnit3Suite
 
+import scala.collection._
+
 class ZookeeperConsumerConnectorTest extends JUnit3Suite with KafkaServerTestHarness with Logging {
 
   val RebalanceBackoffMs = 5000
@@ -60,7 +62,20 @@
   override def tearDown() {
     super.tearDown()
   }
+  def testUnresolvedHost(): Unit ={
+    val requestHandlerLogger = Logger.getLogger(classOf[KafkaRequestHandler])
+    requestHandlerLogger.setLevel(Level.FATAL)
 
+    val consumerConfig100 = new ConsumerConfig(
+      TestUtils.createConsumerProperties(zkConnect, group, consumer0)) {
+      override val consumerTimeoutMs = 200
+      override val consumerId = None
+    }
+
+
+
+    val zkConsumerConnector100 = new ZookeeperConsumerConnector(consumerConfig100, true)
+  }
   def testBasic() {
     val requestHandlerLogger = Logger.getLogger(classOf[KafkaRequestHandler])
     requestHandlerLogger.setLevel(Level.FATAL)
@@ -348,7 +363,7 @@
     val children = zkClient.getChildren(path)
     Collections.sort(children)
     val childrenAsSeq : Seq[java.lang.String] = {
-      import JavaConversions._
+      import scala.collection.JavaConversions._
       children.toSeq
     }
     childrenAsSeq.map(partition =>
Index: core/src/main/scala/kafka/consumer/ZookeeperConsumerConnector.scala
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- core/src/main/scala/kafka/consumer/ZookeeperConsumerConnector.scala	(revision 7130da90a9ee9e6fb4beb2a2a6ab05c06c9bfac4)
+++ core/src/main/scala/kafka/consumer/ZookeeperConsumerConnector.scala	(revision )
@@ -17,7 +17,7 @@
 
 package kafka.consumer
 
-import java.net.InetAddress
+import java.net.{InetAddress, NetworkInterface, UnknownHostException}
 import java.util.UUID
 import java.util.concurrent._
 import java.util.concurrent.atomic._
@@ -110,14 +110,51 @@
 
   val consumerIdString = {
     var consumerUuid : String = null
+    var hostname : String = "localhost"
     config.consumerId match {
       case Some(consumerId) // for testing only
       => consumerUuid = consumerId
       case None // generate unique consumerId automatically
       => val uuid = UUID.randomUUID()
+        try {
+          hostname = InetAddress.getLocalHost.getHostName
+        }
+        catch {
+          case eUH: UnknownHostException =>
+            //KAFKA-1615: catch the UnknownHostException and use IP instead
+            //for ID Generation
+            warn("Unknown Host Exception caught while generating ID",eUH)
+
+            val interfaces = NetworkInterface.getNetworkInterfaces
+
+            while (interfaces.hasMoreElements){
+              val nic = interfaces.nextElement
+              val addresses = nic.getInetAddresses
+              while(hostname == null && addresses.hasMoreElements){
+                val address = addresses.nextElement
+                if (!address.isLoopbackAddress){
+                  hostname = address.getHostAddress
+
+                }
+              }
+            }
+
+
+
+          case e: Throwable =>
+            //log other errors caught
+          error("Error while generating consumerId",e)
+
+        } finally {
+
-      consumerUuid = "%s-%d-%s".format(
+          consumerUuid = "%s-%d-%s".format(
-        InetAddress.getLocalHost.getHostName, System.currentTimeMillis,
+            hostname, System.currentTimeMillis,
-        uuid.getMostSignificantBits().toHexString.substring(0,8))
+            uuid.getMostSignificantBits().toHexString.substring(0, 8))
+        }
+
+
+
+
     }
     config.groupId + "_" + consumerUuid
   }
