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]

Reply via email to