This is an automated email from the ASF dual-hosted git repository.
szetszwo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 3dd6e29f2d HDDS-8463. S3 key uniqueness in deletedTable (#4660)
3dd6e29f2d is described below
commit 3dd6e29f2deb1d27aef2e82fcf9ef962e996cc03
Author: Sumit Agrawal <[email protected]>
AuthorDate: Sun May 14 11:30:15 2023 +0530
HDDS-8463. S3 key uniqueness in deletedTable (#4660)
---
.../main/java/org/apache/hadoop/ozone/OmUtils.java | 15 ++-------
.../ozone/om/request/file/OMFileRequest.java | 16 ---------
.../hadoop/ozone/om/request/key/OMKeyRequest.java | 4 +--
.../S3MultipartUploadCompleteRequest.java | 24 +++++---------
.../S3MultipartUploadCompleteRequestWithFSO.java | 10 +++---
.../response/key/AbstractOMKeyDeleteResponse.java | 4 +--
.../key/OMDirectoriesPurgeResponseWithFSO.java | 2 +-
.../multipart/S3MultipartUploadAbortResponse.java | 23 ++++++-------
.../S3MultipartUploadCommitPartResponse.java | 24 +++++++-------
.../S3MultipartUploadCompleteResponse.java | 30 +++++++----------
.../S3MultipartUploadCompleteResponseWithFSO.java | 8 ++---
.../ozone/om/request/OMRequestTestUtils.java | 2 +-
.../TestS3MultipartUploadCompleteRequest.java | 38 +++++++++++++++-------
...estS3MultipartUploadCompleteRequestWithFSO.java | 17 ----------
.../om/response/key/TestOMKeyCommitResponse.java | 2 +-
.../s3/multipart/TestS3MultipartResponse.java | 12 +++----
.../TestS3MultipartUploadAbortResponse.java | 8 +++--
...S3MultipartUploadCommitPartResponseWithFSO.java | 19 ++++++++---
...stS3MultipartUploadCompleteResponseWithFSO.java | 13 ++++----
19 files changed, 119 insertions(+), 152 deletions(-)
diff --git
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java
index 8c40c36279..0ec7a33888 100644
--- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java
+++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java
@@ -450,7 +450,6 @@ public final class OmUtils {
* repeatedOmKeyInfo instance.
* 3. Set the updateID to the transactionLogIndex.
* @param keyInfo args supplied by client
- * @param repeatedOmKeyInfo key details from deletedTable
* @param trxnLogIndex For Multipart keys, this is the transactionLogIndex
* of the MultipartUploadAbort request which needs to
* be set as the updateID of the partKeyInfos.
@@ -459,8 +458,7 @@ public final class OmUtils {
* @return {@link RepeatedOmKeyInfo}
*/
public static RepeatedOmKeyInfo prepareKeyForDelete(OmKeyInfo keyInfo,
- RepeatedOmKeyInfo repeatedOmKeyInfo, long trxnLogIndex,
- boolean isRatisEnabled) {
+ long trxnLogIndex, boolean isRatisEnabled) {
// If this key is in a GDPR enforced bucket, then before moving
// KeyInfo to deletedTable, remove the GDPR related metadata and
// FileEncryptionInfo from KeyInfo.
@@ -476,15 +474,8 @@ public final class OmUtils {
// Set the updateID
keyInfo.setUpdateID(trxnLogIndex, isRatisEnabled);
- if (repeatedOmKeyInfo == null) {
- //The key doesn't exist in deletedTable, so create a new instance.
- repeatedOmKeyInfo = new RepeatedOmKeyInfo(keyInfo);
- } else {
- //The key exists in deletedTable, so update existing instance.
- repeatedOmKeyInfo.addOmKeyInfo(keyInfo);
- }
-
- return repeatedOmKeyInfo;
+ //The key doesn't exist in deletedTable, so create a new instance.
+ return new RepeatedOmKeyInfo(keyInfo);
}
/**
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileRequest.java
index 662780c94d..99ff0e7286 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileRequest.java
@@ -47,7 +47,6 @@ import
org.apache.hadoop.ozone.om.helpers.OmKeyLocationInfoGroup;
import org.apache.hadoop.ozone.om.helpers.OzoneFSUtils;
import org.apache.hadoop.ozone.om.helpers.OzoneFileStatus;
import org.apache.hadoop.ozone.om.helpers.BucketLayout;
-import org.apache.hadoop.ozone.om.helpers.RepeatedOmKeyInfo;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
@@ -513,21 +512,6 @@ public final class OMFileRequest {
.addCacheEntry(dbFileKey, omFileInfo, trxnLogIndex);
}
- /**
- * Updating the list of OmKeyInfo eligible for deleting blocks.
- *
- * @param omMetadataManager OM Metadata Manager
- * @param dbDeletedKey Ozone key in deletion table
- * @param keysToDelete Repeated OMKeyInfos
- * @param trxnLogIndex transaction log index
- */
- public static void addDeletedTableCacheEntry(
- OMMetadataManager omMetadataManager, String dbDeletedKey,
- RepeatedOmKeyInfo keysToDelete, long trxnLogIndex) {
- omMetadataManager.getDeletedTable().addCacheEntry(
- dbDeletedKey, keysToDelete, trxnLogIndex);
- }
-
/**
* Adding omKeyInfo to open file table.
*
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRequest.java
index 43e4bb697d..d8ec4637e2 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRequest.java
@@ -796,9 +796,7 @@ public abstract class OMKeyRequest extends OMClientRequest {
/**
* Prepare key for deletion service on overwrite.
*
- * @param dbOzoneKey key to point to an object in RocksDB
* @param keyToDelete OmKeyInfo of a key to be in deleteTable
- * @param omMetadataManager
* @param trxnLogIndex
* @param isRatisEnabled
* @return Old keys eligible for deletion.
@@ -807,7 +805,7 @@ public abstract class OMKeyRequest extends OMClientRequest {
protected RepeatedOmKeyInfo getOldVersionsToCleanUp(
@Nonnull OmKeyInfo keyToDelete, long trxnLogIndex,
boolean isRatisEnabled) throws IOException {
- return OmUtils.prepareKeyForDelete(keyToDelete, null,
+ return OmUtils.prepareKeyForDelete(keyToDelete,
trxnLogIndex, isRatisEnabled);
}
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java
index 079b5e85ec..318c97461f 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java
@@ -44,7 +44,6 @@ import
org.apache.hadoop.ozone.om.helpers.OmKeyLocationInfoGroup;
import org.apache.hadoop.ozone.om.helpers.OmMultipartKeyInfo;
import org.apache.hadoop.ozone.om.helpers.RepeatedOmKeyInfo;
import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerDoubleBufferHelper;
-import org.apache.hadoop.ozone.om.request.file.OMFileRequest;
import org.apache.hadoop.ozone.om.request.key.OMKeyRequest;
import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
import org.apache.hadoop.ozone.om.request.validation.RequestFeatureValidator;
@@ -206,11 +205,11 @@ public class S3MultipartUploadCompleteRequest extends
OMKeyRequest {
dbOzoneKey, partKeyInfoMap, partLocationInfos, dataSize);
//Find all unused parts.
- List<OmKeyInfo> unUsedParts = new ArrayList<>();
+ List<OmKeyInfo> allKeyInfoToRemove = new ArrayList<>();
for (Map.Entry< Integer, PartKeyInfo> partKeyInfo :
partKeyInfoMap.entrySet()) {
if (!partNumbers.contains(partKeyInfo.getKey())) {
- unUsedParts.add(OmKeyInfo
+ allKeyInfoToRemove.add(OmKeyInfo
.getFromProtobuf(partKeyInfo.getValue().getPartKeyInfo()));
}
}
@@ -219,14 +218,14 @@ public class S3MultipartUploadCompleteRequest extends
OMKeyRequest {
// creation and key commit, old versions will be just overwritten and
// not kept. Bucket versioning will be effective from the first key
// creation after the knob turned on.
- RepeatedOmKeyInfo oldKeyVersionsToDelete = null;
OmKeyInfo keyToDelete =
omMetadataManager.getKeyTable(getBucketLayout()).get(dbOzoneKey);
long usedBytesDiff = 0;
boolean isNamespaceUpdate = false;
if (keyToDelete != null && !omBucketInfo.getIsVersionEnabled()) {
- oldKeyVersionsToDelete = getOldVersionsToCleanUp(
+ RepeatedOmKeyInfo oldKeyVersionsToDelete = getOldVersionsToCleanUp(
keyToDelete, trxnLogIndex, ozoneManager.isRatisEnabled());
+ allKeyInfoToRemove.addAll(oldKeyVersionsToDelete.getOmKeyInfoList());
usedBytesDiff -= keyToDelete.getReplicatedSize();
} else {
checkBucketQuotaInNamespace(omBucketInfo, 1L);
@@ -247,11 +246,6 @@ public class S3MultipartUploadCompleteRequest extends
OMKeyRequest {
updateCache(omMetadataManager, dbBucketKey, omBucketInfo, dbOzoneKey,
dbMultipartOpenKey, multipartKey, omKeyInfo, trxnLogIndex);
- if (oldKeyVersionsToDelete != null) {
- OMFileRequest.addDeletedTableCacheEntry(omMetadataManager,
dbOzoneKey,
- oldKeyVersionsToDelete, trxnLogIndex);
- }
-
omResponse.setCompleteMultiPartUploadResponse(
MultipartUploadCompleteResponse.newBuilder()
.setVolume(requestedVolume)
@@ -263,7 +257,7 @@ public class S3MultipartUploadCompleteRequest extends
OMKeyRequest {
long bucketId = omMetadataManager.getBucketId(volumeName, bucketName);
omClientResponse =
getOmClientResponse(multipartKey, omResponse, dbMultipartOpenKey,
- omKeyInfo, unUsedParts, omBucketInfo, oldKeyVersionsToDelete,
+ omKeyInfo, allKeyInfoToRemove, omBucketInfo,
volumeId, bucketId);
result = Result.SUCCESS;
@@ -302,13 +296,13 @@ public class S3MultipartUploadCompleteRequest extends
OMKeyRequest {
@SuppressWarnings("parameternumber")
protected OMClientResponse getOmClientResponse(String multipartKey,
OMResponse.Builder omResponse, String dbMultipartOpenKey,
- OmKeyInfo omKeyInfo, List<OmKeyInfo> unUsedParts,
- OmBucketInfo omBucketInfo, RepeatedOmKeyInfo oldKeyVersionsToDelete,
+ OmKeyInfo omKeyInfo, List<OmKeyInfo> allKeyInfoToRemove,
+ OmBucketInfo omBucketInfo,
long volumeId, long bucketId) {
return new S3MultipartUploadCompleteResponse(omResponse.build(),
- multipartKey, dbMultipartOpenKey, omKeyInfo, unUsedParts,
- getBucketLayout(), omBucketInfo, oldKeyVersionsToDelete);
+ multipartKey, dbMultipartOpenKey, omKeyInfo, allKeyInfoToRemove,
+ getBucketLayout(), omBucketInfo);
}
protected void checkDirectoryAlreadyExists(OzoneManager ozoneManager,
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequestWithFSO.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequestWithFSO.java
index ae31f949fc..80ac2de8d3 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequestWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequestWithFSO.java
@@ -24,7 +24,6 @@ import org.apache.hadoop.ozone.om.exceptions.OMException;
import org.apache.hadoop.ozone.om.helpers.BucketLayout;
import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
-import org.apache.hadoop.ozone.om.helpers.RepeatedOmKeyInfo;
import org.apache.hadoop.ozone.om.request.file.OMFileRequest;
import org.apache.hadoop.ozone.om.response.OMClientResponse;
import
org.apache.hadoop.ozone.om.response.s3.multipart.S3MultipartUploadCompleteResponse;
@@ -162,13 +161,12 @@ public class S3MultipartUploadCompleteRequestWithFSO
protected OMClientResponse getOmClientResponse(String multipartKey,
OzoneManagerProtocolProtos.OMResponse.Builder omResponse,
String dbMultipartOpenKey, OmKeyInfo omKeyInfo,
- List<OmKeyInfo> unUsedParts, OmBucketInfo omBucketInfo,
- RepeatedOmKeyInfo oldKeyVersionsToDelete, long volumeId, long bucketId) {
+ List<OmKeyInfo> allKeyInfoToRemove, OmBucketInfo omBucketInfo,
+ long volumeId, long bucketId) {
return new S3MultipartUploadCompleteResponseWithFSO(omResponse.build(),
- multipartKey, dbMultipartOpenKey, omKeyInfo, unUsedParts,
- getBucketLayout(), omBucketInfo, oldKeyVersionsToDelete,
- volumeId, bucketId);
+ multipartKey, dbMultipartOpenKey, omKeyInfo, allKeyInfoToRemove,
+ getBucketLayout(), omBucketInfo, volumeId, bucketId);
}
@Override
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/key/AbstractOMKeyDeleteResponse.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/key/AbstractOMKeyDeleteResponse.java
index 276baca4de..7dd89281e0 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/key/AbstractOMKeyDeleteResponse.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/key/AbstractOMKeyDeleteResponse.java
@@ -99,7 +99,7 @@ public abstract class AbstractOMKeyDeleteResponse extends
OmKeyResponse {
// if it is not null, then we simply add to the list and store this
// instance in deletedTable.
RepeatedOmKeyInfo repeatedOmKeyInfo = OmUtils.prepareKeyForDelete(
- omKeyInfo, null, omKeyInfo.getUpdateID(),
+ omKeyInfo, omKeyInfo.getUpdateID(),
isRatisEnabled);
String delKeyName = omMetadataManager.getOzoneDeletePathKey(
omKeyInfo.getObjectID(), keyName);
@@ -142,7 +142,7 @@ public abstract class AbstractOMKeyDeleteResponse extends
OmKeyResponse {
// if it is not null, then we simply add to the list and store this
// instance in deletedTable.
RepeatedOmKeyInfo repeatedOmKeyInfo = OmUtils.prepareKeyForDelete(
- omKeyInfo, null, omKeyInfo.getUpdateID(),
+ omKeyInfo, omKeyInfo.getUpdateID(),
isRatisEnabled);
omMetadataManager.getDeletedTable().putWithBatch(
batchOperation, deleteKeyName, repeatedOmKeyInfo);
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/key/OMDirectoriesPurgeResponseWithFSO.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/key/OMDirectoriesPurgeResponseWithFSO.java
index 06450638be..b47aae0d26 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/key/OMDirectoriesPurgeResponseWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/key/OMDirectoriesPurgeResponseWithFSO.java
@@ -130,7 +130,7 @@ public class OMDirectoriesPurgeResponseWithFSO extends
OmKeyResponse {
}
RepeatedOmKeyInfo repeatedOmKeyInfo = OmUtils.prepareKeyForDelete(
- keyInfo, null, keyInfo.getUpdateID(), isRatisEnabled);
+ keyInfo, keyInfo.getUpdateID(), isRatisEnabled);
String deletedKey = omMetadataManager
.getOzoneKey(keyInfo.getVolumeName(), keyInfo.getBucketName(),
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadAbortResponse.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadAbortResponse.java
index 29dbd88856..d30608429e 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadAbortResponse.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadAbortResponse.java
@@ -97,19 +97,20 @@ public class S3MultipartUploadAbortResponse extends
OmKeyResponse {
OmKeyInfo currentKeyPartInfo =
OmKeyInfo.getFromProtobuf(partKeyInfo.getPartKeyInfo());
- RepeatedOmKeyInfo repeatedOmKeyInfo =
- omMetadataManager.getDeletedTable().get(partKeyInfo.getPartName());
-
- repeatedOmKeyInfo = OmUtils.prepareKeyForDelete(currentKeyPartInfo,
- repeatedOmKeyInfo, omMultipartKeyInfo.getUpdateID(), isRatisEnabled);
+ RepeatedOmKeyInfo repeatedOmKeyInfo = OmUtils.prepareKeyForDelete(
+ currentKeyPartInfo, omMultipartKeyInfo.getUpdateID(),
+ isRatisEnabled);
+ // multi-part key format is volumeName/bucketName/keyName/uploadId
+ String deleteKey = omMetadataManager.getOzoneDeletePathKey(
+ currentKeyPartInfo.getObjectID(), multipartKey);
omMetadataManager.getDeletedTable().putWithBatch(batchOperation,
- partKeyInfo.getPartName(), repeatedOmKeyInfo);
-
- // update bucket usedBytes.
- omMetadataManager.getBucketTable().putWithBatch(batchOperation,
- omMetadataManager.getBucketKey(omBucketInfo.getVolumeName(),
- omBucketInfo.getBucketName()), omBucketInfo);
+ deleteKey, repeatedOmKeyInfo);
}
+
+ // update bucket usedBytes.
+ omMetadataManager.getBucketTable().putWithBatch(batchOperation,
+ omMetadataManager.getBucketKey(omBucketInfo.getVolumeName(),
+ omBucketInfo.getBucketName()), omBucketInfo);
}
}
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadCommitPartResponse.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadCommitPartResponse.java
index c4739eb45f..f11789b1ef 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadCommitPartResponse.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadCommitPartResponse.java
@@ -102,15 +102,15 @@ public class S3MultipartUploadCommitPartResponse extends
OmKeyResponse {
// multipart upload. So, delete this part information.
RepeatedOmKeyInfo repeatedOmKeyInfo =
- omMetadataManager.getDeletedTable().get(openKey);
-
- repeatedOmKeyInfo =
OmUtils.prepareKeyForDelete(openPartKeyInfoToBeDeleted,
- repeatedOmKeyInfo, openPartKeyInfoToBeDeleted.getUpdateID(),
+ openPartKeyInfoToBeDeleted.getUpdateID(),
isRatisEnabled);
+ // multi-part key format is volumeName/bucketName/keyName/uploadId
+ String deleteKey = omMetadataManager.getOzoneDeletePathKey(
+ openPartKeyInfoToBeDeleted.getObjectID(), multipartKey);
omMetadataManager.getDeletedTable().putWithBatch(batchOperation,
- openKey, repeatedOmKeyInfo);
+ deleteKey, repeatedOmKeyInfo);
}
if (getOMResponse().getStatus() == OK) {
@@ -135,15 +135,15 @@ public class S3MultipartUploadCommitPartResponse extends
OmKeyResponse {
OmKeyInfo partKeyToBeDeleted =
OmKeyInfo.getFromProtobuf(oldPartKeyInfo.getPartKeyInfo());
- RepeatedOmKeyInfo repeatedOmKeyInfo =
- omMetadataManager.getDeletedTable()
- .get(oldPartKeyInfo.getPartName());
-
- repeatedOmKeyInfo = OmUtils.prepareKeyForDelete(partKeyToBeDeleted,
- repeatedOmKeyInfo, omMultipartKeyInfo.getUpdateID(), isRatisEnabled);
+ RepeatedOmKeyInfo repeatedOmKeyInfo = OmUtils.prepareKeyForDelete(
+ partKeyToBeDeleted,
+ omMultipartKeyInfo.getUpdateID(), isRatisEnabled);
+ // multi-part key format is volumeName/bucketName/keyName/uploadId
+ String deleteKey = omMetadataManager.getOzoneDeletePathKey(
+ partKeyToBeDeleted.getObjectID(), multipartKey);
omMetadataManager.getDeletedTable().putWithBatch(batchOperation,
- oldPartKeyInfo.getPartName(), repeatedOmKeyInfo);
+ deleteKey, repeatedOmKeyInfo);
}
omMetadataManager.getMultipartInfoTable().putWithBatch(batchOperation,
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadCompleteResponse.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadCompleteResponse.java
index 52448b0a95..829457cd4b 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadCompleteResponse.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadCompleteResponse.java
@@ -55,9 +55,8 @@ public class S3MultipartUploadCompleteResponse extends
OmKeyResponse {
private String multipartKey;
private String multipartOpenKey;
private OmKeyInfo omKeyInfo;
- private List<OmKeyInfo> partsUnusedList;
+ private List<OmKeyInfo> allKeyInfoToRemove;
private OmBucketInfo omBucketInfo;
- private RepeatedOmKeyInfo keyVersionsToDelete;
@SuppressWarnings("checkstyle:ParameterNumber")
public S3MultipartUploadCompleteResponse(
@@ -65,17 +64,15 @@ public class S3MultipartUploadCompleteResponse extends
OmKeyResponse {
@Nonnull String multipartKey,
@Nonnull String multipartOpenKey,
@Nonnull OmKeyInfo omKeyInfo,
- @Nonnull List<OmKeyInfo> unUsedParts,
+ @Nonnull List<OmKeyInfo> allKeyInfoToRemove,
@Nonnull BucketLayout bucketLayout,
- @CheckForNull OmBucketInfo omBucketInfo,
- RepeatedOmKeyInfo keyVersionsToDelete) {
+ @CheckForNull OmBucketInfo omBucketInfo) {
super(omResponse, bucketLayout);
- this.partsUnusedList = unUsedParts;
+ this.allKeyInfoToRemove = allKeyInfoToRemove;
this.multipartKey = multipartKey;
this.multipartOpenKey = multipartOpenKey;
this.omKeyInfo = omKeyInfo;
this.omBucketInfo = omBucketInfo;
- this.keyVersionsToDelete = keyVersionsToDelete;
}
/**
@@ -99,23 +96,18 @@ public class S3MultipartUploadCompleteResponse extends
OmKeyResponse {
multipartKey);
// 2. Add key to KeyTable
- String ozoneKey = addToKeyTable(omMetadataManager, batchOperation);
+ addToKeyTable(omMetadataManager, batchOperation);
// 3. Delete unused parts
- if (!partsUnusedList.isEmpty()) {
+ if (!allKeyInfoToRemove.isEmpty()) {
// Add unused parts to deleted key table.
- if (keyVersionsToDelete == null) {
- keyVersionsToDelete = new RepeatedOmKeyInfo(partsUnusedList);
- } else {
- for (OmKeyInfo unusedParts : partsUnusedList) {
- keyVersionsToDelete.addOmKeyInfo(unusedParts);
- }
+ for (OmKeyInfo keyInfoToRemove : allKeyInfoToRemove) {
+ String deleteKey = omMetadataManager.getOzoneDeletePathKey(
+ keyInfoToRemove.getObjectID(), multipartKey);
+ omMetadataManager.getDeletedTable().putWithBatch(batchOperation,
+ deleteKey, new RepeatedOmKeyInfo(keyInfoToRemove));
}
}
- if (keyVersionsToDelete != null) {
- omMetadataManager.getDeletedTable().putWithBatch(batchOperation,
- ozoneKey, keyVersionsToDelete);
- }
// update bucket usedBytes, only when total bucket size has changed
// due to unused parts cleanup or an overwritten version.
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadCompleteResponseWithFSO.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadCompleteResponseWithFSO.java
index 1b3389d7cf..3a6e1e39d5 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadCompleteResponseWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadCompleteResponseWithFSO.java
@@ -23,7 +23,6 @@ import org.apache.hadoop.ozone.om.OMMetadataManager;
import org.apache.hadoop.ozone.om.helpers.BucketLayout;
import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
-import org.apache.hadoop.ozone.om.helpers.RepeatedOmKeyInfo;
import org.apache.hadoop.ozone.om.request.file.OMFileRequest;
import org.apache.hadoop.ozone.om.response.CleanupTableInfo;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse;
@@ -60,13 +59,12 @@ public class S3MultipartUploadCompleteResponseWithFSO
@Nonnull String multipartKey,
@Nonnull String multipartOpenKey,
@Nonnull OmKeyInfo omKeyInfo,
- @Nonnull List<OmKeyInfo> unUsedParts,
+ @Nonnull List<OmKeyInfo> allKeyInfoToRemove,
@Nonnull BucketLayout bucketLayout,
@CheckForNull OmBucketInfo omBucketInfo,
- RepeatedOmKeyInfo keysToDelete,
@Nonnull long volumeId, @Nonnull long bucketId) {
- super(omResponse, multipartKey, multipartOpenKey, omKeyInfo, unUsedParts,
- bucketLayout, omBucketInfo, keysToDelete);
+ super(omResponse, multipartKey, multipartOpenKey, omKeyInfo,
+ allKeyInfoToRemove, bucketLayout, omBucketInfo);
this.volumeId = volumeId;
this.bucketId = bucketId;
}
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/OMRequestTestUtils.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/OMRequestTestUtils.java
index ea687d1fed..e5b0271a4b 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/OMRequestTestUtils.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/OMRequestTestUtils.java
@@ -841,7 +841,7 @@ public final class OMRequestTestUtils {
omMetadataManager.getKeyTable(getDefaultBucketLayout()).delete(ozoneKey);
RepeatedOmKeyInfo repeatedOmKeyInfo = OmUtils.prepareKeyForDelete(
- omKeyInfo, null, trxnLogIndex, true);
+ omKeyInfo, trxnLogIndex, true);
omMetadataManager.getDeletedTable().put(ozoneKey, repeatedOmKeyInfo);
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/multipart/TestS3MultipartUploadCompleteRequest.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/multipart/TestS3MultipartUploadCompleteRequest.java
index 842710ceca..2983d6c8d3 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/multipart/TestS3MultipartUploadCompleteRequest.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/multipart/TestS3MultipartUploadCompleteRequest.java
@@ -23,6 +23,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
+import org.apache.hadoop.hdds.utils.db.BatchOperation;
+import org.apache.hadoop.hdds.utils.db.Table;
import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
import org.apache.hadoop.ozone.om.request.OMRequestTestUtils;
@@ -63,34 +65,40 @@ public class TestS3MultipartUploadCompleteRequest
OMRequestTestUtils.addVolumeAndBucketToDB(volumeName, bucketName,
omMetadataManager, getBucketLayout());
- checkValidateAndUpdateCacheSuccess(volumeName, bucketName, keyName);
- checkDeleteTableCount(volumeName, bucketName, keyName, 0);
+ String uploadId = checkValidateAndUpdateCacheSuccess(
+ volumeName, bucketName, keyName);
+ checkDeleteTableCount(volumeName, bucketName, keyName, 0, uploadId);
// Do it twice to test overwrite
- checkValidateAndUpdateCacheSuccess(volumeName, bucketName, keyName);
+ uploadId = checkValidateAndUpdateCacheSuccess(volumeName, bucketName,
+ keyName);
// After overwrite, one entry must be in delete table
- checkDeleteTableCount(volumeName, bucketName, keyName, 1);
+ checkDeleteTableCount(volumeName, bucketName, keyName, 1, uploadId);
}
public void checkDeleteTableCount(String volumeName,
- String bucketName, String keyName, int count) throws Exception {
- String dbOzoneKey = getOzoneDBKey(volumeName, bucketName, keyName);
- RepeatedOmKeyInfo keysToDelete =
- omMetadataManager.getDeletedTable().get(dbOzoneKey);
+ String bucketName, String keyName, int count, String uploadId)
+ throws Exception {
+ String dbOzoneKey = getMultipartKey(volumeName, bucketName, keyName,
+ uploadId);
+ List<? extends Table.KeyValue<String, RepeatedOmKeyInfo>> rangeKVs
+ = omMetadataManager.getDeletedTable().getRangeKVs(
+ null, 100, dbOzoneKey);
// deleted key entries count is expected to be 0
if (count == 0) {
- Assert.assertNull(keysToDelete);
+ Assert.assertTrue(rangeKVs.size() == 0);
return;
}
- Assert.assertNotNull(keysToDelete);
+ Assert.assertTrue(rangeKVs.size() >= 1);
// Count must consider unused parts on commit
- Assert.assertEquals(count, keysToDelete.getOmKeyInfoList().size());
+ Assert.assertEquals(count,
+ rangeKVs.get(0).getValue().getOmKeyInfoList().size());
}
- private void checkValidateAndUpdateCacheSuccess(String volumeName,
+ private String checkValidateAndUpdateCacheSuccess(String volumeName,
String bucketName, String keyName) throws Exception {
OMRequest initiateMPURequest = doPreExecuteInitiateMPU(volumeName,
@@ -136,6 +144,11 @@ public class TestS3MultipartUploadCompleteRequest
s3MultipartUploadCompleteRequest.validateAndUpdateCache(ozoneManager,
3L, ozoneManagerDoubleBufferHelper);
+ BatchOperation batchOperation
+ = omMetadataManager.getStore().initBatchOperation();
+ omClientResponse.checkAndUpdateDB(omMetadataManager, batchOperation);
+ omMetadataManager.getStore().commitBatchOperation(batchOperation);
+
Assert.assertEquals(OzoneManagerProtocolProtos.Status.OK,
omClientResponse.getOMResponse().getStatus());
@@ -156,6 +169,7 @@ public class TestS3MultipartUploadCompleteRequest
omMetadataManager.getBucketKey(volumeName, bucketName)))
.getCacheValue();
Assert.assertEquals(getNamespaceCount(), omBucketInfo.getUsedNamespace());
+ return multipartUploadID;
}
protected void addVolumeAndBucket(String volumeName, String bucketName)
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/multipart/TestS3MultipartUploadCompleteRequestWithFSO.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/multipart/TestS3MultipartUploadCompleteRequestWithFSO.java
index 8ff94bca3a..9afcfa6980 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/multipart/TestS3MultipartUploadCompleteRequestWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/multipart/TestS3MultipartUploadCompleteRequestWithFSO.java
@@ -23,7 +23,6 @@ import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.om.helpers.BucketLayout;
import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
import org.apache.hadoop.ozone.om.helpers.OzoneFSUtils;
-import org.apache.hadoop.ozone.om.helpers.OzoneFileStatus;
import org.apache.hadoop.ozone.om.request.OMRequestTestUtils;
import org.apache.hadoop.ozone.om.request.file.OMFileRequest;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest;
@@ -89,22 +88,6 @@ public class TestS3MultipartUploadCompleteRequestWithFSO
omMetadataManager);
}
- @Override
- protected String getMultipartKey(String volumeName, String bucketName,
- String keyName, String multipartUploadID) throws IOException {
- OzoneFileStatus keyStatus = OMFileRequest.getOMKeyInfoIfExists(
- omMetadataManager, volumeName,
- bucketName, keyName, 0);
-
- Assert.assertNotNull("key not found in DB!", keyStatus);
- final long volumeId = omMetadataManager.getVolumeId(volumeName);
- final long bucketId = omMetadataManager.getBucketId(volumeName,
- bucketName);
- return omMetadataManager.getMultipartKey(volumeId, bucketId,
- keyStatus.getKeyInfo().getParentObjectID(),
- keyStatus.getTrimmedName(), multipartUploadID);
- }
-
private long getParentID(String volumeName, String bucketName,
String keyName) throws IOException {
Path keyPath = Paths.get(keyName);
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/key/TestOMKeyCommitResponse.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/key/TestOMKeyCommitResponse.java
index 7316d4c50d..52b5e83ed7 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/key/TestOMKeyCommitResponse.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/key/TestOMKeyCommitResponse.java
@@ -120,7 +120,7 @@ public class TestOMKeyCommitResponse extends
TestOMKeyResponse {
public void testAddToDBBatchOnOverwrite() throws Exception {
OmKeyInfo omKeyInfo = getOmKeyInfo();
keysToDelete =
- OmUtils.prepareKeyForDelete(omKeyInfo, null, 100, false);
+ OmUtils.prepareKeyForDelete(omKeyInfo, 100, false);
Assert.assertNotNull(keysToDelete);
testAddToDBBatch();
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartResponse.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartResponse.java
index c716cb9601..a6f90828f3 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartResponse.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartResponse.java
@@ -37,7 +37,6 @@ import org.apache.hadoop.ozone.om.helpers.OmVolumeArgs;
import org.apache.hadoop.ozone.om.helpers.OzoneFSUtils;
import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
import org.apache.hadoop.ozone.om.helpers.BucketLayout;
-import org.apache.hadoop.ozone.om.helpers.RepeatedOmKeyInfo;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
@@ -161,6 +160,7 @@ public class TestS3MultipartResponse {
.setDataSize(100L) // Just set dummy size for testing
.setCreationTime(Time.now())
.setModificationTime(Time.now())
+ .setObjectID(UUID.randomUUID().hashCode())
.setType(HddsProtos.ReplicationType.RATIS)
.setFactor(HddsProtos.ReplicationFactor.ONE).build()).build();
}
@@ -183,6 +183,7 @@ public class TestS3MultipartResponse {
.setDataSize(100L) // Just set dummy size for testing
.setCreationTime(Time.now())
.setModificationTime(Time.now())
+ .setObjectID(UUID.randomUUID().hashCode())
.setParentID(parentID)
.setType(HddsProtos.ReplicationType.RATIS)
.setFactor(HddsProtos.ReplicationFactor.ONE).build()).build();
@@ -299,9 +300,8 @@ public class TestS3MultipartResponse {
String volumeName, String bucketName, long parentID, String keyName,
String multipartUploadID, OmKeyInfo omKeyInfo,
OzoneManagerProtocolProtos.Status status,
- List<OmKeyInfo> unUsedParts,
- OmBucketInfo omBucketInfo,
- RepeatedOmKeyInfo keysToDelete) throws IOException {
+ List<OmKeyInfo> allKeyInfoToRemove,
+ OmBucketInfo omBucketInfo) throws IOException {
String multipartKey = omMetadataManager
@@ -323,8 +323,8 @@ public class TestS3MultipartResponse {
.setVolume(volumeName).setKey(keyName)).build();
return new S3MultipartUploadCompleteResponseWithFSO(omResponse,
- multipartKey, multipartOpenKey, omKeyInfo, unUsedParts,
- getBucketLayout(), omBucketInfo, keysToDelete, volumeId, bucketId);
+ multipartKey, multipartOpenKey, omKeyInfo, allKeyInfoToRemove,
+ getBucketLayout(), omBucketInfo, volumeId, bucketId);
}
protected S3InitiateMultipartUploadResponse getS3InitiateMultipartUploadResp(
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartUploadAbortResponse.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartUploadAbortResponse.java
index 5f830ed857..5a4e131f83 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartUploadAbortResponse.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartUploadAbortResponse.java
@@ -168,10 +168,14 @@ public class TestS3MultipartUploadAbortResponse
omMetadataManager.getDeletedTable()) == 2);
String part1DeletedKeyName =
- omMultipartKeyInfo.getPartKeyInfo(1).getPartName();
+ omMetadataManager.getOzoneDeletePathKey(
+ omMultipartKeyInfo.getPartKeyInfo(1).getPartKeyInfo()
+ .getObjectID(), multipartKey);
String part2DeletedKeyName =
- omMultipartKeyInfo.getPartKeyInfo(2).getPartName();
+ omMetadataManager.getOzoneDeletePathKey(
+ omMultipartKeyInfo.getPartKeyInfo(2).getPartKeyInfo()
+ .getObjectID(), multipartKey);
Assert.assertNotNull(omMetadataManager.getDeletedTable().get(
part1DeletedKeyName));
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartUploadCommitPartResponseWithFSO.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartUploadCommitPartResponseWithFSO.java
index 605fe24731..5308d44b65 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartUploadCommitPartResponseWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartUploadCommitPartResponseWithFSO.java
@@ -18,6 +18,8 @@
package org.apache.hadoop.ozone.om.response.s3.multipart;
+import java.util.List;
+import org.apache.hadoop.hdds.utils.db.Table;
import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
import org.apache.hadoop.ozone.om.helpers.OmMultipartKeyInfo;
import org.apache.hadoop.ozone.om.helpers.OzoneFSUtils;
@@ -149,7 +151,9 @@ public class TestS3MultipartUploadCommitPartResponseWithFSO
omMetadataManager.getDeletedTable()));
String part1DeletedKeyName =
- omMultipartKeyInfo.getPartKeyInfo(1).getPartName();
+ omMetadataManager.getOzoneDeletePathKey(
+ omMultipartKeyInfo.getPartKeyInfo(1).getPartKeyInfo()
+ .getObjectID(), multipartKey);
Assert.assertNotNull(omMetadataManager.getDeletedTable().get(
part1DeletedKeyName));
@@ -203,9 +207,10 @@ public class TestS3MultipartUploadCommitPartResponseWithFSO
String openKey = omMetadataManager.getOpenFileName(volumeId, bucketId,
parentID, fileName, clientId);
+ String keyNameInvalid = keyName + "invalid";
S3MultipartUploadCommitPartResponse s3MultipartUploadCommitPartResponse =
createS3CommitMPUResponseFSO(volumeName, bucketName, parentID,
- keyName + "invalid", multipartUploadID,
+ keyNameInvalid, multipartUploadID,
omMultipartKeyInfo.getPartKeyInfo(1),
omMultipartKeyInfo, OzoneManagerProtocolProtos.Status
.NO_SUCH_MULTIPART_UPLOAD_ERROR, openKey);
@@ -223,9 +228,13 @@ public class TestS3MultipartUploadCommitPartResponseWithFSO
// openkey entry should be there in delete table.
Assert.assertEquals(1, omMetadataManager.countRowsInTable(
omMetadataManager.getDeletedTable()));
-
- Assert.assertNotNull(omMetadataManager.getDeletedTable().get(
- openKey));
+ String deletedKey = omMetadataManager
+ .getMultipartKey(volumeName, bucketName, keyNameInvalid,
+ multipartUploadID);
+ List<? extends Table.KeyValue<String, RepeatedOmKeyInfo>> rangeKVs
+ = omMetadataManager.getDeletedTable().getRangeKVs(
+ null, 100, deletedKey);
+ Assert.assertTrue(rangeKVs.size() > 0);
}
private String getKeyName() {
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartUploadCompleteResponseWithFSO.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartUploadCompleteResponseWithFSO.java
index f09e6dcf70..1598234d83 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartUploadCompleteResponseWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/TestS3MultipartUploadCompleteResponseWithFSO.java
@@ -114,7 +114,7 @@ public class TestS3MultipartUploadCompleteResponseWithFSO
createS3CompleteMPUResponseFSO(volumeName, bucketName, parentID,
keyName, multipartUploadID, omKeyInfoFSO,
OzoneManagerProtocolProtos.Status.OK, unUsedParts,
- omBucketInfo, null);
+ omBucketInfo);
s3MultipartUploadCompleteResponse.addToDBBatch(omMetadataManager,
batchOperation);
@@ -199,7 +199,7 @@ public class TestS3MultipartUploadCompleteResponseWithFSO
createS3CompleteMPUResponseFSO(volumeName, bucketName, parentID,
keyName, multipartUploadID, omKeyInfoFSO,
OzoneManagerProtocolProtos.Status.OK, unUsedParts,
- null, null);
+ null);
s3MultipartUploadCompleteResponse.addToDBBatch(omMetadataManager,
batchOperation);
@@ -270,7 +270,7 @@ public class TestS3MultipartUploadCompleteResponseWithFSO
// As 1 unused parts and 1 previously put-and-deleted object exist,
// so 2 entries should be there in delete table.
- Assert.assertEquals(2, omMetadataManager.countRowsInTable(
+ Assert.assertEquals(3, omMetadataManager.countRowsInTable(
omMetadataManager.getDeletedTable()));
}
@@ -323,7 +323,7 @@ public class TestS3MultipartUploadCompleteResponseWithFSO
createS3CompleteMPUResponseFSO(volumeName, bucketName, parentID,
keyName, multipartUploadID, omKeyInfoFSO,
OzoneManagerProtocolProtos.Status.OK, unUsedParts,
- omBucketInfo, null);
+ omBucketInfo);
s3MultipartUploadCompleteResponse.addToDBBatch(omMetadataManager,
batchOperation);
@@ -382,8 +382,9 @@ public class TestS3MultipartUploadCompleteResponseWithFSO
Assert.assertEquals(deleteEntryCount, omMetadataManager.countRowsInTable(
omMetadataManager.getDeletedTable()));
- String part1DeletedKeyName =
- omMultipartKeyInfo.getPartKeyInfo(1).getPartName();
+ String part1DeletedKeyName = omMetadataManager.getOzoneDeletePathKey(
+ omMultipartKeyInfo.getPartKeyInfo(1).getPartKeyInfo().getObjectID(),
+ multipartKey);
Assert.assertNotNull(omMetadataManager.getDeletedTable().get(
part1DeletedKeyName));
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]