This is an automated email from the ASF dual-hosted git repository.

joewitt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new 9cf5f947e8 NIFI-13200: Do not allow 'filename' or 'path' attribute to 
removed from FlowFile This closes #8791
9cf5f947e8 is described below

commit 9cf5f947e8dda4b57cf1eb4c429a8c1159af341a
Author: Mark Payne <marka...@hotmail.com>
AuthorDate: Thu May 9 16:37:28 2024 -0400

    NIFI-13200: Do not allow 'filename' or 'path' attribute to removed from 
FlowFile
    This closes #8791
    
    Signed-off-by: Joseph Witt <joew...@apache.org>
---
 .../repository/StandardProcessSession.java         | 83 ++++++++++++----------
 1 file changed, 47 insertions(+), 36 deletions(-)

diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/repository/StandardProcessSession.java
 
b/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/repository/StandardProcessSession.java
index 64ef1c5aff..5d6dc605ba 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/repository/StandardProcessSession.java
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/repository/StandardProcessSession.java
@@ -16,40 +16,6 @@
  */
 package org.apache.nifi.controller.repository;
 
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayInputStream;
-import java.io.Closeable;
-import java.io.EOFException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.function.BiConsumer;
-import java.util.function.BiFunction;
-import java.util.function.Consumer;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
 import org.apache.nifi.components.state.Scope;
 import org.apache.nifi.components.state.StateManager;
 import org.apache.nifi.components.state.StateMap;
@@ -104,6 +70,41 @@ import org.apache.nifi.util.FormatUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.Closeable;
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.BiConsumer;
+import java.util.function.BiFunction;
+import java.util.function.Consumer;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  * Provides a ProcessSession that ensures all accesses, changes and transfers
@@ -116,6 +117,12 @@ import org.slf4j.LoggerFactory;
  * <p/>
  */
 public class StandardProcessSession implements ProcessSession, 
ProvenanceEventEnricher {
+    private static final Set<String> REQUIRED_ATTRIBUTES = Set.of(
+        CoreAttributes.UUID.key(),
+        CoreAttributes.FILENAME.key(),
+        CoreAttributes.PATH.key()
+    );
+
     private static final long VERSION_INCREMENT = 1;
     private static final String INITIAL_VERSION = 
String.valueOf(VERSION_INCREMENT);
     private static final AtomicLong idGenerator = new AtomicLong(0L);
@@ -2271,7 +2278,7 @@ public class StandardProcessSession implements 
ProcessSession, ProvenanceEventEn
         verifyTaskActive();
         flowFile = validateRecordState(flowFile);
 
-        if (CoreAttributes.UUID.key().equals(key)) {
+        if (REQUIRED_ATTRIBUTES.contains(key)) {
             return flowFile;
         }
 
@@ -2295,6 +2302,10 @@ public class StandardProcessSession implements 
ProcessSession, ProvenanceEventEn
 
         final Map<String, String> updatedAttrs = new HashMap<>();
         for (final String key : keys) {
+            if (REQUIRED_ATTRIBUTES.contains(key)) {
+                continue;
+            }
+
             if (CoreAttributes.UUID.key().equals(key)) {
                 continue;
             }
@@ -2321,7 +2332,7 @@ public class StandardProcessSession implements 
ProcessSession, ProvenanceEventEn
 
             final Map<String, String> removed = new HashMap<>();
             for (final String key : curAttrs.keySet()) {
-                if (CoreAttributes.UUID.key().equals(key)) {
+                if (REQUIRED_ATTRIBUTES.contains(key)) {
                     continue;
                 }
 

Reply via email to