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
- links to