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

public class S3MultipartUploadCompleteRequest extends OMKeyRequest
Handle Multipart upload complete request.
  • 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: OMClientRequest
      Perform 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:
      preExecute in class OMClientRequest
      Returns:
      OMRequest that will be serialized and handed off to Ratis for consensus.
      Throws:
      IOException
    • validateAndUpdateCache

      public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, ExecutionContext context)
      Description copied from class: OMClientRequest
      Validate 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:
      validateAndUpdateCache in class OMClientRequest
      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 validate
      ctx - - the validation context
      Returns:
      the validated request
      Throws:
      org.apache.hadoop.ozone.om.exceptions.OMException - if the request is invalid
      IOException