[ https://issues.apache.org/jira/browse/DRILL-6111?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Anton Gozhiy closed DRILL-6111. ------------------------------- Kafka fix tested with Drill version 1.13.0-SNAPSHOT (commit id: cac2882d5a9e22fbc251e4caf622fe30242ad557) Cases verified: # Original issue wasn't reproduced # Submitted physical/logical plan # Tried with different queries (filters, agg functions, unions, joins etc) # Tried to rerun queries > NullPointerException with Kafka Storage Plugin > ---------------------------------------------- > > Key: DRILL-6111 > URL: https://issues.apache.org/jira/browse/DRILL-6111 > Project: Apache Drill > Issue Type: Bug > Components: Storage - Other > Affects Versions: 1.12.0 > Reporter: Jared Stehler > Assignee: Arina Ielchiieva > Priority: Major > Fix For: 1.13.0 > > > I'm unable to query using the kafka storage plugin; queries are failing with > a NPE which *seems* like a json typo: > {code:java} > org.apache.drill.common.exceptions.UserException: SYSTEM ERROR: > NullPointerException > Fragment 1:2 > [Error Id: 49d5f72f-0187-480b-8b29-6eeeb5adc88f on 10.80.53.16:31820] > at > org.apache.drill.common.exceptions.UserException$Builder.build(UserException.java:586) > ~[drill-common-1.12.0.jar:1.12.0] > at > org.apache.drill.exec.work.fragment.FragmentExecutor.sendFinalState(FragmentExecutor.java:298) > [drill-java-exec-1.12.0.jar:1.12.0] > at > org.apache.drill.exec.work.fragment.FragmentExecutor.cleanup(FragmentExecutor.java:160) > [drill-java-exec-1.12.0.jar:1.12.0] > at > org.apache.drill.exec.work.fragment.FragmentExecutor.run(FragmentExecutor.java:267) > [drill-java-exec-1.12.0.jar:1.12.0] > at > org.apache.drill.common.SelfCleaningRunnable.run(SelfCleaningRunnable.java:38) > [drill-common-1.12.0.jar:1.12.0] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > [na:1.8.0_131] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > [na:1.8.0_131] > at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131] > Caused by: com.fasterxml.jackson.databind.JsonMappingException: Instantiation > of [simple type, class org.apache.drill.exec.store.kafka.KafkaSubScan] value > failed (java.lang.NullPointerException): null > at [Source: { > "pop" : "single-sender", > "@id" : 0, > "receiver-major-fragment" : 0, > "receiver-minor-fragment" : 0, > "child" : { > "pop" : "selection-vector-remover", > "@id" : 1, > "child" : { > "pop" : "limit", > "@id" : 2, > "child" : { > "pop" : "kafka-partition-scan", > "@id" : 3, > "userName" : "", > "columns" : [ "`*`" ], > "partitionSubScanSpecList" : [ { > "topicName" : "ingest-prime", > "partitionId" : 5, > "startOffset" : 8824294, > "endOffset" : 8874172 > }, { > "topicName" : "ingest-prime", > "partitionId" : 1, > "startOffset" : 8826346, > "endOffset" : 8874623 > }, { > "topicName" : "ingest-prime", > "partitionId" : 6, > "startOffset" : 8824744, > "endOffset" : 8874617 > } ], > "initialAllocation" : 1000000, > "maxAllocation" : 10000000000, > "KafkaStoragePluginConfig" : { > "type" : "kafka", > "kafkaConsumerProps" : { > "key.deserializer" : > "org.apache.kafka.common.serialization.ByteArrayDeserializer", > "auto.offset.reset" : "earliest", > "bootstrap.servers" : > "kafkas.dev3.master.us-west-2.prod.aws.intellify.io:9092", > "enable.auto.commit" : "true", > "group.id" : "drill-query-consumer-1", > "value.deserializer" : > "org.apache.kafka.common.serialization.ByteArrayDeserializer", > "session.timeout.ms" : "30000" > }, > "enabled" : true > }, > "cost" : 0.0 > }, > "first" : 0, > "last" : 2, > "initialAllocation" : 1000000, > "maxAllocation" : 10000000000, > "cost" : 2.0 > }, > "initialAllocation" : 1000000, > "maxAllocation" : 10000000000, > "cost" : 2.0 > }, > "destination" : "CgsxMC44MC41My4xNhDM+AEYzfgBIM74ATIGMS4xMi4wOAA=", > "initialAllocation" : 1000000, > "maxAllocation" : 10000000000, > "cost" : 2.0 > }; line: 49, column: 7] (through reference chain: > org.apache.drill.exec.physical.config.SingleSender["child"]->org.apache.drill.exec.physical.config.SelectionVectorRemover["child"]->org.apache.drill.exec.physical.config.Limit["child"]) > at > com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:263) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.wrapAsJsonMappingException(StdValueInstantiator.java:453) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.rewrapCtorProblem(StdValueInstantiator.java:472) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromObjectWith(StdValueInstantiator.java:258) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator.build(PropertyBasedCreator.java:135) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:444) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1127) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:298) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithObjectId(BeanDeserializerBase.java:1098) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:166) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:135) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:120) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:91) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:142) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:493) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:465) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:384) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1127) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:298) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithObjectId(BeanDeserializerBase.java:1098) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:166) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:135) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:120) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:91) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:142) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:493) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:465) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:384) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1127) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:298) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithObjectId(BeanDeserializerBase.java:1098) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:166) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:135) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:120) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:91) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:142) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:493) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:465) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:384) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1127) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:298) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithObjectId(BeanDeserializerBase.java:1098) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:166) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:135) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:120) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:91) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:142) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.impl.TypeWrappedDeserializer.deserialize(TypeWrappedDeserializer.java:63) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1579) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1200) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > org.apache.drill.exec.planner.PhysicalPlanReader.readFragmentRoot(PhysicalPlanReader.java:101) > ~[drill-java-exec-1.12.0.jar:1.12.0] > at > org.apache.drill.exec.work.fragment.FragmentExecutor.run(FragmentExecutor.java:204) > [drill-java-exec-1.12.0.jar:1.12.0] > ... 4 common frames omitted > Caused by: java.lang.NullPointerException: null > at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:210) > ~[guava-18.0.jar:na] > at com.google.common.cache.LocalCache.get(LocalCache.java:3936) > ~[guava-18.0.jar:na] > at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941) > ~[guava-18.0.jar:na] > at > com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824) > ~[guava-18.0.jar:na] > at > org.apache.drill.exec.store.StoragePluginRegistryImpl.getPlugin(StoragePluginRegistryImpl.java:311) > ~[drill-java-exec-1.12.0.jar:1.12.0] > at > org.apache.drill.exec.store.kafka.KafkaSubScan.<init>(KafkaSubScan.java:62) > ~[drill-storage-kafka-1.12.0.jar:1.12.0] > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) > ~[na:1.8.0_131] > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) > ~[na:1.8.0_131] > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > ~[na:1.8.0_131] > at java.lang.reflect.Constructor.newInstance(Constructor.java:423) > ~[na:1.8.0_131] > at > com.fasterxml.jackson.databind.introspect.AnnotatedConstructor.call(AnnotatedConstructor.java:124) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > at > com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromObjectWith(StdValueInstantiator.java:256) > ~[jackson-databind-2.7.9.1.jar:2.7.9.1] > ... 52 common frames omitted{code} > Looking at the source, it seems like it's expecting the json field to be named > {code:java} > @JsonProperty("kafkaStoragePluginConfig"){code} > (note the lower-cased 'k' at the start), but in the snippet in the error > message it starts with a capital 'K'. -- This message was sent by Atlassian JIRA (v7.6.3#76005)