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

Reply via email to