[
https://issues.apache.org/jira/browse/NIFI-7981?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17226878#comment-17226878
]
Pierre Villard commented on NIFI-7981:
--------------------------------------
Correction: this can be reproduced using an Avro writer.
{noformat}
[pool-1-thread-1] ERROR org.apache.nifi.processors.standard.ConvertRecord -
ConvertRecord[id=7a06f324-13d1-40da-9e17-00d902dfe958] Failed to process
FlowFile[0,person_bad_enum.json,101B]; will route to failure:
org.apache.avro.file.DataFileWriter$AppendWriteException:
java.lang.NullPointerException: null of nifi.statusEnum of union in field
status of nifi.personWithNameRecord
org.apache.avro.file.DataFileWriter$AppendWriteException:
java.lang.NullPointerException: null of nifi.statusEnum of union in field
status of nifi.personWithNameRecord
at org.apache.avro.file.DataFileWriter.append(DataFileWriter.java:308)
at
org.apache.nifi.avro.WriteAvroResultWithSchema.writeRecord(WriteAvroResultWithSchema.java:61)
at
org.apache.nifi.serialization.AbstractRecordSetWriter.write(AbstractRecordSetWriter.java:59)
at
org.apache.nifi.processors.standard.AbstractRecordProcessor$1.process(AbstractRecordProcessor.java:153)
at
org.apache.nifi.util.MockProcessSession.write(MockProcessSession.java:925)
at
org.apache.nifi.util.MockProcessSession.write(MockProcessSession.java:1)
at
org.apache.nifi.processors.standard.AbstractRecordProcessor.onTrigger(AbstractRecordProcessor.java:122)
at
org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
at
org.apache.nifi.util.StandardProcessorTestRunner$RunProcessor.call(StandardProcessorTestRunner.java:270)
at
org.apache.nifi.util.StandardProcessorTestRunner$RunProcessor.call(StandardProcessorTestRunner.java:1)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException: null of nifi.statusEnum of union in
field status of nifi.personWithNameRecord
at
org.apache.avro.generic.GenericDatumWriter.npe(GenericDatumWriter.java:132)
at
org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:126)
at
org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:73)
at
org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:60)
at org.apache.avro.file.DataFileWriter.append(DataFileWriter.java:302)
... 15 more
Caused by: java.lang.NullPointerException
at org.apache.avro.Schema$EnumSchema.getEnumOrdinal(Schema.java:755)
at
org.apache.avro.generic.GenericDatumWriter.writeEnum(GenericDatumWriter.java:165)
at
org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:106)
at
org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:73)
at
org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:112)
at
org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:73)
at
org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:153)
at
org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:143)
at
org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:105)
... 18 more{noformat}
> ConvertRecord cannot handle open enum in Avro
> ---------------------------------------------
>
> Key: NIFI-7981
> URL: https://issues.apache.org/jira/browse/NIFI-7981
> Project: Apache NiFi
> Issue Type: Bug
> Affects Versions: 1.12.1
> Reporter: Christophe Monnet
> Priority: Minor
> Attachments: record_enum.xml
>
>
> This avro schema is using the open enum pattern:
> {code:json}
> {
> "namespace": "acme",
> "name": "openEnum",
> "type": "record",
> "fields": [{
> "name": "personType",
> "type": ["null", {
> "type": "enum",
> "name": "personType_enum",
> "symbols": [
> "DRIVER",
> "TECHNICIAN"
> ]
> }, "string"],
> "default": null
> }
> ]
> }
> {code}
> The *personType* can be either null, an enum, or any string. This brings
> forward-compatibility.
> Using ConvertRecord with
> {"personType":"DRIVER"}
> as a payload, it works.
> But with
> {"personType":"DUDE"}
> it fails with {{java.lang.NullPointerException: null of acme.personType_enum
> of union in field personType of acme.openEnum}}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)