Skip to content

HADOOP-19992. Retry OSS multipart completion on QpsLimitExceeded. - #8750

Open
beryllw wants to merge 1 commit into
apache:trunkfrom
beryllw:codex/hadoop-aliyun-complete-retry
Open

beryllw wants to merge 1 commit into
apache:trunkfrom
beryllw:codex/hadoop-aliyun-complete-retry

Conversation

@beryllw

@beryllw beryllw commented Sep 23, 2026 •

Copy link
Copy Markdown

Generated-by: OpenAI Codex

Description of PR

HADOOP-19992

The OSS SDK does not retry CompleteMultipartUpload by default, so QpsLimitExceeded can fail multipart uploads and copies even when fs.oss.attempts.maximum is configured.

Share completion retry logic between uploads and copies, retrying only QpsLimitExceeded with Hadoop's exponential backoff and jitter. Add fs.oss.multipart.complete.retry.limit (default: 3, range: 0–10) and fs.oss.multipart.complete.retry.interval (default: 500ms), with each delay capped at 10s. Document the settings and extend the existing test class without adding dependencies.

How was this patch tested?

  • Compiled the changed Java sources and ran TestAliyunOSSFileSystemStore using a standalone JUnit launcher with OSS SDK 3.18.1 and locally cached Hadoop dependencies: 4 unit tests passed; 3 live OSS tests were skipped because credentials were unavailable.
  • Covered retry success/exhaustion, disabled retries, backoff and delay cap, configuration validation, non-retryable failures, interruption, and multipart copy completion/abort behavior.
  • git diff --check passed. Full Maven validation was not completed because required build plugins and dependencies were unavailable locally.
  • Live OSS integration tests have not been run; no endpoint was used.

For code changes:

  • Does the title of this PR start with the corresponding JIRA issue id (e.g. 'HADOOP-17799. Your PR title ...')?
  • Object storage: Have the integration tests been executed and the endpoint
    declared according to the connector-specific documentation? Note: Automated CI
    testing doesn't cover all cases so manual testing with cloud storage is still
    required.
  • If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0? N/A: no new dependencies.
  • If applicable, have you updated the LICENSE, LICENSE-binary, NOTICE-binary files? N/A: no licensing changes.

AI Tooling

Contains content generated by OpenAI Codex.

@hadoop-yetus

Copy link
Copy Markdown

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 19m 23s 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 🆗 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 _
+1 💚 mvninstall 49m 39s trunk passed
+1 💚 compile 0m 49s trunk passed with JDK Ubuntu-21.0.12.1+1-1-24.04.4-Ubuntu
+1 💚 compile 0m 49s trunk passed with JDK Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
+1 💚 checkstyle 0m 49s trunk passed
+1 💚 mvnsite 0m 52s trunk passed
+1 💚 javadoc 0m 51s trunk passed with JDK Ubuntu-21.0.12.1+1-1-24.04.4-Ubuntu
+1 💚 javadoc 0m 48s trunk passed with JDK Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
+1 💚 spotbugs 1m 8s trunk passed
+1 💚 shadedclient 34m 39s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+1 💚 mvninstall 0m 20s the patch passed
+1 💚 compile 0m 21s the patch passed with JDK Ubuntu-21.0.12.1+1-1-24.04.4-Ubuntu
+1 💚 javac 0m 21s the patch passed
+1 💚 compile 0m 20s the patch passed with JDK Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
+1 💚 javac 0m 20s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
-0 ⚠️ checkstyle 0m 17s /results-checkstyle-hadoop-tools_hadoop-aliyun.txt hadoop-tools/hadoop-aliyun: The patch generated 1 new + 1 unchanged - 0 fixed = 2 total (was 1)
+1 💚 mvnsite 0m 22s the patch passed
-1 ❌ javadoc 0m 21s /results-javadoc-javadoc-hadoop-tools_hadoop-aliyun-jdkUbuntu-21.0.12.1+1-1-24.04.4-Ubuntu.txt hadoop-tools_hadoop-aliyun-jdkUbuntu-21.0.12.1+1-1-24.04.4-Ubuntu with JDK Ubuntu-21.0.12.1+1-1-24.04.4-Ubuntu generated 4 new + 115 unchanged - 0 fixed = 119 total (was 115)
-1 ❌ javadoc 0m 21s /results-javadoc-javadoc-hadoop-tools_hadoop-aliyun-jdkUbuntu-17.0.20.1+1-1-24.04-Ubuntu.txt hadoop-tools_hadoop-aliyun-jdkUbuntu-17.0.20.1+1-1-24.04-Ubuntu with JDK Ubuntu-17.0.20.1+1-1-24.04-Ubuntu generated 4 new + 112 unchanged - 0 fixed = 116 total (was 112)
+1 💚 spotbugs 0m 48s the patch passed
+1 💚 shadedclient 33m 49s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 0m 25s hadoop-aliyun in the patch passed.
+1 💚 asflicense 0m 35s The patch does not generate ASF License warnings.
150m 59s
Subsystem Report/Notes
Docker ClientAPI=1.56 ServerAPI=1.56 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8750/1/artifact/out/Dockerfile
GITHUB PR #8750
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets markdownlint
uname Linux 3b676b918fb4 5.15.0-185-generic #195-Ubuntu SMP Fri Jun 19 17:11:50 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 173db43
Default Java Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.12.1+1-1-24.04.4-Ubuntu /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8750/1/testReport/
Max. process+thread count 583 (vs. ulimit of 10000)
modules C: hadoop-tools/hadoop-aliyun U: hadoop-tools/hadoop-aliyun
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8750/1/console
versions git=2.43.0 maven=3.9.15 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

This branch has not been deployed

No deployments
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.

2 participants