Skip to content

HADOOP-19801. Allow to skip recursive file deletion for non-empty dir…#8306

Open
deepujain wants to merge 7 commits intoapache:trunkfrom
deepujain:HADOOP-19801-delete-non-empty-directory
Open

HADOOP-19801. Allow to skip recursive file deletion for non-empty dir…#8306
deepujain wants to merge 7 commits intoapache:trunkfrom
deepujain:HADOOP-19801-delete-non-empty-directory

Conversation

@deepujain
Copy link
Copy Markdown
Contributor

@deepujain deepujain commented Mar 7, 2026

Summary

Adds option fs.s3a.delete.non-empty-directory.enabled. When true, recursive delete of a non-empty directory sends a single delete request for the directory key (prefix) instead of listing and bulk-deleting contained objects. Only enable for S3-compatible endpoints that support deleting a non-empty directory in one request (e.g. VAST).

Change

  • Constants.java: New config key DELETE_NON_EMPTY_DIRECTORY_ENABLED (fs.s3a.delete.non-empty-directory.enabled), default false.
  • InternalConstants.java: Added to S3A_DYNAMIC_CAPABILITIES for path capability probing.
  • S3AFileSystem.java: Read option in initialize(), pass to DeleteOperation, expose via hasPathCapability(DELETE_NON_EMPTY_DIRECTORY_ENABLED).
  • DeleteOperation.java: New constructor parameter deleteNonEmptyDirectoryEnabled. When true and directory is non-empty, call deleteObjectAtPath(path, key, false) once instead of deleteDirectoryTree(path, key).

Why no new tests

New tests would require an S3-compatible endpoint that supports prefix delete (e.g. VAST); we don't run such backends in CI. The change is a guarded code path (config off by default). Manual verification: enabled the option against a VAST endpoint and confirmed recursive delete uses a single delete request.

JIRA

Fixes HADOOP-19801

@hadoop-yetus
Copy link
Copy Markdown

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 21s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 1s codespell was not available.
+0 🆗 detsecrets 0m 1s detect-secrets was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
-1 ❌ test4tests 0m 0s The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.
_ trunk Compile Tests _
+1 💚 mvninstall 27m 57s trunk passed
+1 💚 compile 0m 41s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 compile 0m 37s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 checkstyle 0m 32s trunk passed
+1 💚 mvnsite 0m 42s trunk passed
+1 💚 javadoc 0m 34s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 0m 36s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 0m 58s trunk passed
+1 💚 shadedclient 15m 38s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+1 💚 mvninstall 0m 24s the patch passed
+1 💚 compile 0m 22s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javac 0m 22s the patch passed
+1 💚 compile 0m 23s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 javac 0m 23s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
-0 ⚠️ checkstyle 0m 18s /results-checkstyle-hadoop-tools_hadoop-aws.txt hadoop-tools/hadoop-aws: The patch generated 1 new + 7 unchanged - 0 fixed = 8 total (was 7)
+1 💚 mvnsite 0m 25s the patch passed
+1 💚 javadoc 0m 16s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 0m 16s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 0m 46s the patch passed
+1 💚 shadedclient 15m 15s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 2m 14s hadoop-aws in the patch passed.
+1 💚 asflicense 0m 24s The patch does not generate ASF License warnings.
70m 59s
Subsystem Report/Notes
Docker ClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/1/artifact/out/Dockerfile
GITHUB PR #8306
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets
uname Linux 1a59420885f3 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 60140ec
Default Java Ubuntu-17.0.18+8-Ubuntu-124.04.1
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.10+7-Ubuntu-124.04 /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.18+8-Ubuntu-124.04.1
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/1/testReport/
Max. process+thread count 637 (vs. ulimit of 5500)
modules C: hadoop-tools/hadoop-aws U: hadoop-tools/hadoop-aws
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/1/console
versions git=2.43.0 maven=3.9.11 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

