[
https://issues.apache.org/jira/browse/NIFI-15362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18046150#comment-18046150
]
ASF subversion and git services commented on NIFI-15362:
--------------------------------------------------------
Commit 09cfea2f5458474ec9f365370ca0b44741a65a93 in nifi's branch
refs/heads/main from Peter Turcsanyi
[ https://gitbox.apache.org/repos/asf?p=nifi.git;h=09cfea2f54 ]
NIFI-15362 Fixed Time data type parsing in QuerySalesforceObject
Also fixed property evaluation issues uncovered by the test framework
Signed-off-by: Pierre Villard <[email protected]>
This closes #10661.
> QuerySalesforce fails to parse Time data type
> ---------------------------------------------
>
> Key: NIFI-15362
> URL: https://issues.apache.org/jira/browse/NIFI-15362
> Project: Apache NiFi
> Issue Type: Bug
> Reporter: Peter Turcsanyi
> Assignee: Peter Turcsanyi
> Priority: Major
> Time Spent: 20m
> Remaining Estimate: 0h
>
> QuerySalesforceObject in Property Based mode cannot process Time fields due
> to parse error:
> {code:java}
> 2025-12-17 22:36:18,650 ERROR [Timer-Driven Process Thread-1]
> o.a.n.p.salesforce.QuerySalesforceObject
> QuerySalesforceObject[id=5c29b18f-216a-3631-f910-07db393ffc3c] Couldn't read
> records from input
> java.lang.RuntimeException:
> org.apache.nifi.serialization.MalformedRecordException: Successfully parsed a
> JSON object from input but failed to convert into a Record object with the
> given schema
> at
> org.apache.nifi.processors.salesforce.QuerySalesforceObject.lambda$processRecordsCallback$3(QuerySalesforceObject.java:481)
> at
> org.apache.nifi.controller.repository.StandardProcessSession.write(StandardProcessSession.java:3107)
> at
> org.apache.nifi.processors.salesforce.QuerySalesforceObject.processQuery(QuerySalesforceObject.java:437)
> at
> org.apache.nifi.processors.salesforce.QuerySalesforceObject.onTrigger(QuerySalesforceObject.java:387)
> at
> org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
> at
> org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1274)
> at
> org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:229)
> at
> org.apache.nifi.controller.scheduling.AbstractTimeBasedSchedulingAgent.lambda$doScheduleOnce$0(AbstractTimeBasedSchedulingAgent.java:59)
> at org.apache.nifi.engine.FlowEngine.lambda$wrap$1(FlowEngine.java:105)
> at
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
> at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
> at
> java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
> at java.base/java.lang.Thread.run(Thread.java:1583)
> Caused by: org.apache.nifi.serialization.MalformedRecordException:
> Successfully parsed a JSON object from input but failed to convert into a
> Record object with the given schema
> at
> org.apache.nifi.json.AbstractJsonRowRecordReader.nextRecord(AbstractJsonRowRecordReader.java:169)
> at
> org.apache.nifi.serialization.RecordReader.nextRecord(RecordReader.java:50)
> at
> org.apache.nifi.processors.salesforce.QuerySalesforceObject.handleRecordSet(QuerySalesforceObject.java:497)
> at
> org.apache.nifi.processors.salesforce.QuerySalesforceObject.lambda$processRecordsCallback$3(QuerySalesforceObject.java:473)
> ... 14 common frames omitted
> Caused by:
> org.apache.nifi.serialization.record.field.FieldConversionException:
> Conversion failed for [23:05:30.000Z] named [time__c] to
> [java.time.LocalTime] [java.time.format.DateTimeParseException] Text
> '23:05:30.000Z' could not be parsed at index 12
> at
> org.apache.nifi.serialization.record.field.ObjectLocalTimeFieldConverter.convertField(ObjectLocalTimeFieldConverter.java:77)
> at
> org.apache.nifi.serialization.record.field.ObjectTimeFieldConverter.convertField(ObjectTimeFieldConverter.java:45)
> at
> org.apache.nifi.serialization.record.field.ObjectTimeFieldConverter.convertField(ObjectTimeFieldConverter.java:31)
> at
> org.apache.nifi.serialization.record.util.DataTypeUtils.convertType(DataTypeUtils.java:224)
> at
> org.apache.nifi.serialization.record.util.DataTypeUtils.convertType(DataTypeUtils.java:174)
> at
> org.apache.nifi.json.JsonTreeRowRecordReader.convertField(JsonTreeRowRecordReader.java:220)
> at
> org.apache.nifi.json.JsonTreeRowRecordReader.convertJsonNodeToRecord(JsonTreeRowRecordReader.java:164)
> at
> org.apache.nifi.json.JsonTreeRowRecordReader.convertJsonNodeToRecord(JsonTreeRowRecordReader.java:118)
> at
> org.apache.nifi.json.JsonTreeRowRecordReader.convertJsonNodeToRecord(JsonTreeRowRecordReader.java:109)
> at
> org.apache.nifi.json.AbstractJsonRowRecordReader.nextRecord(AbstractJsonRowRecordReader.java:164)
> ... 17 common frames omitted
> {code}
>
> Salesforce's query API endpoint sends DateTime and Time fields with different
> zone offset formats:
> {code:java}
> "datetime__c" : "2025-11-30T23:05:30.000+0000",
> "time__c" : "23:05:30.000Z"
> {code}
> NIFI-13671 fixed DateTime parsing, but broke Time parsing. Using 'Z' pattern
> letter for zone offset works for "+0000" but not for "Z". The "Z" in the Time
> field requires 'X' pattern letter which is a better choice for DateTime as
> well because 'X' is more flexible (accepts both "Z" and "+0000").
--
This message was sent by Atlassian Jira
(v8.20.10#820010)