[
https://issues.apache.org/jira/browse/NIFI-11655?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17730733#comment-17730733
]
ASF subversion and git services commented on NIFI-11655:
--------------------------------------------------------
Commit 7884d934bd5c98b0684a951781f3c08798124136 in nifi's branch
refs/heads/support/nifi-1.x from Matt Burgess
[ https://gitbox.apache.org/repos/asf?p=nifi.git;h=7884d934bd ]
NIFI-11655 Fixed float and double handling in GenerateRecord
This closes #7356
Signed-off-by: David Handermann <[email protected]>
(cherry picked from commit 5e6f3abdd2c57fe2a8b81cdf2c97e7f1b9a0132e)
> 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: 20m
> 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)