Class OMFileCreateRequest

All Implemented Interfaces:
RequestAuditor
Direct Known Subclasses:
OMFileCreateRequestWithFSO

public class OMFileCreateRequest extends OMKeyRequest
Handles create file request.
  • Constructor Details

    • OMFileCreateRequest

      public OMFileCreateRequest(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.
    • checkDirectoryResult

      protected void checkDirectoryResult(String keyName, boolean isOverWrite, OMFileRequest.OMDirectoryResult omDirectoryResult) throws org.apache.hadoop.ozone.om.exceptions.OMException
      Verify om directory result.
      Parameters:
      keyName - key name
      isOverWrite - flag represents whether file can be overwritten
      omDirectoryResult - directory result
      Throws:
      org.apache.hadoop.ozone.om.exceptions.OMException - if file or directory or file exists in the given path
    • checkAllParentsExist

      protected void checkAllParentsExist(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs keyArgs, OMFileRequest.OMPathInfo pathInfo) throws IOException
      Verify the existence of parent directory.
      Parameters:
      keyArgs - key arguments
      pathInfo - om path info
      Throws:
      IOException - directory not found
    • disallowCreateFileWithECReplicationConfig

      public static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest disallowCreateFileWithECReplicationConfig(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
    • blockCreateFileWithBucketLayoutFromOldClient

      public static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest blockCreateFileWithBucketLayoutFromOldClient(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest req, ValidationContext ctx) throws IOException
      Validates file create requests. Handles the cases where an older client attempts to create a file inside a bucket with a non LEGACY bucket layout. We do not want an older client modifying a bucket that it cannot understand.
      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