I'm using Spark Streaming 2.0.1 with Kafka 0.10, sometimes I get this exception and Spark dies.
I couldn't see any error or problem among the machines, anybody has the reason about this error? java.lang.IllegalStateException: This consumer has already been closed. at org.apache.kafka.clients.consumer.KafkaConsumer.acquireAndEnsureOpen(KafkaConsumer.java:1787) ~[kafka-clients-1.0.0.jar:na] at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1091) ~[kafka-clients-1.0.0.jar:na] at org.apache.spark.streaming.kafka010.DirectKafkaInputDStream.paranoidPoll(DirectKafkaInputDStream.scala:169) ~[spark-streaming-kafka-0-10_2.11-2.0.2.jar:2.0.2] at org.apache.spark.streaming.kafka010.DirectKafkaInputDStream.latestOffsets(DirectKafkaInputDStream.scala:188) ~[spark-streaming-kafka-0-10_2.11-2.0.2.jar:2.0.2] at org.apache.spark.streaming.kafka010.DirectKafkaInputDStream.compute(DirectKafkaInputDStream.scala:215) ~[spark-streaming-kafka-0-10_2.11-2.0.2.jar:2.0.2] at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1$$anonfun$apply$7.apply(DStream.scala:341) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1$$anonfun$apply$7.apply(DStream.scala:341) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58) ~[scala-library-2.11.11.jar:na] at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1.apply(DStream.scala:340) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1.apply(DStream.scala:340) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at org.apache.spark.streaming.dstream.DStream.createRDDWithLocalProperties(DStream.scala:415) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1.apply(DStream.scala:335) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1.apply(DStream.scala:333) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at scala.Option.orElse(Option.scala:289) ~[scala-library-2.11.11.jar:na] at org.apache.spark.streaming.dstream.DStream.getOrCompute(DStream.scala:330) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at org.apache.spark.streaming.dstream.ForEachDStream.generateJob(ForEachDStream.scala:48) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at org.apache.spark.streaming.DStreamGraph$$anonfun$1.apply(DStreamGraph.scala:117) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at org.apache.spark.streaming.DStreamGraph$$anonfun$1.apply(DStreamGraph.scala:116) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241) ~[scala-library-2.11.11.jar:na] at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241) ~[scala-library-2.11.11.jar:na] at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59) ~[scala-library-2.11.11.jar:na] at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48) ~[scala-library-2.11.11.jar:na] at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241) ~[scala-library-2.11.11.jar:na] at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104) ~[scala-library-2.11.11.jar:na] at org.apache.spark.streaming.DStreamGraph.generateJobs(DStreamGraph.scala:116) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at org.apache.spark.streaming.scheduler.JobGenerator$$anonfun$3.apply(JobGenerator.scala:249) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at org.apache.spark.streaming.scheduler.JobGenerator$$anonfun$3.apply(JobGenerator.scala:247) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at scala.util.Try$.apply(Try.scala:192) ~[scala-library-2.11.11.jar:na] at org.apache.spark.streaming.scheduler.JobGenerator.generateJobs(JobGenerator.scala:247) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at org.apache.spark.streaming.scheduler.JobGenerator.org$apache$spark$streaming$scheduler$JobGenerator$$processEvent(JobGenerator.scala:183) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at org.apache.spark.streaming.scheduler.JobGenerator$$anon$1.onReceive(JobGenerator.scala:89) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at org.apache.spark.streaming.scheduler.JobGenerator$$anon$1.onReceive(JobGenerator.scala:88) ~[spark-streaming_2.11-2.0.2.15.jar:2.0.2.15] at org.apache.spark.util.EventLoop$$anon$1.run(EventLoop.scala:48) ~[spark-core_2.11-2.0.2.15.jar:2.0.2.15]