exceptionfactory commented on code in PR #10136:
URL: https://github.com/apache/nifi/pull/10136#discussion_r2251811324
##########
nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutSQL.java:
##########
@@ -701,46 +703,64 @@ private FlowFilePoll pollFlowFiles(final ProcessContext
context, final ProcessSe
final int batchSize = context.getProperty(BATCH_SIZE).asInteger();
final FlowFileFilter dbcpServiceFlowFileFilter =
context.getProperty(CONNECTION_POOL).asControllerService(DBCPService.class).getFlowFileFilter(batchSize);
- List<FlowFile> flowFiles;
+ final List<FlowFile> validFlowFiles;
+ final List<FlowFile> selectedFlowFiles;
if (useTransactions) {
final TransactionalFlowFileFilter filter = new
TransactionalFlowFileFilter(dbcpServiceFlowFileFilter);
- flowFiles = session.get(filter);
+ selectedFlowFiles = session.get(filter);
fragmentedTransaction = filter.isFragmentedTransaction();
} else {
if (dbcpServiceFlowFileFilter == null) {
- flowFiles = session.get(batchSize);
+ selectedFlowFiles = session.get(batchSize);
} else {
- flowFiles = session.get(dbcpServiceFlowFileFilter);
+ selectedFlowFiles = session.get(dbcpServiceFlowFileFilter);
}
}
- if (flowFiles.isEmpty()) {
+ boolean selectedFlowFilesShouldHaveDataBaseNameButDont =
dbcpServiceFlowFileFilter != null
+ && !selectedFlowFiles.isEmpty()
+ &&
selectedFlowFiles.stream().findAny().get().getAttribute("database.name") ==
null;
Review Comment:
Sure, here is one possible approach, there are a probably a few other ways
to implement it. I also noticed that the current `stream().findAny()` approach
does not appear to be correct, since it is only retrieving one item at random
instead of checking the entire collection.
```
final List<FlowFile> validFlowFiles;
if (dbcpServiceFlowFileFilter == null) {
validFlowFiles = selectedFlowFiles;
} else {
final boolean invalidFlowFilesFound = selectedFlowFiles.stream()
.filter(selectedFlowFile ->
selectedFlowFile.getAttribute("database.name") == null
)
.findAny()
.isPresent();
if (invalidFlowFilesFound) {
// Log warning for each FlowFile...
validFlowFiles = List.of();
result.routeTo(selectedFlowFiles, REL_FAILURE);
} else {
validFlowFiles = selectedFlowFiles;
}
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]