Skip to content

Add retry support for removeObjects()/completeMultipartUpload() APIs#1704

Open
balamurugana wants to merge 1 commit into
minio:masterfrom
balamurugana:Add-retry-support-for-removeObjects-completeMultipartUpload-APIs
Open

Add retry support for removeObjects()/completeMultipartUpload() APIs#1704
balamurugana wants to merge 1 commit into
minio:masterfrom
balamurugana:Add-retry-support-for-removeObjects-completeMultipartUpload-APIs

Conversation

@balamurugana
Copy link
Copy Markdown
Member

As S3 error response of DeleteObjects and CompleteMultipartUpload S3 APIs is returned with HTTP status code 2xx, MinIO Client retries at high level by S3 error codes InternalError, RequestTimeout, ServiceUnavailable and SlowDown.

@balamurugana balamurugana force-pushed the Add-retry-support-for-removeObjects-completeMultipartUpload-APIs branch 5 times, most recently from 0de4406 to 2124db9 Compare May 22, 2026 12:40
Comment thread api/src/main/java/io/minio/BaseS3Client.java Outdated
@balamurugana balamurugana force-pushed the Add-retry-support-for-removeObjects-completeMultipartUpload-APIs branch from 2124db9 to b1f0244 Compare May 22, 2026 13:01
@harshavardhana harshavardhana requested a review from Copilot May 22, 2026 17:53
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds higher-level retry behavior for S3 operations where failures can be returned as HTTP 2xx responses (notably DeleteObjects / CompleteMultipartUpload), and exposes retry tuning knobs through new delayMs / maxRetries fields on several args types.

Changes:

  • Add retry configuration (delayMs, maxRetries) to multiple argument classes and propagate them into multipart completion / composition flows.
  • Implement retry loops for MinioAsyncClient.removeObjects() (based on S3 error codes) and BaseS3Client.completeMultipartUpload() (on exceptional completion).
  • Improve HTTP trace behavior to avoid dumping raw request bodies in some cases, and refactor Admin client tracing to rely on Http.StatusRetryInterceptor.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 12 comments.

Show a summary per file
File Description
functional/TestMinioClient.java Adjusts functional cleanup to surface MinioException during remove-objects iteration.
api/src/main/java/io/minio/RemoveObjectsArgs.java Adds retry/backoff parameters for remove-objects operations.
api/src/main/java/io/minio/PutObjectBaseArgs.java Adds retry/backoff parameters intended to propagate into multipart completion.
api/src/main/java/io/minio/MinioAsyncClient.java Adds retry/backoff loop for removeObjects() based on retryable S3 error codes.
api/src/main/java/io/minio/Http.java Avoids tracing raw bytes for some PUT/POST bodies by emitting a placeholder.
api/src/main/java/io/minio/ComposeObjectArgs.java Adds retry/backoff parameters for compose flows.
api/src/main/java/io/minio/CompleteMultipartUploadArgs.java Adds retry/backoff parameters and propagates them from compose/put args.
api/src/main/java/io/minio/BaseS3Client.java Adds retryable S3 error code set and implements retry logic for complete multipart upload.
adminapi/src/main/java/io/minio/admin/MinioAdminClient.java Refactors tracing and adds retry configuration support via interceptor replacement.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread api/src/main/java/io/minio/BaseS3Client.java
Comment thread api/src/main/java/io/minio/BaseS3Client.java
Comment thread api/src/main/java/io/minio/BaseS3Client.java
Comment thread api/src/main/java/io/minio/MinioAsyncClient.java
Comment thread api/src/main/java/io/minio/Http.java
Comment thread api/src/main/java/io/minio/ComposeObjectArgs.java Outdated
Comment thread api/src/main/java/io/minio/CompleteMultipartUploadArgs.java Outdated
Comment thread adminapi/src/main/java/io/minio/admin/MinioAdminClient.java
Comment thread api/src/main/java/io/minio/ComposeObjectArgs.java
Comment thread adminapi/src/main/java/io/minio/admin/MinioAdminClient.java
As S3 error response of DeleteObjects and CompleteMultipartUpload S3
APIs is returned with HTTP status code 2xx, MinIO Client retries at
high level by S3 error codes `InternalError`, `RequestTimeout`,
`ServiceUnavailable` and `SlowDown`.

Signed-off-by: Bala.FA <bala@minio.io>
@balamurugana balamurugana force-pushed the Add-retry-support-for-removeObjects-completeMultipartUpload-APIs branch from b1f0244 to 629ec18 Compare May 23, 2026 01:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants