[ https://issues.apache.org/jira/browse/NIFI-6271?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Koji Kawamura resolved NIFI-6271. --------------------------------- Resolution: Fixed Fix Version/s: 1.10.0 Thanks for your contribution [~hondawei]! I've added 'Contributor' role to your Jira account, so that you can assign yourself to NiFi Jira tickets. > ExecuteSQL incoming flowfile attributes not copied into output flowfiles when > Output Batch Size is set > ------------------------------------------------------------------------------------------------------ > > Key: NIFI-6271 > URL: https://issues.apache.org/jira/browse/NIFI-6271 > Project: Apache NiFi > Issue Type: Bug > Components: Core Framework > Affects Versions: 1.9.2 > Reporter: Arnaud Rivero > Assignee: HondaWei > Priority: Major > Labels: easyfix, features, usability > Fix For: 1.10.0 > > Original Estimate: 0.5h > Time Spent: 2h > Remaining Estimate: 0h > > When using the executeSQL and executeSQLRecord processors, we can use input > flowfiles with a certain number of attributes. If we don't set the Output > Batch Size, all these attributes are copied to the output flowfile. However, > if we set it, only the flowfiles from the first batch will have the > attributes copied to. The flowfiles in the following batches will only have > the default attributes. > h2. Root cause > In the source code of the method _onTrigger_ in the class > _AbstractExecuteSQL,_ we have the following piece of code that is supposed to > create an output flowfile and copy the original attributes into it: > {code:java} > FlowFile resultSetFF; > if (fileToProcess == null) { > resultSetFF = session.create(); > } else { > resultSetFF = session.create(fileToProcess); > resultSetFF = session.putAllAttributes(resultSetFF, > fileToProcess.getAttributes()); > } > {code} > However the fix for the issue NIFI-6040 introduced this snippet way below in > the same method: > > {code:java} > // If we've reached the batch size, send out the flow files > if (outputBatchSize > 0 && resultSetFlowFiles.size() >= outputBatchSize) { > session.transfer(resultSetFlowFiles, REL_SUCCESS); > // Need to remove the original input file if it exists > if (fileToProcess != null) { > session.remove(fileToProcess); > fileToProcess = null; > } > session.commit(); > resultSetFlowFiles.clear(); > } > {code} > As you can see, it sets the variable fileToProcess to null, preventing the > flowfiles in the next batch to copy its attributes > > h2. -- This message was sent by Atlassian JIRA (v7.6.3#76005)