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

Matt Burgess resolved NIFI-7601.
--------------------------------
    Fix Version/s: 1.14.0
       Resolution: Fixed

Verified the issue is fixed with the upgrade of Calcite (which includes the 
aforementioned Jira cases), Resolving as fixed in the upcoming 1.14.0 release. 
Please reopen if the issue persists.

> QueryRecord failing to handle arrays
> ------------------------------------
>
>                 Key: NIFI-7601
>                 URL: https://issues.apache.org/jira/browse/NIFI-7601
>             Project: Apache NiFi
>          Issue Type: Bug
>    Affects Versions: 1.11.4
>            Reporter: Dirk Arends
>            Assignee: Matt Burgess
>            Priority: Major
>             Fix For: 1.14.0
>
>         Attachments: flow.xml
>
>
> I am running into an issue QueryRecord processors on Nifi 1.11.4 which was 
> not an issue on 1.11.0. If a record contains arrays of “complex” data I am 
> not able to perform any queries on the record, even if the queries don’t 
> require data from within the array.
>   
> {code:java}
> 2020-07-06 16:43:53,902 ERROR [Timer-Driven Process Thread-8] 
> o.a.nifi.processors.standard.QueryRecord 
> QueryRecord[id=01731003-15bb-12a6-7e03-8c418ab7fb97] Unable to query 
> StandardFlowFileRecord[uuid=04ed077b-0556-4dda-836e-62c5f9a5c772,claim=StandardContentClaim
>  [resourceClaim=StandardResourceClaim[id=1594014641476-1, container=default, 
> section=1], offset=51521, 
> length=334],offset=0,name=04ed077b-0556-4dda-836e-62c5f9a5c772,size=334] due 
> to java.lang.IllegalStateException: Unhandled ARRAY component type: OBJECT, 
> id: 1111: java.lang.IllegalStateException: Unhandled ARRAY component type: 
> OBJECT, id: 1111
> java.lang.IllegalStateException: Unhandled ARRAY component type: OBJECT, id: 
> 1111
> at 
> org.apache.calcite.avatica.util.AbstractCursor$ArrayAccessor.convertValue(AbstractCursor.java:1346)
> at 
> org.apache.calcite.avatica.util.AbstractCursor$ArrayAccessor.getObject(AbstractCursor.java:1299)
> at 
> org.apache.calcite.avatica.util.AbstractCursor$ArrayAccessor.getArray(AbstractCursor.java:1352)
> at 
> org.apache.calcite.avatica.AvaticaResultSet.getArray(AvaticaResultSet.java:729)
> at 
> org.apache.nifi.serialization.record.ResultSetRecordSet.getDataType(ResultSetRecordSet.java:186)
> at 
> org.apache.nifi.serialization.record.ResultSetRecordSet.createSchema(ResultSetRecordSet.java:156)
> at 
> org.apache.nifi.serialization.record.ResultSetRecordSet.<init>(ResultSetRecordSet.java:60)
> at 
> org.apache.nifi.processors.standard.QueryRecord$1.process(QueryRecord.java:332)
> at 
> org.apache.nifi.controller.repository.StandardProcessSession.write(StandardProcessSession.java:2746)
> at 
> org.apache.nifi.processors.standard.QueryRecord.onTrigger(QueryRecord.java:325)
> at 
> org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
> at 
> org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1176)
> at 
> org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:213)
> at 
> org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
> 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.runAndReset(FutureTask.java:305)
> at 
> java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
> 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:834)
> {code}
> [https://github.com/apache/calcite-avatica/blob/master/core/src/main/java/org/apache/calcite/avatica/util/AbstractCursor.java#L1346]
>  
> I believe this to be a regression, possibly introduced by this commit (though 
> I haven't been able to confirm):
>  
> [https://github.com/apache/nifi/commit/98f9b7c033a8d80ddf43aa77f63107703077d297]
> https://issues.apache.org/jira/browse/NIFI-7095
>  
> Example 1: Succeeds when performing a query in a QueryRecord
>  
> Data:
> {code:java}
> {"total":5,"payload":["Test"]}{code}
>  
> Schema:
> {code:java}
> {"type":"record","name":"ApiResponseData","namespace":"com.example.api","fields":[
>   {"name":"total","type":"int"},
>   {"name":"payload","type":[
>     {"type":"array","items":"string"}
>   ]}
> ]}
> {code}
>  
> Example 2: Fails when performing a query in a QueryRecord
>  
> Data:
> {code:java}
> {"total":5,"payload":[{"type":"Test"}]}{code}
>  
> Schema:
> {code:java}
> {"type":"record","name":"ApiResponse","namespace":"com.example.api","fields":[
>   {"name":"total","type":"int"},
>   {"name":"payload","type":[
>     "null",
>     
> {"type":"array","items":{"type":"record","name":"ApiResponseData","namespace":"com.example.api","fields":[
>       {"name":"type","type":"string"}
>     ]}}
>   ]}
> ]}
> {code}
>  
> I have set up a simple flow.xml which demonstrates the issue. It is 
> reproducible with a fresh copy of the convenience binaries, with no special 
> steps.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to