Class OMFileCreateRequest
java.lang.Object
org.apache.hadoop.ozone.om.request.OMClientRequest
org.apache.hadoop.ozone.om.request.key.OMKeyRequest
org.apache.hadoop.ozone.om.request.file.OMFileCreateRequest
- All Implemented Interfaces:
RequestAuditor
- Direct Known Subclasses:
OMFileCreateRequestWithFSO
Handles create file request.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.hadoop.ozone.om.request.OMClientRequest
OMClientRequest.Result -
Constructor Summary
ConstructorsConstructorDescriptionOMFileCreateRequest(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest omRequest, org.apache.hadoop.ozone.om.helpers.BucketLayout bucketLayout) -
Method Summary
Modifier and TypeMethodDescriptionstatic org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequestblockCreateFileWithBucketLayoutFromOldClient(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest req, ValidationContext ctx) Validates file create requests.protected voidcheckAllParentsExist(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs keyArgs, OMFileRequest.OMPathInfo pathInfo) Verify the existence of parent directory.protected voidcheckDirectoryResult(String keyName, boolean isOverWrite, OMFileRequest.OMDirectoryResult omDirectoryResult) Verify om directory result.static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequestdisallowCreateFileWithECReplicationConfig(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest req, ValidationContext ctx) org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequestpreExecute(OzoneManager ozoneManager) Perform pre-execute steps on a OMRequest.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
-
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: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.
-
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 nameisOverWrite- flag represents whether file can be overwrittenomDirectoryResult- 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 argumentspathInfo- 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 validatectx- - the validation context- Returns:
- the validated request
- Throws:
org.apache.hadoop.ozone.om.exceptions.OMException- if the request is invalidIOException
-