Jason Rosenberg created KAFKA-1180: -------------------------------------- Summary: WhiteList topic filter gets a NullPointerException on complex Regex Key: KAFKA-1180 URL: https://issues.apache.org/jira/browse/KAFKA-1180 Project: Kafka Issue Type: Bug Components: consumer Affects Versions: 0.8.0 Reporter: Jason Rosenberg Assignee: Neha Narkhede
We are needing to create a stream selector that essentially combines the logic of the BlackList and WhiteList classes (which is not easily exposed in the high-level consumer api). That is, we want to select a topic that contains a certain prefix, as long as it doesn't also contain a secondary string. This should be easy to do with ordinary java Regex's, but we're running into some issues, trying to do this with the WhiteList class only. We have a pattern that uses negative lookahead, like this: "test-(?!bad\\b)[\\w]+" So this should select a topic like: "test-good", but exclude a topic like "test-bad", and also exclude a topic without the "test" prefix, like "foo-bar". Instead, what we see is a NullPointerException in the ConsumerIterator, and the consumer just hangs, if we send a message like "test-topic" followed by "test-bad": 21700 [ConsumerFetcherThread-group1_square-1a7ac0.local-1386869343370-dc19c7dc-0-1946108683] ERROR kafka.consumer.ConsumerFetcherThread - [ConsumerFetcherThread-group1_square-1a7ac0.local-1386869343370-dc19c7dc-0-1946108683], Error due to kafka.common.KafkaException: error processing data for partition [test-bad,0] offset 0 at kafka.server.AbstractFetcherThread$$anonfun$processFetchRequest$1$$anonfun$apply$mcV$sp$2.apply(AbstractFetcherThread.scala:137) at kafka.server.AbstractFetcherThread$$anonfun$processFetchRequest$1$$anonfun$apply$mcV$sp$2.apply(AbstractFetcherThread.scala:109) at scala.collection.immutable.Map$Map1.foreach(Map.scala:105) at kafka.server.AbstractFetcherThread$$anonfun$processFetchRequest$1.apply$mcV$sp(AbstractFetcherThread.scala:109) at kafka.server.AbstractFetcherThread$$anonfun$processFetchRequest$1.apply(AbstractFetcherThread.scala:109) at kafka.server.AbstractFetcherThread$$anonfun$processFetchRequest$1.apply(AbstractFetcherThread.scala:109) at kafka.utils.Utils$.inLock(Utils.scala:565) at kafka.server.AbstractFetcherThread.processFetchRequest(AbstractFetcherThread.scala:108) at kafka.server.AbstractFetcherThread.doWork(AbstractFetcherThread.scala:86) at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:51) Caused by: java.lang.NullPointerException at kafka.consumer.PartitionTopicInfo.enqueue(PartitionTopicInfo.scala:60) at kafka.consumer.ConsumerFetcherThread.processPartitionData(ConsumerFetcherThread.scala:49) at kafka.server.AbstractFetcherThread$$anonfun$processFetchRequest$1$$anonfun$apply$mcV$sp$2.apply(AbstractFetcherThread.scala:128) ... 9 more -- This message was sent by Atlassian JIRA (v6.1.4#6159)