[
https://issues.apache.org/jira/browse/NIFI-1409?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15107377#comment-15107377
]
ASF GitHub Bot commented on NIFI-1409:
--------------------------------------
Github user mattyb149 commented on a diff in the pull request:
https://github.com/apache/nifi/pull/178#discussion_r50170753
--- Diff:
nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ExecuteSQL.java
---
@@ -164,17 +166,19 @@ public void process(final OutputStream out) throws
IOException {
});
// set attribute how many rows were selected
- outgoing = session.putAttribute(outgoing, RESULT_ROW_COUNT,
nrOfRows.get().toString());
+ fileToProcess = session.putAttribute(fileToProcess,
RESULT_ROW_COUNT, nrOfRows.get().toString());
- logger.info("{} contains {} Avro records; transferring to
'success'", new Object[] {outgoing, nrOfRows.get()});
- session.getProvenanceReporter().modifyContent(outgoing,
"Retrieved " + nrOfRows.get() + " rows",
stopWatch.getElapsed(TimeUnit.MILLISECONDS));
- session.transfer(outgoing, REL_SUCCESS);
+ logger.info("{} contains {} Avro records; transferring to
'success'",
+ new Object[] {fileToProcess, nrOfRows.get()});
+ session.getProvenanceReporter().modifyContent(fileToProcess,
"Retrieved " + nrOfRows.get() + " rows",
+ stopWatch.getElapsed(TimeUnit.MILLISECONDS));
+ session.transfer(fileToProcess, REL_SUCCESS);
} catch (final ProcessException | SQLException e) {
--- End diff --
I think the if(fileToProcess == null) block can now be removed, it was left
over from when there were (up to) two references to the flowfile. At this point
fileToProcess can't be null unless session.create() throws an exception, which
would be bad.
Point taken for the log statements and the penalize, will update to reflect
your comments, thanks!
> ExecuteSQL gives transfer error when SQLException occurs with no input
> flowfile
> -------------------------------------------------------------------------------
>
> Key: NIFI-1409
> URL: https://issues.apache.org/jira/browse/NIFI-1409
> Project: Apache NiFi
> Issue Type: Bug
> Reporter: Matt Burgess
>
> When the result set from ExecuteSQL has no columns, a bulletin is issued
> saying a flowfile was not transferred:
> 13:35:12 ESTERROR05845c66-73a4-49ff-a973-ad986fb651bf
> ExecuteSQL[id=05845c66-73a4-49ff-a973-ad986fb651bf] Unable to execute SQL
> select query SELECT * FROM test due to
> org.apache.nifi.processor.exception.ProcessException:
> org.postgresql.util.PSQLException: The column index is out of range: 1,
> number of columns: 0.. No incoming flow file to route to failure:
> org.apache.nifi.processor.exception.ProcessException:
> org.postgresql.util.PSQLException: The column index is out of range: 1,
> number of columns: 0.
> 13:35:12 ESTERROR05845c66-73a4-49ff-a973-ad986fb651bf
> ExecuteSQL[id=05845c66-73a4-49ff-a973-ad986fb651bf]
> ExecuteSQL[id=05845c66-73a4-49ff-a973-ad986fb651bf] failed to process due to
> org.apache.nifi.processor.exception.FlowFileHandlingException:
> StandardFlowFileRecord[uuid=c9077d5c-d873-4bf2-a8c0-4cc92a6f3309,claim=,offset=0,name=258316166470532,size=0]
> transfer relationship not specified; rolling back session:
> org.apache.nifi.processor.exception.FlowFileHandlingException:
> StandardFlowFileRecord[uuid=c9077d5c-d873-4bf2-a8c0-4cc92a6f3309,claim=,offset=0,name=258316166470532,size=0]
> transfer relationship not specified
> If there is any problem with the query (such as selecting a column that
> doesn't exist, or SELECT * from a table with no columns), a SQLException is
> thrown, which becomes a ProcessException in the ExecuteSQL processor. In
> addition, the exception handling tries to route the flowfile to failure, but
> for the newly created flowfile (to contain the result set), the reference has
> since been lost, and thus the flowfile is never transferred.
> At present, if it desired that an empty result set causes a route to failure,
> then a workaround is to add a GenerateFlowFile processor (with a 0-byte size)
> in front of the ExecuteSQL processor. This bypasses the logic error because
> the incoming flowfile is reused and eventually transferred to failure because
> of the exception thrown.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)