Skip to content

Commit

Permalink
fix protected abortMultipartUpload()
Browse files Browse the repository at this point in the history
  • Loading branch information
balamurugana committed Jun 26, 2020
1 parent c09134a commit 7ae792a
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 9 deletions.
34 changes: 34 additions & 0 deletions api/src/main/java/io/minio/AbortMultipartUploadResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* MinIO Java SDK for Amazon S3 Compatible Cloud Storage, (C) 2020 MinIO, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package io.minio;

import okhttp3.Headers;

/** Response class of MinioClient.abortMultipartUpload(). */
public class AbortMultipartUploadResponse extends GenericResponse {
private String uploadId;

public AbortMultipartUploadResponse(
Headers headers, String bucket, String region, String object, String uploadId) {
super(headers, bucket, region, object);
this.uploadId = uploadId;
}

public String uploadId() {
return uploadId;
}
}
41 changes: 32 additions & 9 deletions api/src/main/java/io/minio/MinioClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -2494,10 +2494,10 @@ public ObjectWriteResponse composeObject(ComposeObjectArgs args)
return completeMultipartUpload(
args.bucket(), getRegion(args.bucket()), args.object(), uploadId, totalParts, null, null);
} catch (RuntimeException e) {
abortMultipartUpload(args.bucket(), args.object(), uploadId);
abortMultipartUpload(args.bucket(), args.region(), args.object(), uploadId, null, null);
throw e;
} catch (Exception e) {
abortMultipartUpload(args.bucket(), args.object(), uploadId);
abortMultipartUpload(args.bucket(), args.region(), args.object(), uploadId, null, null);
throw e;
}
}
Expand Down Expand Up @@ -4866,12 +4866,12 @@ private ObjectWriteResponse putObject(
args.bucket(), args.region(), args.object(), uploadId, parts, null, null);
} catch (RuntimeException e) {
if (uploadId != null) {
abortMultipartUpload(args.bucket(), args.object(), uploadId);
abortMultipartUpload(args.bucket(), args.region(), args.object(), uploadId, null, null);
}
throw e;
} catch (Exception e) {
if (uploadId != null) {
abortMultipartUpload(args.bucket(), args.object(), uploadId);
abortMultipartUpload(args.bucket(), args.region(), args.object(), uploadId, null, null);
}
throw e;
}
Expand Down Expand Up @@ -6191,7 +6191,7 @@ public void removeIncompleteUpload(String bucketName, String objectName)
for (Result<Upload> r : listIncompleteUploads(bucketName, objectName, true, false)) {
Upload upload = r.get();
if (objectName.equals(upload.objectName())) {
abortMultipartUpload(bucketName, objectName, upload.uploadId());
abortMultipartUpload(bucketName, null, objectName, upload.uploadId(), null, null);
return;
}
}
Expand Down Expand Up @@ -7083,8 +7083,12 @@ public Result<NotificationRecords> next() {
* S3 API</a>.
*
* @param bucketName Name of the bucket.
* @param region Region of the bucket.
* @param objectName Object name in the bucket.
* @param uploadId Upload ID.
* @param extraHeaders Extra headers (Optional).
* @param extraQueryParams Extra query parameters (Optional).
* @return {@link AbortMultipartUploadResponse} object.
* @throws ErrorResponseException thrown to indicate S3 service returned an error response.
* @throws IllegalArgumentException throws to indicate invalid argument passed.
* @throws InsufficientDataException thrown to indicate not enough data available in InputStream.
Expand All @@ -7097,13 +7101,32 @@ public Result<NotificationRecords> next() {
* @throws NoSuchAlgorithmException thrown to indicate missing of MD5 or SHA-256 digest library.
* @throws XmlParserException thrown to indicate XML parsing error.
*/
protected void abortMultipartUpload(String bucketName, String objectName, String uploadId)
protected AbortMultipartUploadResponse abortMultipartUpload(
String bucketName,
String region,
String objectName,
String uploadId,
Multimap<String, String> extraHeaders,
Multimap<String, String> extraQueryParams)
throws InvalidBucketNameException, IllegalArgumentException, NoSuchAlgorithmException,
InsufficientDataException, IOException, InvalidKeyException, ServerException,
XmlParserException, ErrorResponseException, InternalException, InvalidResponseException {
Map<String, String> queryParamMap = new HashMap<>();
queryParamMap.put(UPLOAD_ID, uploadId);
executeDelete(bucketName, objectName, queryParamMap);
Multimap<String, String> queryParams = HashMultimap.create();
if (extraQueryParams != null) queryParams.putAll(extraQueryParams);
queryParams.put(UPLOAD_ID, uploadId);
try (Response response =
execute(
Method.DELETE,
bucketName,
objectName,
(region != null) ? region : getRegion(bucketName),
extraHeaders,
queryParams,
null,
0)) {
return new AbortMultipartUploadResponse(
response.headers(), bucketName, region, objectName, uploadId);
}
}

/**
Expand Down

0 comments on commit 7ae792a

Please sign in to comment.