question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

[Issue]: NullPointerException for enum type

See original GitHub issue

What happened?

When I try so send a message with an enum I get an error. All the other fields work fine.

The Schema is: { "type": "record", "name": "MyFruitsValue", "namespace": "de.mycomp.avro.model", "fields": [ { "name": "aggregateAttribute", "type": { "type": "record", "name": "AggregateAttribute", "fields": [ { "name": "fruitList", "type": [ "null", { "type": "record", "name": "FruitList", "fields": [ { "name": "fruits", "type": [ "null", { "type": "array", "items": { "type": "record", "name": "Fruit", "fields": [ { "name": "fruitType", "type": [ "null", { "type": "enum", "name": "FruitType", "symbols": [ "MY_ENUM_1", "MY_ENUM_2", "MY_ENUM_3" ] } ], "default": null } ] } } ], "default": null } ] } ], "default": null } ] } } ] }

Maybe also of interest, loading the subject doesn’t work for the most fields. Only the top level elements get loaded correctly, the other elements (everything below aggregateAttribute for example) don’t work, so I had to enter the fields manually. But like I said, it worked for everything (also for another object in fruits array) but not for the enum. jmx.zip

KloadGen Version

KLoadGen 4.8.1

Relevant log output

org.apache.kafka.common.errors.SerializationException: Error serializing Avro message
	at io.confluent.kafka.serializers.AbstractKafkaAvroSerializer.serializeImpl(AbstractKafkaAvroSerializer.java:154) ~[kloadgen-4.8.1.jar:?]
	at io.confluent.kafka.serializers.KafkaAvroSerializer.serialize(KafkaAvroSerializer.java:61) ~[kloadgen-4.8.1.jar:?]
	at org.apache.kafka.common.serialization.Serializer.serialize(Serializer.java:62) ~[kloadgen-4.8.1.jar:?]
	at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:945) ~[kloadgen-4.8.1.jar:?]
	at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:905) ~[kloadgen-4.8.1.jar:?]
	at net.coru.kloadgen.sampler.KafkaSchemaSampler.runTest(KafkaSchemaSampler.java:164) [kloadgen-4.8.1.jar:?]
	at org.apache.jmeter.protocol.java.sampler.JavaSampler.sample(JavaSampler.java:197) [ApacheJMeter_java.jar:5.4.1]
	at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:638) [ApacheJMeter_core.jar:5.4.1]
	at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558) [ApacheJMeter_core.jar:5.4.1]
	at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) [ApacheJMeter_core.jar:5.4.1]
	at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) [ApacheJMeter_core.jar:5.4.1]
	at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.lang.NullPointerException: null of de.mycomp.avro.model.FruitType of union in field fruitType of de.mycomp.avro.model.Fruit of array of union in field fruits of de.mycomps.avro.model.FruitList of union in field fruitList of de.mycomp.avro.model.AggregateAttribute in field aggregateAttribute of de.mycomp.avro.model.MyFruitsValue
	at org.apache.avro.generic.GenericDatumWriter.npe(GenericDatumWriter.java:184) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:178) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:83) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:73) ~[kloadgen-4.8.1.jar:?]
	at io.confluent.kafka.serializers.AbstractKafkaAvroSerializer.writeDatum(AbstractKafkaAvroSerializer.java:168) ~[kloadgen-4.8.1.jar:?]
	at io.confluent.kafka.serializers.AbstractKafkaAvroSerializer.serializeImpl(AbstractKafkaAvroSerializer.java:146) ~[kloadgen-4.8.1.jar:?]
	... 11 more
Caused by: java.lang.NullPointerException
	at org.apache.avro.Schema$EnumSchema.getEnumOrdinal(Schema.java:1060) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeEnum(GenericDatumWriter.java:242) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:134) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:83) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:145) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:83) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:221) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:210) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:131) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:83) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeArray(GenericDatumWriter.java:257) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:137) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:83) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:145) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:83) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:221) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:210) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:131) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:83) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:145) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:83) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:221) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:210) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:131) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:83) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:221) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:210) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:131) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:83) ~[kloadgen-4.8.1.jar:?]
	at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:73) ~[kloadgen-4.8.1.jar:?]
	at io.confluent.kafka.serializers.AbstractKafkaAvroSerializer.writeDatum(AbstractKafkaAvroSerializer.java:168) ~[kloadgen-4.8.1.jar:?]
	at io.confluent.kafka.serializers.AbstractKafkaAvroSerializer.serializeImpl(AbstractKafkaAvroSerializer.java:146) ~[kloadgen-4.8.1.jar:?]
	... 11 more

Have you added your JMX Testplan or a replica?

  • I have added a JMX testplan

Have you added your Schema or a replica?

  • I have added the Schema

Issue Analytics

  • State:closed
  • Created a year ago
  • Comments:10 (1 by maintainers)

github_iconTop GitHub Comments

1reaction
jemacineirascommented, Jul 21, 2022

@Perry45, my apologies, push didn’t reach out. Now you should have them. Cheers

0reactions
Perry45commented, Jul 21, 2022

@jemacineiras WOW. It works! Great. Thank you, for your the fix 😃

Read more comments on GitHub >

github_iconTop Results From Across the Web

Enum NullPointerException - java - Stack Overflow
All instance variables are initialized with a value. If you do not provide a value, the variable will be assigned the default value...
Read more >
NullPointerException in Enum property initialization with ...
Just a subtle thing, but would be nice to handle: If an enum instance declaration calls it's enum class'es values(), that fails with...
Read more >
NullPointerException for Enum properties starting ... - GitHub
I've identified 3 that work together and need to have compatible versions : jackson-databind (which is here the main problem in this issue), ......
Read more >
[JDK-6294715] Enum.valueOf(null) throws NullPointerException
Enum class have the method valueOf(String name). The spec says that if this enum type has no constant with the specified name then...
Read more >
Java Enum valueOf() Method - Javatpoint
NullPointerException, if enumType or name represents null value. Example 1. enum Parts{; Skin, Muscles ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found