Class OMFileRequest
java.lang.Object
org.apache.hadoop.ozone.om.request.file.OMFileRequest
Base class for file requests.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumReturn codes used by verifyFilesInPath method.static classClass to return the results from verifyFilesInPath.static classClass to return the results from verifyDirectoryKeysInPath. -
Method Summary
Modifier and TypeMethodDescriptionstatic voidaddDirectoryTableCacheEntries(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, long volumeId, long bucketId, long trxnLogIndex, List<org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo> missingParentInfos, org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo dirInfo) Adding directory info to the Table cache.static voidaddFileTableCacheEntry(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String dbFileKey, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omFileInfo, String fileName, long trxnLogIndex) Adding Key info to the file table cache.static voidaddKeyTableCacheEntries(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String volumeName, String bucketName, org.apache.hadoop.ozone.om.helpers.BucketLayout layout, org.apache.hadoop.ozone.om.helpers.OmKeyInfo keyInfo, List<org.apache.hadoop.ozone.om.helpers.OmKeyInfo> parentInfoList, long index) Add entries to the Key Table cache.static voidaddOpenFileTableCacheEntry(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String dbOpenFileName, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omFileInfo, String fileName, String keyName, long trxnLogIndex) Adding Key info to the openFile Table cache.static StringaddToFileTable(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataMgr, org.apache.hadoop.hdds.utils.db.BatchOperation batchOp, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omFileInfo, long volumeId, long bucketId) Adding omKeyInfo to file table.static voidaddToOpenFileTable(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataMgr, org.apache.hadoop.hdds.utils.db.BatchOperation batchOp, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omFileInfo, long openKeySessionID, long volumeId, long bucketId) Adding omKeyInfo to open file table.static StringaddToOpenFileTableForMultipart(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataMgr, org.apache.hadoop.hdds.utils.db.BatchOperation batchOp, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omFileInfo, String uploadID, long volumeId, long bucketId) Adding multipart omKeyInfo to open file table.static StringgetAbsolutePath(String prefixName, String fileName) Returns absolute path.static org.apache.hadoop.ozone.om.helpers.OmDirectoryInfogetDirectoryInfo(org.apache.hadoop.ozone.om.helpers.OmKeyInfo keyInfo) Build DirectoryInfo from OmKeyInfo.static org.apache.hadoop.ozone.om.helpers.OmKeyInfogetKeyInfoWithFullPath(org.apache.hadoop.ozone.om.helpers.OmKeyInfo parentInfo, org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo directoryInfo) static org.apache.hadoop.ozone.om.helpers.OmKeyInfogetKeyInfoWithFullPath(org.apache.hadoop.ozone.om.helpers.OmKeyInfo parentInfo, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omKeyInfo) static org.apache.hadoop.ozone.om.helpers.OmKeyInfogetKeyParentDir(String volumeName, String bucketName, String toKeyName, OzoneManager ozoneManager, org.apache.hadoop.ozone.om.OMMetadataManager metaMgr) Verify parent exists for the destination path and return destination path parent.static org.apache.hadoop.ozone.om.helpers.OmKeyInfogetOmKeyInfo(String volumeName, String bucketName, org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo dirInfo, String keyName) Prepare OmKeyInfo from OmDirectoryInfo.static org.apache.hadoop.ozone.om.helpers.OmKeyInfogetOmKeyInfoFromFileTable(boolean openFileTable, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataMgr, String dbOpenFileKey, String keyName) Gets om key info from open key table if openFileTable flag is true, otherwise get it from key table.static org.apache.hadoop.ozone.om.helpers.OzoneFileStatusgetOMKeyInfoIfExists(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataMgr, String volumeName, String bucketName, String keyName, long scmBlockSize, org.apache.hadoop.hdds.client.ReplicationConfig defaultReplication) Gets OmKeyInfo if exists and validate bucket and volume.static org.apache.hadoop.ozone.om.helpers.OzoneFileStatusgetOMKeyInfoIfExists(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataMgr, String volumeName, String bucketName, String keyName, long scmBlockSize, org.apache.hadoop.hdds.client.ReplicationConfig defaultReplication, boolean validateBucketAndVolume) Gets OmKeyInfo if exists for the given key name in the DB.static longgetParentId(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String volumeName, String bucketName, String keyName) Get parent ID for the user given keyName.static longgetParentID(long volumeId, long bucketId, String keyName, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager) Get parent id for the user given path.static longgetParentID(long volumeId, long bucketId, String keyName, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String errMsg) Get parent id for the user given path.static booleanhasChildren(org.apache.hadoop.ozone.om.helpers.OmKeyInfo omKeyInfo, org.apache.hadoop.ozone.om.OMMetadataManager metaMgr) Check if there are any sub path exist for the given user key path.static booleanisImmediateChild(long parentId, long ancestorId) static voidvalidateBucket(org.apache.hadoop.ozone.om.OMMetadataManager metadataManager, String volumeName, String bucketName) Validates volume and bucket existence.verifyDirectoryKeysInPath(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String volumeName, String bucketName, String keyName, Path keyPath) Verify any dir/key exist in the given path in the specified volume/bucket by iterating through directory table.static OMFileRequest.OMPathInfoverifyFilesInPath(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String volumeName, String bucketName, String keyName, Path keyPath) Verify any files exist in the given path in the specified volume/bucket.static voidverifyToDirIsASubDirOfFromDirectory(String fromKeyName, String toKeyName, boolean isDir) Verify that the given toKey directory is a sub directory of fromKey directory.
-
Method Details
-
verifyFilesInPath
public static OMFileRequest.OMPathInfo verifyFilesInPath(@Nonnull org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, @Nonnull String volumeName, @Nonnull String bucketName, @Nonnull String keyName, @Nonnull Path keyPath) throws IOException Verify any files exist in the given path in the specified volume/bucket.- Parameters:
omMetadataManager- OMMetadataManagervolumeName- Volume NamebucketName- Bucket NamekeyPath- Key Path- Returns:
- true - if file exist in the given path, else false.
- Throws:
IOException
-
verifyDirectoryKeysInPath
public static OMFileRequest.OMPathInfoWithFSO verifyDirectoryKeysInPath(@Nonnull org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, @Nonnull String volumeName, @Nonnull String bucketName, @Nonnull String keyName, @Nonnull Path keyPath) throws IOException Verify any dir/key exist in the given path in the specified volume/bucket by iterating through directory table.- Parameters:
omMetadataManager- OM Metadata managervolumeName- volume namebucketName- bucket namekeyName- key namekeyPath- path- Returns:
- OMPathInfoWithFSO path info object
- Throws:
IOException- on DB failure
-
addKeyTableCacheEntries
public static void addKeyTableCacheEntries(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String volumeName, String bucketName, org.apache.hadoop.ozone.om.helpers.BucketLayout layout, org.apache.hadoop.ozone.om.helpers.OmKeyInfo keyInfo, List<org.apache.hadoop.ozone.om.helpers.OmKeyInfo> parentInfoList, long index) throws IOException Add entries to the Key Table cache.- Parameters:
omMetadataManager-volumeName-bucketName-keyInfo-parentInfoList-index- TODO : move code to a separate utility class.- Throws:
IOException
-
addDirectoryTableCacheEntries
public static void addDirectoryTableCacheEntries(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, long volumeId, long bucketId, long trxnLogIndex, List<org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo> missingParentInfos, org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo dirInfo) Adding directory info to the Table cache.- Parameters:
omMetadataManager- OM Metadata ManagervolumeId- ID of the VolumebucketId- ID of the BuckettrxnLogIndex- transaction log indexmissingParentInfos- list of the parents to be added to DBdirInfo- directory info
-
addOpenFileTableCacheEntry
public static void addOpenFileTableCacheEntry(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String dbOpenFileName, @Nullable org.apache.hadoop.ozone.om.helpers.OmKeyInfo omFileInfo, String fileName, String keyName, long trxnLogIndex) Adding Key info to the openFile Table cache.- Parameters:
omMetadataManager- OM Metadata ManagerdbOpenFileName- open file name keyomFileInfo- key infofileName- file nametrxnLogIndex- transaction log index
-
addFileTableCacheEntry
public static void addFileTableCacheEntry(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String dbFileKey, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omFileInfo, String fileName, long trxnLogIndex) throws IOException Adding Key info to the file table cache.- Parameters:
omMetadataManager- OM Metadata ManagerdbFileKey- file name keyomFileInfo- key infofileName- file nametrxnLogIndex- transaction log index- Throws:
IOException
-
addToOpenFileTable
public static void addToOpenFileTable(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataMgr, org.apache.hadoop.hdds.utils.db.BatchOperation batchOp, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omFileInfo, long openKeySessionID, long volumeId, long bucketId) throws IOException Adding omKeyInfo to open file table.- Parameters:
omMetadataMgr- OM Metadata ManagerbatchOp- batch of db operationsomFileInfo- omKeyInfoopenKeySessionID- clientID- Throws:
IOException- DB failure
-
addToOpenFileTableForMultipart
public static String addToOpenFileTableForMultipart(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataMgr, org.apache.hadoop.hdds.utils.db.BatchOperation batchOp, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omFileInfo, String uploadID, long volumeId, long bucketId) throws IOException Adding multipart omKeyInfo to open file table.- Parameters:
omMetadataMgr- OM Metadata ManagerbatchOp- batch of db operationsomFileInfo- omKeyInfouploadID- uploadID- Returns:
- multipartFileKey
- Throws:
IOException- DB failure
-
addToFileTable
public static String addToFileTable(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataMgr, org.apache.hadoop.hdds.utils.db.BatchOperation batchOp, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omFileInfo, long volumeId, long bucketId) throws IOException Adding omKeyInfo to file table.- Parameters:
omMetadataMgr-batchOp-omFileInfo-- Returns:
- db file key
- Throws:
IOException
-
getOmKeyInfoFromFileTable
public static org.apache.hadoop.ozone.om.helpers.OmKeyInfo getOmKeyInfoFromFileTable(boolean openFileTable, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataMgr, String dbOpenFileKey, String keyName) throws IOException Gets om key info from open key table if openFileTable flag is true, otherwise get it from key table.- Parameters:
openFileTable- if true add KeyInfo to openFileTable, otherwise to fileTableomMetadataMgr- OM Metadata ManagerdbOpenFileKey- open file kaye name in DBkeyName- key name- Returns:
- om key info
- Throws:
IOException- DB failure
-
getOMKeyInfoIfExists
@Nullable public static org.apache.hadoop.ozone.om.helpers.OzoneFileStatus getOMKeyInfoIfExists(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataMgr, String volumeName, String bucketName, String keyName, long scmBlockSize, org.apache.hadoop.hdds.client.ReplicationConfig defaultReplication) throws IOException Gets OmKeyInfo if exists and validate bucket and volume.- Parameters:
omMetadataMgr- metadata managervolumeName- volume namebucketName- bucket namekeyName- key namescmBlockSize- scm block size- Returns:
- OzoneFileStatus
- Throws:
IOException- DB failure
-
getOMKeyInfoIfExists
@Nullable public static org.apache.hadoop.ozone.om.helpers.OzoneFileStatus getOMKeyInfoIfExists(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataMgr, String volumeName, String bucketName, String keyName, long scmBlockSize, org.apache.hadoop.hdds.client.ReplicationConfig defaultReplication, boolean validateBucketAndVolume) throws IOException Gets OmKeyInfo if exists for the given key name in the DB.- Parameters:
omMetadataMgr- metadata managervolumeName- volume namebucketName- bucket namekeyName- key namescmBlockSize- scm block sizevalidateBucketAndVolume- true if the volume/bucket needs validating.- Returns:
- OzoneFileStatus
- Throws:
IOException- DB failure
-
getKeyInfoWithFullPath
public static org.apache.hadoop.ozone.om.helpers.OmKeyInfo getKeyInfoWithFullPath(org.apache.hadoop.ozone.om.helpers.OmKeyInfo parentInfo, org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo directoryInfo) -
getKeyInfoWithFullPath
public static org.apache.hadoop.ozone.om.helpers.OmKeyInfo getKeyInfoWithFullPath(org.apache.hadoop.ozone.om.helpers.OmKeyInfo parentInfo, org.apache.hadoop.ozone.om.helpers.OmKeyInfo omKeyInfo) -
getOmKeyInfo
@Nonnull public static org.apache.hadoop.ozone.om.helpers.OmKeyInfo getOmKeyInfo(String volumeName, String bucketName, org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo dirInfo, String keyName) Prepare OmKeyInfo from OmDirectoryInfo.- Parameters:
volumeName- volume namebucketName- bucket namedirInfo- directory infokeyName- user given key name- Returns:
- OmKeyInfo object
-
getAbsolutePath
Returns absolute path.- Parameters:
prefixName- prefix pathfileName- file name- Returns:
- absolute path
-
getDirectoryInfo
public static org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo getDirectoryInfo(org.apache.hadoop.ozone.om.helpers.OmKeyInfo keyInfo) Build DirectoryInfo from OmKeyInfo.- Parameters:
keyInfo- omKeyInfo- Returns:
- omDirectoryInfo object
-
verifyToDirIsASubDirOfFromDirectory
public static void verifyToDirIsASubDirOfFromDirectory(String fromKeyName, String toKeyName, boolean isDir) throws org.apache.hadoop.ozone.om.exceptions.OMException Verify that the given toKey directory is a sub directory of fromKey directory.For example, special case of renaming a directory to its own sub-directory is not allowed.
- Parameters:
fromKeyName- source pathtoKeyName- destination pathisDir- true represents a directory type otw a file type- Throws:
org.apache.hadoop.ozone.om.exceptions.OMException- if the dest dir is a sub-dir of source dir.
-
getKeyParentDir
public static org.apache.hadoop.ozone.om.helpers.OmKeyInfo getKeyParentDir(String volumeName, String bucketName, String toKeyName, OzoneManager ozoneManager, org.apache.hadoop.ozone.om.OMMetadataManager metaMgr) throws IOException Verify parent exists for the destination path and return destination path parent.Check whether dst parent dir exists or not. If the parent exists, then the source can be renamed to dst path.
- Parameters:
volumeName- volume namebucketName- bucket nametoKeyName- destination pathozoneManager-metaMgr- metadata manager- Returns:
- omDirectoryInfo object of destination path's parent or null if parent is bucket
- Throws:
IOException- if the destination parent is not a directory.
-
hasChildren
public static boolean hasChildren(org.apache.hadoop.ozone.om.helpers.OmKeyInfo omKeyInfo, org.apache.hadoop.ozone.om.OMMetadataManager metaMgr) throws IOException Check if there are any sub path exist for the given user key path.- Parameters:
omKeyInfo- om key pathmetaMgr- OMMetadataManager- Returns:
- true if there are any sub path, false otherwise
- Throws:
IOException- DB exception
-
isImmediateChild
public static boolean isImmediateChild(long parentId, long ancestorId) -
getParentID
public static long getParentID(long volumeId, long bucketId, String keyName, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager) throws IOException Get parent id for the user given path.- Parameters:
volumeId- volume idbucketId- bucket idkeyName- user given key nameomMetadataManager- om metadata manager- Returns:
- lastKnownParentID
- Throws:
IOException- DB failure or parent not exists in DirectoryTable
-
getParentID
public static long getParentID(long volumeId, long bucketId, String keyName, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String errMsg) throws IOException Get parent id for the user given path.- Parameters:
bucketId- bucket idkeyName- user given key nameomMetadataManager- om metadata manager- Returns:
- lastKnownParentID
- Throws:
IOException- DB failure or parent not exists in DirectoryTable
-
getParentId
public static long getParentId(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String volumeName, String bucketName, String keyName) throws IOException Get parent ID for the user given keyName.- Parameters:
omMetadataManager-volumeName- - volume name.bucketName- - bucket name.keyName- - key name.- Returns:
long- Throws:
IOException
-
validateBucket
public static void validateBucket(org.apache.hadoop.ozone.om.OMMetadataManager metadataManager, String volumeName, String bucketName) throws IOException Validates volume and bucket existence.- Parameters:
metadataManager-volumeName-bucketName-- Throws:
IOException
-