Christiaan Biesterbosch created NIFI-14897:
----------------------------------------------

             Summary: org.apache.nifi.serialization.RecordSetWriter does not 
support the Avro Fixed type
                 Key: NIFI-14897
                 URL: https://issues.apache.org/jira/browse/NIFI-14897
             Project: Apache NiFi
          Issue Type: Bug
          Components: Extensions
    Affects Versions: 2.5.0
            Reporter: Christiaan Biesterbosch


See [this commit for a failing 
test]([https://github.com/apache/nifi/commit/b11eb5912e651e0cbe5bc32c9b228c58071b477a).]

The problem seems to be that the Avro library expects something implementing 
`GenericFixed` for the Fixed type, but `RecordSetWriter` creates a 
`java.nio.HeapByteBuffer`.

A workaround is using the Avro Bytes type, but that doesn't work with 
`"logicalType": "uuid"`.
```
-------------------------------------------------------------------------------
Test set: org.apache.nifi.avro.TestWriteAvroResultWithSchema
-------------------------------------------------------------------------------
Tests run: 7, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.096 s <<< 
FAILURE! -- in org.apache.nifi.avro.TestWriteAvroResultWithSchema
org.apache.nifi.avro.TestWriteAvroResultWithSchema.testDataTypes -- Time 
elapsed: 0.003 s <<< ERROR!
org.apache.avro.file.DataFileWriter$AppendWriteException: 
java.lang.ClassCastException: value java.nio.HeapByteBuffer[pos=0 lim=16 
cap=16] (a java.nio.HeapByteBuffer) cannot be cast to expected type fixed16 at 
data_types.fixed
at org.apache.avro.file.DataFileWriter.append(DataFileWriter.java:326)
at 
org.apache.nifi.avro.WriteAvroResultWithSchema.writeRecord(WriteAvroResultWithSchema.java:61)
at 
org.apache.nifi.serialization.AbstractRecordSetWriter.write(AbstractRecordSetWriter.java:59)
at 
org.apache.nifi.serialization.AbstractRecordSetWriter.write(AbstractRecordSetWriter.java:52)
at 
org.apache.nifi.avro.TestWriteAvroResult.testDataTypes(TestWriteAvroResult.java:316)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
Caused by: java.lang.ClassCastException: value java.nio.HeapByteBuffer[pos=0 
lim=16 cap=16] (a java.nio.HeapByteBuffer) cannot be cast to expected type 
fixed16 at data_types.fixed
at 
org.apache.avro.path.TracingClassCastException.summarize(TracingClassCastException.java:79)
at 
org.apache.avro.path.TracingClassCastException.summarize(TracingClassCastException.java:30)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:84)
at org.apache.avro.file.DataFileWriter.append(DataFileWriter.java:323)
... 7 more
Caused by: java.lang.ClassCastException: class java.nio.HeapByteBuffer cannot 
be cast to class org.apache.avro.generic.GenericFixed (java.nio.HeapByteBuffer 
is in module java.base of loader 'bootstrap'; 
org.apache.avro.generic.GenericFixed is in unnamed module of loader 'app')
at 
org.apache.avro.generic.GenericDatumWriter.writeFixed(GenericDatumWriter.java:408)
at 
org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:162)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:95)
at 
org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:245)
at 
org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:234)
at 
org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:145)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:95)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:82)
... 8 more
```



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to