You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Peter Turcsanyi (Jira)" <ji...@apache.org> on 2025/12/17 22:58:00 UTC

[jira] [Created] (NIFI-15362) QuerySalesforce fails to parse Time data type

Peter Turcsanyi created NIFI-15362:
--------------------------------------

             Summary: 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


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