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

NullPointerException in KafkaConsumer with group.instance.id

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 2.3.0
    • 2.3.2
    • clients
    • None

    Description

      When using group.instance.id=myUniqId[0], the KafkaConsumer's constructor throws a NullpointerException in close():

       

      Caused by: java.lang.NullPointerException
       at org.apache.kafka.clients.consumer.KafkaConsumer.close(KafkaConsumer.java:2204)
       at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:825)
       at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:664)
       at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:644)
      
      

      It turns out that the exception is thrown because the log member is not yet initialized (still null) in the constructor when the original exception is handled. The original exception is thrown before log is initailized.

      The side effect of this error is, that close does does not cleanup resources as clean is supposed to do.

      The used consumer properties for reference:

       

      key.deserializer=com.ibm.streamsx.kafka.serialization....
      request.timeout.ms=25000
      value.deserializer=com.ibm.streamsx.kafka.serialization....
      client.dns.lookup=use_all_dns_ips
      metadata.max.age.ms=2000
      enable.auto.commit=false
      group.instance.id=myUniqId[0]
      max.poll.interval.ms=300000
      group.id=consumer-0
      metric.reporters=com.ibm.streamsx.kafka.clients.consum...
      reconnect.backoff.max.ms=10000
      bootstrap.servers=localhost:9092
      max.poll.records=50
      session.timeout.ms=20000
      client.id=C-J37-ReceivedMessages[0]
      allow.auto.create.topics=false
      metrics.sample.window.ms=10000
      retry.backoff.ms=500
      reconnect.backoff.ms=250

      Expected behaviour: throw exception indicating that something is wrong with the chosen group.instance.id.

      The documentation does not tell anything about valid values for group.instance.id.

      Reproduce:

       

       

       
      import java.util.Properties;
      import org.apache.kafka.clients.consumer.ConsumerConfig;
      import org.apache.kafka.clients.consumer.KafkaConsumer;
      
      public class Main {
          public static void main(String[] args) {
              Properties props = new Properties();
              props.put (ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
              props.put (ConsumerConfig.GROUP_ID_CONFIG, "group-Id1");
              props.put (ConsumerConfig.GROUP_INSTANCE_ID_CONFIG, "myUniqId[0]");
              props.put (ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
              props.put (ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
              KafkaConsumer c = new KafkaConsumer (props);
          }
      }
      
      
      Exception in thread "main" java.lang.NullPointerException
      	at org.apache.kafka.clients.consumer.KafkaConsumer.close(KafkaConsumer.java:2204)
      	at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:825)
      	at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:664)
      	at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:644)
      	at Main.main(Main.java:15)
      

       

      Attachments

        Issue Links

          Activity

            People

              huxi_2b huxihx
              RolefH Rolef Heinrich
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: