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 <[email protected]>
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 <[email protected]>
---
.../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;
}