@hadoop-yetus
Copy link
Copy Markdown

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 22s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
-1 ❌ test4tests 0m 0s The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.
_ trunk Compile Tests _
+1 💚 mvninstall 27m 47s trunk passed
+1 💚 compile 0m 32s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 compile 0m 32s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 checkstyle 0m 31s trunk passed
+1 💚 mvnsite 0m 35s trunk passed
+1 💚 javadoc 0m 31s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 0m 30s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 0m 54s trunk passed
+1 💚 shadedclient 17m 3s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+1 💚 mvninstall 0m 22s the patch passed
+1 💚 compile 0m 21s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javac 0m 21s the patch passed
+1 💚 compile 0m 24s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 javac 0m 24s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
-0 ⚠️ checkstyle 0m 16s /results-checkstyle-hadoop-tools_hadoop-aws.txt hadoop-tools/hadoop-aws: The patch generated 1 new + 7 unchanged - 0 fixed = 8 total (was 7)
+1 💚 mvnsite 0m 25s the patch passed
+1 💚 javadoc 0m 17s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 0m 17s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 0m 44s the patch passed
+1 💚 shadedclient 15m 36s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 2m 11s hadoop-aws in the patch passed.
+1 💚 asflicense 0m 19s The patch does not generate ASF License warnings.
71m 56s
Subsystem Report/Notes
Docker ClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/2/artifact/out/Dockerfile
GITHUB PR #8306
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets
uname Linux d615fe42fbd2 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 1a16678
Default Java Ubuntu-17.0.18+8-Ubuntu-124.04.1
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.10+7-Ubuntu-124.04 /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.18+8-Ubuntu-124.04.1
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/2/testReport/
Max. process+thread count 619 (vs. ulimit of 5500)
modules C: hadoop-tools/hadoop-aws U: hadoop-tools/hadoop-aws
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/2/console
versions git=2.43.0 maven=3.9.11 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

@hadoop-yetus
Copy link
Copy Markdown

🎊 +1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 21s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 1 new or modified test files.
_ trunk Compile Tests _
+1 💚 mvninstall 28m 58s trunk passed
+1 💚 compile 0m 35s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 compile 0m 37s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 checkstyle 0m 39s trunk passed
+1 💚 mvnsite 0m 40s trunk passed
+1 💚 javadoc 0m 30s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 0m 28s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 0m 55s trunk passed
+1 💚 shadedclient 18m 51s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+1 💚 mvninstall 0m 22s the patch passed
+1 💚 compile 0m 21s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javac 0m 21s the patch passed
+1 💚 compile 0m 22s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 javac 0m 22s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
-0 ⚠️ checkstyle 0m 17s /results-checkstyle-hadoop-tools_hadoop-aws.txt hadoop-tools/hadoop-aws: The patch generated 1 new + 7 unchanged - 0 fixed = 8 total (was 7)
+1 💚 mvnsite 0m 26s the patch passed
+1 💚 javadoc 0m 19s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 0m 18s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 0m 48s the patch passed
+1 💚 shadedclient 18m 40s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 2m 8s hadoop-aws in the patch passed.
+1 💚 asflicense 0m 20s The patch does not generate ASF License warnings.
78m 24s
Subsystem Report/Notes
Docker ClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/3/artifact/out/Dockerfile
GITHUB PR #8306
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets
uname Linux d6a332a6d3f7 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 82cfe06
Default Java Ubuntu-17.0.18+8-Ubuntu-124.04.1
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.10+7-Ubuntu-124.04 /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.18+8-Ubuntu-124.04.1
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/3/testReport/
Max. process+thread count 611 (vs. ulimit of 5500)
modules C: hadoop-tools/hadoop-aws U: hadoop-tools/hadoop-aws
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/3/console
versions git=2.43.0 maven=3.9.11 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

@EnricoMi
Copy link
Copy Markdown
Contributor

EnricoMi commented Mar 8, 2026

Thanks for looking into this feature! Let's merge my PR into yours: deepujain#1

@deepujain
Copy link
Copy Markdown
Contributor Author

@EnricoMi Sure. Once you’re done, please let me know if anything is pending from my side.

I’m not familiar with the process or timeline yet, as this is my first time contributing to the Hadoop projects. I currently have a few pending PRs awaiting merge.

@deepujain
Copy link
Copy Markdown
Contributor Author

My JIRA id is deepujain

@EnricoMi
Copy link
Copy Markdown
Contributor

EnricoMi commented Mar 9, 2026

Great! If you are happy with my proposed changes to your PR, merge deepujain#1.

@github-actions github-actions Bot added the Common label Mar 9, 2026
@deepujain
Copy link
Copy Markdown
Contributor Author

Merged your PR, thanks for the docs and rephrase. @EnricoMi

DELETE_NON_EMPTY_DIRECTORY_ENABLED);
conf.setBoolean(DELETE_NON_EMPTY_DIRECTORY_ENABLED, true);
disableFilesystemCaching(conf);
AbstractFSContract contract = createContract(conf);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can just create a new filesystem
new S3AFileSystem() and call init on it...be sure to close the FS afterwards.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed: testCapabilityWhenEnabled() now creates a new S3AFileSystem(), calls init on it with the config, and closes the FS in a try-with-resources. Removed the contract/disableFilesystemCaching path. Ready for another look.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks, that's great

@hadoop-yetus
Copy link
Copy Markdown

🎊 +1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 22s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+0 🆗 xmllint 0m 0s xmllint was not available.
+0 🆗 markdownlint 0m 0s markdownlint was not available.
+1 💚 @author 0m 1s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 1 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 1m 59s Maven dependency ordering for branch
+1 💚 mvninstall 36m 37s trunk passed
+1 💚 compile 8m 59s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 compile 9m 47s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 checkstyle 2m 59s trunk passed
+1 💚 mvnsite 1m 43s trunk passed
+1 💚 javadoc 1m 13s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 1m 15s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 2m 27s trunk passed
+1 💚 shadedclient 17m 0s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+0 🆗 mvndep 0m 20s Maven dependency ordering for patch
+1 💚 mvninstall 1m 4s the patch passed
+1 💚 compile 8m 48s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javac 8m 48s the patch passed
+1 💚 compile 9m 59s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 javac 9m 59s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
-0 ⚠️ checkstyle 3m 29s /results-checkstyle-root.txt root: The patch generated 1 new + 7 unchanged - 0 fixed = 8 total (was 7)
+1 💚 mvnsite 1m 42s the patch passed
+1 💚 javadoc 1m 18s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 1m 9s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 2m 49s the patch passed
+1 💚 shadedclient 17m 16s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 16m 51s hadoop-common in the patch passed.
+1 💚 unit 2m 30s hadoop-aws in the patch passed.
+1 💚 asflicense 0m 43s The patch does not generate ASF License warnings.
157m 24s
Subsystem Report/Notes
Docker ClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/5/artifact/out/Dockerfile
GITHUB PR #8306
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient codespell detsecrets xmllint spotbugs checkstyle markdownlint
uname Linux 4acdc874c824 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / a38db61
Default Java Ubuntu-17.0.18+8-Ubuntu-124.04.1
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.10+7-Ubuntu-124.04 /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.18+8-Ubuntu-124.04.1
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/5/testReport/
Max. process+thread count 1268 (vs. ulimit of 5500)
modules C: hadoop-common-project/hadoop-common hadoop-tools/hadoop-aws U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/5/console
versions git=2.43.0 maven=3.9.11 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

Copy link
Copy Markdown
Contributor

@steveloughran steveloughran left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all good, one minor checkstyle change and I'm happy.

Presumably you've tested this against a store with the feature?

