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

exceptionfactory 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 45fab02931 NIFI-14661 Fixed UnpackContent for Duplicate TAR Value 
Handling (#10022)
45fab02931 is described below

commit 45fab02931d1cf46e85ed8ce43217d0e88904310
Author: Pierre Villard <[email protected]>
AuthorDate: Tue Jun 17 16:18:50 2025 +0200

    NIFI-14661 Fixed UnpackContent for Duplicate TAR Value Handling (#10022)
    
    Signed-off-by: David Handermann <[email protected]>
---
 .../apache/nifi/processors/standard/UnpackContent.java  | 17 ++++++++++-------
 .../nifi/processors/standard/TestUnpackContent.java     |  2 +-
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UnpackContent.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UnpackContent.java
index cdd72ab3db..7d4e108db0 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UnpackContent.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UnpackContent.java
@@ -257,7 +257,7 @@ public class UnpackContent extends AbstractProcessor {
             fileFilter = 
Pattern.compile(context.getProperty(FILE_FILTER).getValue());
 
             tarUnpacker = switch (packageFormat) {
-                case AUTO_DETECT_FORMAT, TAR_FORMAT, X_TAR_FORMAT -> new 
TarUnpacker(fileFilter);
+                case AUTO_DETECT_FORMAT, TAR_FORMAT -> new 
TarUnpacker(fileFilter);
                 default -> null;
             };
 
@@ -303,16 +303,20 @@ public class UnpackContent extends AbstractProcessor {
                 }
             }
             if (packagingFormat == null) {
-                logger.info("Cannot unpack {} because its mime.type attribute 
is set to '{}', which is not a format that can be unpacked; routing to 
'success'", flowFile, mimeType);
-                session.transfer(flowFile, REL_SUCCESS);
-                return;
+                if (mimeType.toLowerCase().contains(TAR_FORMAT_NAME)) {
+                    packagingFormat = PackageFormat.TAR_FORMAT;
+                } else {
+                    logger.info("Cannot unpack {} because its mime.type 
attribute is set to '{}', which is not a format that can be unpacked; routing 
to 'success'", flowFile, mimeType);
+                    session.transfer(flowFile, REL_SUCCESS);
+                    return;
+                }
             }
         }
 
         // set the Unpacker to use for this FlowFile.  FlowFileUnpackager 
objects maintain state and are not reusable.
         final Unpacker unpacker;
         final boolean addFragmentAttrs = switch (packagingFormat) {
-          case TAR_FORMAT, X_TAR_FORMAT -> {
+          case TAR_FORMAT -> {
             unpacker = tarUnpacker;
             yield true;
           }
@@ -716,8 +720,7 @@ public class UnpackContent extends AbstractProcessor {
 
     protected enum PackageFormat implements DescribedValue {
         AUTO_DETECT_FORMAT(AUTO_DETECT_FORMAT_NAME, null, null),
-        TAR_FORMAT(TAR_FORMAT_NAME, null, "application/tar"),
-        X_TAR_FORMAT(TAR_FORMAT_NAME, null, "application/x-tar"),
+        TAR_FORMAT(TAR_FORMAT_NAME, null, "application/x-tar"),
         ZIP_FORMAT(ZIP_FORMAT_NAME, null, "application/zip"),
         FLOWFILE_STREAM_FORMAT_V3(FLOWFILE_STREAM_FORMAT_V3_NAME, null, 
StandardFlowFileMediaType.VERSION_3.getMediaType()),
         FLOWFILE_STREAM_FORMAT_V2(FLOWFILE_STREAM_FORMAT_V2_NAME, null, 
StandardFlowFileMediaType.VERSION_2.getMediaType()),
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestUnpackContent.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestUnpackContent.java
index e803576726..bfc6a26dfd 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestUnpackContent.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestUnpackContent.java
@@ -65,7 +65,7 @@ public class TestUnpackContent {
         Map<String, String> attributes = new HashMap<>(1);
         Map<String, String> attributes2 = new HashMap<>(1);
         attributes.put("mime.type", 
UnpackContent.PackageFormat.TAR_FORMAT.getMimeType());
-        attributes2.put("mime.type", 
UnpackContent.PackageFormat.X_TAR_FORMAT.getMimeType());
+        attributes2.put("mime.type", "application/tar");
         autoUnpackRunner.enqueue(dataPath.resolve("data.tar"), attributes);
         autoUnpackRunner.enqueue(dataPath.resolve("data.tar"), attributes2);
         runner.run(2);

Reply via email to