Class S3MultipartUploadCompleteRequest
java.lang.Object
org.apache.hadoop.ozone.om.request.OMClientRequest
org.apache.hadoop.ozone.om.request.key.OMKeyRequest
org.apache.hadoop.ozone.om.request.s3.multipart.S3MultipartUploadCompleteRequest
- All Implemented Interfaces:
RequestAuditor
- Direct Known Subclasses:
S3MultipartUploadCompleteRequestWithFSO
Handle Multipart upload complete request.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.hadoop.ozone.om.request.OMClientRequest
OMClientRequest.Result -
Constructor Summary
ConstructorsConstructorDescriptionS3MultipartUploadCompleteRequest(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest omRequest, org.apache.hadoop.ozone.om.helpers.BucketLayout bucketLayout) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddKeyTableCacheEntry(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String dbOzoneKey, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omKeyInfo, long transactionLogIndex) protected voidaddMissingParentsToCache(org.apache.hadoop.ozone.om.helpers.OmBucketInfo omBucketInfo, List<org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo> missingParentInfos, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, long volumeId, long bucketId, long transactionLogIndex) protected voidaddMultiPartToCache(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String multipartOpenKey, OMFileRequest.OMPathInfoWithFSO pathInfoFSO, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omKeyInfo, String keyName, long transactionLogIndex) static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequestblockMPUCompleteWithBucketLayoutFromOldClient(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest req, ValidationContext ctx) Validates S3 MPU complete requests.protected voidcheckDirectoryAlreadyExists(OzoneManager ozoneManager, org.apache.hadoop.ozone.om.helpers.OmBucketInfo omBucketInfo, String keyName, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager) static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequestdisallowCompleteMultiPartUploadWithECReplicationConfig(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest req, ValidationContext ctx) protected StringgetDBOzoneKey(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String volumeName, String bucketName, String keyName) protected OMClientResponsegetOmClientResponse(String multipartKey, org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse.Builder omResponse, String dbMultipartOpenKey, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omKeyInfo, List<org.apache.hadoop.ozone.om.helpers.OmKeyInfo> allKeyInfoToRemove, org.apache.hadoop.ozone.om.helpers.OmBucketInfo omBucketInfo, long volumeId, long bucketId, List<org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo> missingParentInfos, org.apache.hadoop.ozone.om.helpers.OmMultipartKeyInfo multipartKeyInfo) protected S3MultipartUploadCompleteResponsegetOmClientResponse(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse.Builder omResponse, Exception exception) protected org.apache.hadoop.ozone.om.helpers.OmKeyInfogetOmKeyInfo(long trxnLogIndex, org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs keyArgs, String volumeName, String bucketName, String keyName, String multipartOpenKey, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String ozoneKey, org.apache.hadoop.ozone.om.helpers.OmMultipartKeyInfo.PartKeyInfoMap partKeyInfoMap, List<org.apache.hadoop.ozone.om.helpers.OmKeyLocationInfo> partLocationInfos, long dataSize) protected org.apache.hadoop.ozone.om.helpers.OmKeyInfogetOmKeyInfoFromKeyTable(String dbOzoneKey, String keyName, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager) protected org.apache.hadoop.ozone.om.helpers.OmKeyInfogetOmKeyInfoFromOpenKeyTable(String dbMultipartKey, String keyName, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager) protected voidlogResult(OzoneManager ozoneManager, org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.MultipartUploadCompleteRequest multipartUploadCompleteRequest, List<org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Part> partsList, Map<String, String> auditMap, String volumeName, String bucketName, String keyName, Exception exception, OMClientRequest.Result result) org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequestpreExecute(OzoneManager ozoneManager) Perform pre-execute steps on a OMRequest.protected voidupdatePrefixFSOInfo(org.apache.hadoop.ozone.om.helpers.OmKeyInfo dbOpenKeyInfo, org.apache.hadoop.ozone.om.helpers.OmKeyInfo.Builder builder) validateAndUpdateCache(OzoneManager ozoneManager, ExecutionContext context) Validate the OMRequest and update the cache.Methods inherited from class org.apache.hadoop.ozone.om.request.key.OMKeyRequest
addKeyInfoToDeleteMap, allocateBlock, checkBucketAcls, checkBucketQuotaInBytes, checkBucketQuotaInNamespace, checkDirectoryAlreadyExists, checkKeyAcls, checkKeyAcls, checkKeyAclsInOpenKeyTable, createDirectoryInfoWithACL, createDirectoryKeyInfoWithACL, createFileInfo, dirKeyInfoBuilderNoACL, filterOutBlocksStillInUse, generateRequiredEncryptionInfo, getAclsForDir, getAclsForKey, getAllMissingParentDirInfo, getAllParentInfo, getBucketInfo, getBucketLayout, getDBMultipartOpenKey, getFileEncryptionInfo, getFileEncryptionInfo, getFileEncryptionInfoForMpuKey, getOldVersionsToCleanUp, getOzoneLockStrategy, getRemoteUser, getVolumeOwner, prepareFileInfo, prepareKeyInfo, resolveBucketAndCheckKeyAcls, resolveBucketAndCheckKeyAclsWithFSO, resolveBucketAndCheckOpenKeyAcls, resolveBucketLink, resolveBucketLink, sumBlockLengths, validateBucketAndVolume, validateEncryptionKeyInfo, wrapUncommittedBlocksAsPseudoKeyMethods inherited from class org.apache.hadoop.ozone.om.request.OMClientRequest
buildAuditMessage, buildVolumeAuditMap, checkAcls, checkAcls, checkAcls, checkACLsWithFSO, createErrorOMResponse, createUGI, createUGIForApi, getAuditBuilder, getHostName, getOmLockDetails, getOmRequest, getRemoteAddress, getUserIfNotExists, getUserInfo, handleRequestFailure, isValidKeyPath, markForAudit, mergeOmLockDetails, normalizeKeyPath, setUGI, validateAndNormalizeKey, validateAndNormalizeKey, validateAndNormalizeKey, validateAndUpdateCacheMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.hadoop.ozone.om.request.RequestAuditor
buildKeyArgsAuditMap, buildLightKeyArgsAuditMap
-
Constructor Details
-
S3MultipartUploadCompleteRequest
public S3MultipartUploadCompleteRequest(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest omRequest, org.apache.hadoop.ozone.om.helpers.BucketLayout bucketLayout)
-
-
Method Details
-
preExecute
public org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest preExecute(OzoneManager ozoneManager) throws IOException Description copied from class:OMClientRequestPerform pre-execute steps on a OMRequest. Called from the RPC context, and generates a OMRequest object which has all the information that will be either persisted in RocksDB or returned to the caller once this operation is executed.- Overrides:
preExecutein classOMClientRequest- Returns:
- OMRequest that will be serialized and handed off to Ratis for consensus.
- Throws:
IOException
-
validateAndUpdateCache
Description copied from class:OMClientRequestValidate the OMRequest and update the cache. This step should verify that the request can be executed, perform any authorization steps and update the in-memory cache. This step does not persist the changes to the database. To coders and reviewers, CAUTION: Do NOT bring external dependencies into this method, doing so could potentially cause divergence in OM DB states in HA. If you have to, be extremely careful. e.g. Do NOT invoke ACL check inside validateAndUpdateCache, which can use Ranger plugin that relies on external DB.- Specified by:
validateAndUpdateCachein classOMClientRequest- Returns:
- the response that will be returned to the client.
-
getOmClientResponse
protected S3MultipartUploadCompleteResponse getOmClientResponse(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse.Builder omResponse, Exception exception) -
getOmClientResponse
protected OMClientResponse getOmClientResponse(String multipartKey, org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse.Builder omResponse, String dbMultipartOpenKey, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omKeyInfo, List<org.apache.hadoop.ozone.om.helpers.OmKeyInfo> allKeyInfoToRemove, org.apache.hadoop.ozone.om.helpers.OmBucketInfo omBucketInfo, long volumeId, long bucketId, List<org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo> missingParentInfos, org.apache.hadoop.ozone.om.helpers.OmMultipartKeyInfo multipartKeyInfo) -
checkDirectoryAlreadyExists
protected void checkDirectoryAlreadyExists(OzoneManager ozoneManager, org.apache.hadoop.ozone.om.helpers.OmBucketInfo omBucketInfo, String keyName, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager) throws IOException - Throws:
IOException
-
logResult
protected void logResult(OzoneManager ozoneManager, org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.MultipartUploadCompleteRequest multipartUploadCompleteRequest, List<org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Part> partsList, Map<String, String> auditMap, String volumeName, String bucketName, String keyName, Exception exception, OMClientRequest.Result result) -
getOmKeyInfo
protected org.apache.hadoop.ozone.om.helpers.OmKeyInfo getOmKeyInfo(long trxnLogIndex, org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs keyArgs, String volumeName, String bucketName, String keyName, String multipartOpenKey, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String ozoneKey, org.apache.hadoop.ozone.om.helpers.OmMultipartKeyInfo.PartKeyInfoMap partKeyInfoMap, List<org.apache.hadoop.ozone.om.helpers.OmKeyLocationInfo> partLocationInfos, long dataSize) throws IOException - Throws:
IOException
-
updatePrefixFSOInfo
protected void updatePrefixFSOInfo(org.apache.hadoop.ozone.om.helpers.OmKeyInfo dbOpenKeyInfo, org.apache.hadoop.ozone.om.helpers.OmKeyInfo.Builder builder) -
getDBOzoneKey
protected String getDBOzoneKey(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String volumeName, String bucketName, String keyName) throws IOException - Throws:
IOException
-
addMissingParentsToCache
protected void addMissingParentsToCache(org.apache.hadoop.ozone.om.helpers.OmBucketInfo omBucketInfo, List<org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo> missingParentInfos, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, long volumeId, long bucketId, long transactionLogIndex) throws IOException - Throws:
IOException
-
addMultiPartToCache
protected void addMultiPartToCache(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String multipartOpenKey, OMFileRequest.OMPathInfoWithFSO pathInfoFSO, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omKeyInfo, String keyName, long transactionLogIndex) throws IOException - Throws:
IOException
-
getOmKeyInfoFromKeyTable
protected org.apache.hadoop.ozone.om.helpers.OmKeyInfo getOmKeyInfoFromKeyTable(String dbOzoneKey, String keyName, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager) throws IOException - Throws:
IOException
-
getOmKeyInfoFromOpenKeyTable
protected org.apache.hadoop.ozone.om.helpers.OmKeyInfo getOmKeyInfoFromOpenKeyTable(String dbMultipartKey, String keyName, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager) throws IOException - Throws:
IOException
-
addKeyTableCacheEntry
protected void addKeyTableCacheEntry(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String dbOzoneKey, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omKeyInfo, long transactionLogIndex) throws IOException - Throws:
IOException
-
disallowCompleteMultiPartUploadWithECReplicationConfig
public static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest disallowCompleteMultiPartUploadWithECReplicationConfig(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest req, ValidationContext ctx) throws org.apache.hadoop.ozone.om.exceptions.OMException - Throws:
org.apache.hadoop.ozone.om.exceptions.OMException
-
blockMPUCompleteWithBucketLayoutFromOldClient
public static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest blockMPUCompleteWithBucketLayoutFromOldClient(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest req, ValidationContext ctx) throws IOException Validates S3 MPU complete requests. We do not want to allow older clients to upload MPU keys to buckets which use non LEGACY layouts.- Parameters:
req- - the request to validatectx- - the validation context- Returns:
- the validated request
- Throws:
org.apache.hadoop.ozone.om.exceptions.OMException- if the request is invalidIOException
-