You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Matt Burgess (Jira)" <ji...@apache.org> on 2023/06/07 21:17:00 UTC

[jira] [Updated] (NIFI-11655) GenerateRecord doesn't generate floats and doubles correctly when a schema is supplied

     [ https://issues.apache.org/jira/browse/NIFI-11655?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matt Burgess updated NIFI-11655:
--------------------------------
    Status: Patch Available  (was: In Progress)

> GenerateRecord doesn't generate floats and doubles correctly when a schema is supplied
> --------------------------------------------------------------------------------------
>
>                 Key: NIFI-11655
>                 URL: https://issues.apache.org/jira/browse/NIFI-11655
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>            Reporter: Matt Burgess
>            Assignee: Matt Burgess
>            Priority: Major
>             Fix For: 1.latest, 2.latest
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> When a schema is supplied to GenerateRecord via the Schema Text property and it contains either float or double fields, the processor fails with an error:
> 2023-06-06 15:10:36,271 ERROR [Timer-Driven Process Thread-7] o.a.n.processors.standard.GenerateRecord GenerateRecord[id=9201dbe8-0188-1000-6d56-74ba1fc1e732] Processing failed
> org.apache.nifi.processor.exception.ProcessException: Record generation failed
> 	at org.apache.nifi.processors.standard.GenerateRecord.onTrigger(GenerateRecord.java:274)
> 	at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
> 	at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1360)
> 	at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:243)
> 	at org.apache.nifi.controller.scheduling.AbstractTimeBasedSchedulingAgent.lambda$doScheduleOnce$0(AbstractTimeBasedSchedulingAgent.java:59)
> 	at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
> 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
> 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
> 	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> 	at java.base/java.lang.Thread.run(Thread.java:829)
> Caused by: java.lang.ClassCastException: class org.apache.nifi.serialization.record.DataType cannot be cast to class org.apache.nifi.serialization.record.type.DecimalDataType (org.apache.nifi.serialization.record.DataType and org.apache.nifi.serialization.record.type.DecimalDataType are in unnamed module of loader org.apache.nifi.nar.NarClassLoader @7fd987ef)
> 	at org.apache.nifi.processors.standard.GenerateRecord.generateValueFromRecordField(GenerateRecord.java:316)
> 	at org.apache.nifi.processors.standard.GenerateRecord.lambda$onTrigger$0(GenerateRecord.java:238)
> 	at org.apache.nifi.controller.repository.StandardProcessSession.write(StandardProcessSession.java:3138)
> 	at org.apache.nifi.processors.standard.GenerateRecord.onTrigger(GenerateRecord.java:210)
> This is because GenerateRecord handles floats, doubles, and decimals the same way, by trying to treat them as DecimalDataTypes when floats and doubles are not compatible (they have their own distinct data types). The cases should be handled separately and unit tests added/augmented to verify.



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