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);