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