[ 
https://issues.apache.org/jira/browse/NIFI-10141?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matt Burgess updated NIFI-10141:
--------------------------------
    Status: Patch Available  (was: In Progress)

> JSONRecordSetWriter when unable to write record should convey its schema in 
> log message
> ---------------------------------------------------------------------------------------
>
>                 Key: NIFI-10141
>                 URL: https://issues.apache.org/jira/browse/NIFI-10141
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Extensions
>            Reporter: Mark Payne
>            Assignee: Matt Burgess
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> If the JSON Record Set Writer fails to write out a Record, we get a log 
> message generated by the following line:
> {code:java}
> logger.error("Failed to write {} with schema {} as a JSON Object due to {}", 
> new Object[] {record, record.getSchema(), e.toString(), e}); {code}
> This indicates the Record and its schema, but it can lead to confusion if the 
> Record Writer was created with a different schema. We should also include in 
> this log message the schema that the Record Writer itself is using.
> Otherwise, we end up with output that looks like this:
> {code:java}
> Failed to write MapRecord[{VER=10000, UDT=1654949958385, 
> IID=Yzk0ZjUwNDczYjkyM2Q0YjoxNjU0OTQ5OTU4Mzg1, 
> USI=00016549499409380af094b69c808340, UID=9807013334, 
> DAT=JGABPMJAY\u00091551868547373\u00091, ROT=0, CAT=sms, DVM=Redmi:Redmi Note 
> 8 Pro, AID=c94f59473b923d4b, LDT=1654949958385}]
> with schema [\"AID\" : \"STRING\", \"CAT\" : \"STRING\", \"DAT\" : 
> \"STRING\", \"DVM\" : \"STRING\", \"IID\" : \"STRING\", \"LDT\" : \"LONG\", 
> \"ROT\" : \"INT\", \"UDT\" : \"LONG\", \"UID\" : \"STRING\", \"USI\" : 
> \"STRING\", \"VER\" : \"INT\"] 
> as a JSON Object due to 
> org.apache.nifi.serialization.record.util.IllegalTypeConversionException: 
> Cannot convert value [1654949958385] of type class java.lang.Long to Integer 
> for field LDT as it causes an arithmetic overflow (the value is too large, 
> e.g.): 
>  {code}
> Here, it's attempting to convert a LONG object to an integer and failing. 
> However, it's very unclear from this log message why it would attempt to 
> convert the value {{1654949958385}} to an INT because the schema says it's a 
> LONG. Eventually, we discovered that the cause is that the Record Writer was 
> created with a schema indicating the field is an INT, not a LONG.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to