[ 
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)

Reply via email to