LOG.debug("deleting empty directory {}", path);
deleteObjectAtPath(path, key, false);
} else if (deleteNonEmptyDirectoryEnabled) {
LOG.debug("deleting non-empty directory {} with single request (endpoint supports it)", path);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yetus is complaining about line length; can you split it at the comma?

@deepujain
Copy link
Copy Markdown
Contributor Author

Checkstyle fix is in (split the long LOG.debug line in DeleteOperation.java).

Yes : tested against a VAST endpoint with the feature; enabled the option and confirmed recursive delete uses a single delete request.

Thanks for the review.

@hadoop-yetus
Copy link
Copy Markdown

🎊 +1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 22s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 1s codespell was not available.
+0 🆗 detsecrets 0m 1s detect-secrets was not available.
+0 🆗 xmllint 0m 1s xmllint was not available.
+0 🆗 markdownlint 0m 1s markdownlint was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 1 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 2m 6s Maven dependency ordering for branch
+1 💚 mvninstall 25m 3s trunk passed
+1 💚 compile 8m 30s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 compile 8m 46s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 checkstyle 2m 52s trunk passed
+1 💚 mvnsite 1m 43s trunk passed
+1 💚 javadoc 1m 27s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 1m 26s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 2m 35s trunk passed
+1 💚 shadedclient 15m 50s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+0 🆗 mvndep 0m 17s Maven dependency ordering for patch
+1 💚 mvninstall 1m 5s the patch passed
+1 💚 compile 8m 11s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javac 8m 11s the patch passed
+1 💚 compile 8m 47s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 javac 8m 47s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 checkstyle 2m 53s the patch passed
+1 💚 mvnsite 1m 48s the patch passed
+1 💚 javadoc 1m 24s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 1m 22s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 2m 47s the patch passed
+1 💚 shadedclient 15m 54s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 17m 44s hadoop-common in the patch passed.
+1 💚 unit 2m 27s hadoop-aws in the patch passed.
+1 💚 asflicense 0m 39s The patch does not generate ASF License warnings.
141m 12s
Subsystem Report/Notes
Docker ClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/6/artifact/out/Dockerfile
GITHUB PR #8306
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient codespell detsecrets xmllint spotbugs checkstyle markdownlint
uname Linux ffbe7a75d912 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 9f2d9dd
Default Java Ubuntu-17.0.18+8-Ubuntu-124.04.1
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.10+7-Ubuntu-124.04 /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.18+8-Ubuntu-124.04.1
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/6/testReport/
Max. process+thread count 3158 (vs. ulimit of 5500)
modules C: hadoop-common-project/hadoop-common hadoop-tools/hadoop-aws U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/6/console
versions git=2.43.0 maven=3.9.11 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

@deepujain
Copy link
Copy Markdown
Contributor Author

JIRA id is deepujain

Comment on lines +40 to +41
public class ITestS3ADeleteNonEmptyDirectoryCapability extends
AbstractContractDeleteTest {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Class ITestS3ADeleteNonEmptyDirectoryCapability extends AbstractContractDeleteTest, but ITestS3AContractDelete also extends AbstractContractDeleteTest, so those abstract tests are executed twice for the S3A filesystem.

Either add your capability tests to ITestS3AContractDelete, or have ITestS3ADeleteNonEmptyDirectoryCapability extends AbstractFSContractTestBase.

*/
@Test
public void testCapabilityDisabledByDefault() throws Throwable {
Assertions.assertThat(getFileSystem().hasPathCapability(new Path("/"),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These tests should work with any value for fs.s3a.delete.non-empty-directory.enabled set by the user (while testing other integration tests).

Suggested change
Assertions.assertThat(getFileSystem().hasPathCapability(new Path("/"),
Configuration conf = new Configuration(getFileSystem().getConf());
removeBaseAndBucketOverrides(getTestBucketName(conf), conf,
DELETE_NON_EMPTY_DIRECTORY_ENABLED);
disableFilesystemCaching(conf);
AbstractFSContract contract = createContract(conf);
contract.init();
Assertions.assertThat(contract.getTestFileSystem().hasPathCapability(new Path("/"),

This common code should be refactored out into a separate method.

@EnricoMi
Copy link
Copy Markdown
Contributor

@deepujain how did you test this?

Did you run ITestS3ADeleteNonEmptyDirectoryCapability against your VAST S3 endpoint?

Did you

  1. set fs.s3a.delete.non-empty-directory.enabled to true?
  2. set fs.s3a.client.s3.custom.headers to x-amz-delete-contents=true?

With 1., obviously, assertions in tests testDeleteDeepEmptyDir, testDeleteNonEmptyDirRecursive and testCapabilityDisabledByDefault fail. This is expected because dirs still exist after deletion fails silently.

With 1. and 2., non-delete requests fail for me with Invalid Argument (fs.delete involves non-delete requests):

org.apache.hadoop.fs.s3a.AWSBadRequestException: List vask-bucket:/test/ delimiter=/ keys=2 requester pays=null on /: software.amazon.awssdk.services.s3.model.S3Exception: Invalid Argument (Service: S3, Status Code: 400, Request ID: 31f13100005f19, Extended Request ID: 31f13100005f19) (SDK Attempt Count: 1):InvalidArgument: Invalid Argument (Service: S3, Status Code: 400, Request ID: 31f13100005f19, Extended Request ID: 31f13100005f19) (SDK Attempt Count: 1)
	at org.apache.hadoop.fs.s3a.S3AUtils.translateException(S3AUtils.java:271)
	at org.apache.hadoop.fs.s3a.Invoker.retryUntranslated(Invoker.java:481)
	at org.apache.hadoop.fs.s3a.Invoker.retryUntranslated(Invoker.java:431)
	at org.apache.hadoop.fs.s3a.S3AFileSystem.listObjects(S3AFileSystem.java:3106)
	at org.apache.hadoop.fs.s3a.S3AFileSystem.s3GetFileStatus(S3AFileSystem.java:4096)
	at org.apache.hadoop.fs.s3a.S3AFileSystem.innerGetFileStatus(S3AFileSystem.java:3987)
	at org.apache.hadoop.fs.s3a.S3AFileSystem$MkdirOperationCallbacksImpl.probePathStatus(S3AFileSystem.java:3846)
	at org.apache.hadoop.fs.s3a.impl.MkdirOperation.probePathStatusOrNull(MkdirOperation.java:216)
	at org.apache.hadoop.fs.s3a.impl.MkdirOperation.getPathStatusExpectingDir(MkdirOperation.java:237)
	at org.apache.hadoop.fs.s3a.impl.MkdirOperation.execute(MkdirOperation.java:134)
	at org.apache.hadoop.fs.s3a.impl.MkdirOperation.execute(MkdirOperation.java:59)
...

This is against VAST 5.4.3.1.

@EnricoMi
Copy link
Copy Markdown
Contributor

Adding this to hadoop-tools/hadoop-aws/src/test/resources/log4j.properties

log4j.logger.software.amazon.awssdk.thirdparty.org.apache.http.headers=DEBUG

shows request headers:

2026-04-10 10:43:27,384 [setup] DEBUG http.headers (LoggingManagedHttpClientConnection.java:onRequestSubmitted(133)) - http-outgoing-0 >> GET /vast-bucket?list-type=2&delimiter=%2F&max-keys=2&prefix=test%2F HTTP/1.1
2026-04-10 10:43:27,384 [setup] DEBUG http.headers (LoggingManagedHttpClientConnection.java:onRequestSubmitted(136)) - http-outgoing-0 >> Host: vast.company.org
2026-04-10 10:43:27,384 [setup] DEBUG http.headers (LoggingManagedHttpClientConnection.java:onRequestSubmitted(136)) - http-outgoing-0 >> amz-sdk-request: attempt=1; max=2
2026-04-10 10:43:27,385 [setup] DEBUG http.headers (LoggingManagedHttpClientConnection.java:onRequestSubmitted(136)) - http-outgoing-0 >> User-Agent: Hadoop 3.6.0-SNAPSHOT aws-sdk-java/2.35.4 md/io#sync md/http#Apache ua/2.1 api/S3#2.35.x os/Linux#5.15.0-91-generic lang/java#17.0.18 md/OpenJDK_64-Bit_Server_VM#17.0.18+8-Ubuntu-122.04.1 md/vendor#Ubuntu md/en_GB m/F,N,N,G hll/cross-region
2026-04-10 10:43:27,385 [setup] DEBUG http.headers (LoggingManagedHttpClientConnection.java:onRequestSubmitted(136)) - http-outgoing-0 >> x-amz-content-sha256: UNSIGNED-PAYLOAD
2026-04-10 10:43:27,385 [setup] DEBUG http.headers (LoggingManagedHttpClientConnection.java:onRequestSubmitted(136)) - http-outgoing-0 >> X-Amz-Date: 20260410T094327Z
2026-04-10 10:43:27,385 [setup] DEBUG http.headers (LoggingManagedHttpClientConnection.java:onRequestSubmitted(136)) - http-outgoing-0 >> x-amz-delete-contents: true
2026-04-10 10:43:27,385 [setup] DEBUG http.headers (LoggingManagedHttpClientConnection.java:onRequestSubmitted(136)) - http-outgoing-0 >> Connection: Keep-Alive
2026-04-10 10:43:28,389 [setup] DEBUG http.headers (LoggingManagedHttpClientConnection.java:onResponseReceived(122)) - http-outgoing-0 << HTTP/1.1 400 Bad Request
2026-04-10 10:43:28,390 [setup] DEBUG http.headers (LoggingManagedHttpClientConnection.java:onResponseReceived(125)) - http-outgoing-0 << x-amz-bucket-region: vast
2026-04-10 10:43:28,390 [setup] DEBUG http.headers (LoggingManagedHttpClientConnection.java:onResponseReceived(125)) - http-outgoing-0 << Content-Type: application/xml
2026-04-10 10:43:28,390 [setup] DEBUG http.headers (LoggingManagedHttpClientConnection.java:onResponseReceived(125)) - http-outgoing-0 << Transfer-Encoding: chunked
2026-04-10 10:43:28,391 [setup] DEBUG http.headers (LoggingManagedHttpClientConnection.java:onResponseReceived(125)) - http-outgoing-0 << Server: vast 5.4.3.1
2026-04-10 10:43:29,402 [setup] DEBUG s3a.Invoker (Invoker.java:retryUntranslated(474)) - List vast-bucket:/test/ delimiter=/ keys=2 requester pays=null ; software.amazon.awssdk.services.s3.model.S3Exception: Invalid Argument (Service: S3, Status Code: 400, Request ID: 30d1310001aac2, Extended Request ID: 30d1310001aac2) (SDK Attempt Count: 1), 
2026-04-10 10:43:29,402 [setup] DEBUG s3a.S3ARetryPolicy (S3ARetryPolicy.java:shouldRetry(318)) - Retry probe for AWSBadRequestException with 0 retries and 0 failovers, idempotent=true, due to org.apache.hadoop.fs.s3a.AWSBadRequestException: List playpen-enricmin222:/test/ delimiter=/ keys=2 requester pays=null on /: software.amazon.awssdk.services.s3.model.S3Exception: Invalid Argument (Service: S3, Status Code: 400, Request ID: 30d1310001aac2, Extended Request ID: 30d1310001aac2) (SDK Attempt Count: 1):InvalidArgument: Invalid Argument (Service: S3, Status Code: 400, Request ID: 30d1310001aac2, Extended Request ID: 30d1310001aac2) (SDK Attempt Count: 1)
org.apache.hadoop.fs.s3a.AWSBadRequestException: List vast-bucket:/test/ delimiter=/ keys=2 requester pays=null on /: software.amazon.awssdk.services.s3.model.S3Exception: Invalid Argument (Service: S3, Status Code: 400, Request ID: 30d1310001aac2, Extended Request ID: 30d1310001aac2) (SDK Attempt Count: 1):InvalidArgument: Invalid Argument (Service: S3, Status Code: 400, Request ID: 30d1310001aac2, Extended Request ID: 30d1310001aac2) (SDK Attempt Count: 1)
	at org.apache.hadoop.fs.s3a.S3AUtils.translateException(S3AUtils.java:271)
	at org.apache.hadoop.fs.s3a.Invoker.retryUntranslated(Invoker.java:481)
	at org.apache.hadoop.fs.s3a.Invoker.retryUntranslated(Invoker.java:431)
	at org.apache.hadoop.fs.s3a.S3AFileSystem.listObjects(S3AFileSystem.java:3106)
	at org.apache.hadoop.fs.s3a.S3AFileSystem.s3GetFileStatus(S3AFileSystem.java:4096)
	at org.apache.hadoop.fs.s3a.S3AFileSystem.innerGetFileStatus(S3AFileSystem.java:3987)
...

@EnricoMi
Copy link
Copy Markdown
Contributor

Maybe we also have to adjust the instrumentation: EnricoMi#2

At least we should make this debug log message correct when isFile = true:
https://github.com/EnricoMi/hadoop/pull/2/changes#diff-3aa3d4f85d90c3449329b03765cc25b834316b6dc1240c3c0a567d3ef51f66bfR394

@deepujain deepujain force-pushed the HADOOP-19801-delete-non-empty-directory branch from 9f2d9dd to 27eacbb Compare April 13, 2026 23:43
@deepujain
Copy link
Copy Markdown
Contributor Author

Addressed the current review feedback and force-pushed the branch. The optimized non-empty-directory path now sends x-amz-delete-contents: true only on that delete request instead of relying on a global fs.s3a.client.s3.custom.headers setting, the capability test no longer duplicates AbstractContractDeleteTest, and it now creates isolated filesystems after removing bucket/base overrides so user preset values do not leak into the assertions. I also fixed the delete debug logging to distinguish files from dir markers, and updated the docs to describe the request-scoped header behavior. Local validation passed with JAVA_HOME=/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home /opt/homebrew/bin/mvn -Dmaven.repo.local=/tmp/codex-m2 test -pl hadoop-tools/hadoop-aws -am -Dtest=TestRequestFactory -DskipTests=false (12 tests, 0 failures). I was not able to rerun against a VAST endpoint from here, so that endpoint-specific integration path remains unverified locally.

@hadoop-yetus
Copy link
Copy Markdown

🎊 +1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 21s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+0 🆗 xmllint 0m 0s xmllint was not available.
+0 🆗 markdownlint 0m 0s markdownlint was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 3 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 1m 45s Maven dependency ordering for branch
+1 💚 mvninstall 27m 8s trunk passed
+1 💚 compile 8m 34s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 compile 8m 50s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 checkstyle 3m 9s trunk passed
+1 💚 mvnsite 1m 59s trunk passed
+1 💚 javadoc 1m 33s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 1m 32s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 2m 47s trunk passed
+1 💚 shadedclient 15m 35s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+0 🆗 mvndep 0m 17s Maven dependency ordering for patch
+1 💚 mvninstall 1m 5s the patch passed
+1 💚 compile 8m 1s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javac 8m 1s the patch passed
+1 💚 compile 8m 43s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 javac 8m 43s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 checkstyle 2m 57s the patch passed
+1 💚 mvnsite 1m 58s the patch passed
+1 💚 javadoc 1m 33s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 1m 29s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 3m 3s the patch passed
+1 💚 shadedclient 15m 55s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 18m 7s hadoop-common in the patch passed.
+1 💚 unit 2m 44s hadoop-aws in the patch passed.
+1 💚 asflicense 0m 48s The patch does not generate ASF License warnings.
145m 30s
Subsystem Report/Notes
Docker ClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/7/artifact/out/Dockerfile
GITHUB PR #8306
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient codespell detsecrets xmllint spotbugs checkstyle markdownlint
uname Linux b12e19cb26b5 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 27eacbb
Default Java Ubuntu-17.0.18+8-Ubuntu-124.04.1
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.10+7-Ubuntu-124.04 /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.18+8-Ubuntu-124.04.1
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/7/testReport/
Max. process+thread count 1258 (vs. ulimit of 10000)
modules C: hadoop-common-project/hadoop-common hadoop-tools/hadoop-aws U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/7/console
versions git=2.43.0 maven=3.9.11 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

* Value: {@value}.
*/
public static final String DELETE_NON_EMPTY_DIRECTORY_HEADER =
"x-amz-delete-contents";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wouldn't put a proprietary (non AWS S3) header to the project.

Attempt #8417 is more generic and might be reusable for other purposes.

@deepujain deepujain force-pushed the HADOOP-19801-delete-non-empty-directory branch from 27eacbb to 1426ae3 Compare April 14, 2026 14:48
@deepujain
Copy link
Copy Markdown
Contributor Author

Addressed the new review point and force-pushed. This revision removes the hardcoded proprietary delete header from S3A, adds generic request-type custom header support (fs.s3a.client.{s3,sts}.custom.headers.request.REQUEST), and updates the non-empty-directory delete docs to use request-scoped configuration when an endpoint needs extra headers. Local validation passed with JAVA_HOME=/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home PATH=/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home/bin:$PATH /opt/homebrew/bin/mvn -Dmaven.repo.local=/tmp/codex-m2 test -pl hadoop-tools/hadoop-aws -am -Dtest=TestAwsClientConfig,TestRequestFactory -DskipTests=false (20 tests, 0 failures).

@hadoop-yetus
Copy link
Copy Markdown

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 21s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 1s codespell was not available.
+0 🆗 detsecrets 0m 1s detect-secrets was not available.
+0 🆗 xmllint 0m 1s xmllint was not available.
+0 🆗 markdownlint 0m 1s markdownlint was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 2 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 1m 59s Maven dependency ordering for branch
+1 💚 mvninstall 26m 51s trunk passed
+1 💚 compile 8m 34s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 compile 8m 48s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 checkstyle 2m 55s trunk passed
+1 💚 mvnsite 1m 58s trunk passed
+1 💚 javadoc 1m 33s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 1m 30s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 2m 48s trunk passed
+1 💚 shadedclient 15m 46s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+0 🆗 mvndep 0m 17s Maven dependency ordering for patch
+1 💚 mvninstall 1m 5s the patch passed
+1 💚 compile 8m 0s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javac 8m 0s the patch passed
+1 💚 compile 8m 44s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 javac 8m 44s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 checkstyle 2m 56s the patch passed
+1 💚 mvnsite 1m 57s the patch passed
-1 ❌ javadoc 0m 40s /results-javadoc-javadoc-hadoop-tools_hadoop-aws-jdkUbuntu-21.0.10+7-Ubuntu-124.04.txt hadoop-tools_hadoop-aws-jdkUbuntu-21.0.10+7-Ubuntu-124.04 with JDK Ubuntu-21.0.10+7-Ubuntu-124.04 generated 2 new + 929 unchanged - 0 fixed = 931 total (was 929)
-1 ❌ javadoc 0m 37s /results-javadoc-javadoc-hadoop-tools_hadoop-aws-jdkUbuntu-17.0.18+8-Ubuntu-124.04.1.txt hadoop-tools_hadoop-aws-jdkUbuntu-17.0.18+8-Ubuntu-124.04.1 with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1 generated 2 new + 851 unchanged - 0 fixed = 853 total (was 851)
+1 💚 spotbugs 3m 5s the patch passed
+1 💚 shadedclient 15m 56s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 18m 12s hadoop-common in the patch passed.
+1 💚 unit 2m 42s hadoop-aws in the patch passed.
+1 💚 asflicense 0m 46s The patch does not generate ASF License warnings.
145m 4s
Subsystem Report/Notes
Docker ClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/8/artifact/out/Dockerfile
GITHUB PR #8306
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient codespell detsecrets xmllint spotbugs checkstyle markdownlint
uname Linux 4ff1854937d6 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 1426ae3
Default Java Ubuntu-17.0.18+8-Ubuntu-124.04.1
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.10+7-Ubuntu-124.04 /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.18+8-Ubuntu-124.04.1
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/8/testReport/
Max. process+thread count 1508 (vs. ulimit of 10000)
modules C: hadoop-common-project/hadoop-common hadoop-tools/hadoop-aws U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/8/console
versions git=2.43.0 maven=3.9.11 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

@deepujain deepujain force-pushed the HADOOP-19801-delete-non-empty-directory branch from 1426ae3 to b530128 Compare April 21, 2026 18:04
@deepujain
Copy link
Copy Markdown
Contributor Author

Addressed the latest Yetus javadoc failure with the missing public Javadocs on the new request-header API additions, then force-pushed the updated single commit. Local validation passed with JAVA_HOME=/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home /opt/homebrew/bin/mvn -Dmaven.repo.local=/tmp/codex-m2 test -pl hadoop-tools/hadoop-aws -am -Dtest=TestAwsClientConfig,TestRequestFactory -DskipTests=false (20 tests, 0 failures). I also retried a local hadoop-aws javadoc build, but Maven still fails earlier in the reactor on cached hadoop-project-dist snapshot resolution before it reaches this module.

@hadoop-yetus
Copy link
Copy Markdown

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 7m 15s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+0 🆗 xmllint 0m 0s xmllint was not available.
+0 🆗 markdownlint 0m 0s markdownlint was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 2 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 1m 46s Maven dependency ordering for branch
+1 💚 mvninstall 29m 0s trunk passed
+1 💚 compile 8m 36s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 compile 8m 38s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 checkstyle 2m 58s trunk passed
+1 💚 mvnsite 1m 53s trunk passed
+1 💚 javadoc 1m 38s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 1m 28s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 2m 47s trunk passed
+1 💚 shadedclient 16m 23s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+0 🆗 mvndep 0m 18s Maven dependency ordering for patch
+1 💚 mvninstall 1m 7s the patch passed
+1 💚 compile 8m 4s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javac 8m 4s the patch passed
+1 💚 compile 8m 36s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 javac 8m 36s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 checkstyle 3m 1s the patch passed
+1 💚 mvnsite 1m 58s the patch passed
-1 ❌ javadoc 0m 39s /patch-javadoc-hadoop-tools_hadoop-aws-jdkUbuntu-21.0.10+7-Ubuntu-124.04.txt hadoop-aws in the patch failed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04.
-1 ❌ javadoc 0m 39s /patch-javadoc-hadoop-tools_hadoop-aws-jdkUbuntu-17.0.18+8-Ubuntu-124.04.1.txt hadoop-aws in the patch failed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1.
+1 💚 spotbugs 2m 56s the patch passed
+1 💚 shadedclient 15m 54s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 18m 23s hadoop-common in the patch passed.
+1 💚 unit 2m 44s hadoop-aws in the patch passed.
+1 💚 asflicense 0m 49s The patch does not generate ASF License warnings.
154m 26s
Subsystem Report/Notes
Docker ClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/9/artifact/out/Dockerfile
GITHUB PR #8306
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient codespell detsecrets xmllint spotbugs checkstyle markdownlint
uname Linux 015b5f5f9fe0 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / b530128
Default Java Ubuntu-17.0.18+8-Ubuntu-124.04.1
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.10+7-Ubuntu-124.04 /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.18+8-Ubuntu-124.04.1
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/9/testReport/
Max. process+thread count 1306 (vs. ulimit of 10000)
modules C: hadoop-common-project/hadoop-common hadoop-tools/hadoop-aws U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/9/console
versions git=2.43.0 maven=3.9.11 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

@deepujain deepujain force-pushed the HADOOP-19801-delete-non-empty-directory branch from b530128 to 619773b Compare April 22, 2026 01:18
@deepujain
Copy link
Copy Markdown
Contributor Author

Follow-up push for the latest javadoc artifact: the remaining new warning was on CUSTOM_REQUEST_HEADERS_S3_PREFIX because the added @value tag is not valid on that derived String constant. I removed that tag and force-pushed the updated single commit. The exact module-level javadoc command is still not reproducible locally here because standalone hadoop-aws resolution needs snapshot artifacts that are not available from apache.snapshots in this environment, but the targeted AWS tests from the earlier push still passed locally: TestAwsClientConfig and TestRequestFactory (20 tests, 0 failures).

@hadoop-yetus
Copy link
Copy Markdown

🎊 +1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 21s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+0 🆗 xmllint 0m 0s xmllint was not available.
+0 🆗 markdownlint 0m 0s markdownlint was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 2 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 1m 57s Maven dependency ordering for branch
+1 💚 mvninstall 26m 33s trunk passed
+1 💚 compile 8m 36s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 compile 8m 52s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 checkstyle 2m 56s trunk passed
+1 💚 mvnsite 1m 56s trunk passed
+1 💚 javadoc 1m 32s trunk passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 1m 31s trunk passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 2m 43s trunk passed
+1 💚 shadedclient 16m 22s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+0 🆗 mvndep 0m 17s Maven dependency ordering for patch
+1 💚 mvninstall 1m 10s the patch passed
+1 💚 compile 8m 9s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javac 8m 9s the patch passed
+1 💚 compile 8m 42s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 javac 8m 42s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 checkstyle 2m 53s the patch passed
+1 💚 mvnsite 1m 54s the patch passed
+1 💚 javadoc 1m 28s the patch passed with JDK Ubuntu-21.0.10+7-Ubuntu-124.04
+1 💚 javadoc 1m 31s the patch passed with JDK Ubuntu-17.0.18+8-Ubuntu-124.04.1
+1 💚 spotbugs 3m 3s the patch passed
+1 💚 shadedclient 16m 8s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 18m 12s hadoop-common in the patch passed.
+1 💚 unit 2m 45s hadoop-aws in the patch passed.
+1 💚 asflicense 0m 47s The patch does not generate ASF License warnings.
145m 29s
Subsystem Report/Notes
Docker ClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/10/artifact/out/Dockerfile
GITHUB PR #8306
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient codespell detsecrets xmllint spotbugs checkstyle markdownlint
uname Linux 2c828052dc81 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 619773b
Default Java Ubuntu-17.0.18+8-Ubuntu-124.04.1
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.10+7-Ubuntu-124.04 /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.18+8-Ubuntu-124.04.1
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/10/testReport/
Max. process+thread count 3154 (vs. ulimit of 10000)
modules C: hadoop-common-project/hadoop-common hadoop-tools/hadoop-aws U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8306/10/console
versions git=2.43.0 maven=3.9.11 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants