Class OMFileRequest

java.lang.Object
org.apache.hadoop.ozone.om.request.file.OMFileRequest

public final class OMFileRequest extends Object
Base class for file requests.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static enum 
    Return codes used by verifyFilesInPath method.
    static class 
    Class to return the results from verifyFilesInPath.
    static class 
    Class to return the results from verifyDirectoryKeysInPath.
  • Method Summary

    Modifier and Type
    Method
    Description
    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.
    static void
    addFileTableCacheEntry(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 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)
    Add entries to the Key Table cache.
    static void
    addOpenFileTableCacheEntry(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 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)
    Adding omKeyInfo to file table.
    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)
    Adding omKeyInfo to open file table.
    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)
    Adding multipart omKeyInfo to open file table.
    static String
    getAbsolutePath(String prefixName, String fileName)
    Returns absolute path.
    static org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo
    getDirectoryInfo(org.apache.hadoop.ozone.om.helpers.OmKeyInfo keyInfo)
    Build DirectoryInfo from OmKeyInfo.
    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)
     
    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)
     
    static org.apache.hadoop.ozone.om.helpers.OmKeyInfo
    getKeyParentDir(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.OmKeyInfo
    getOmKeyInfo(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.OmKeyInfo
    getOmKeyInfoFromFileTable(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.OzoneFileStatus
    getOMKeyInfoIfExists(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.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)
    Gets OmKeyInfo if exists for the given key name in the DB.
    static long
    getParentId(org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String volumeName, String bucketName, String keyName)
    Get parent ID for the user given keyName.
    static long
    getParentID(long volumeId, long bucketId, String keyName, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager)
    Get parent id for the user given path.
    static long
    getParentID(long volumeId, long bucketId, String keyName, org.apache.hadoop.ozone.om.OMMetadataManager omMetadataManager, String errMsg)
    Get parent id for the user given path.
    static boolean
    hasChildren(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 boolean
    isImmediateChild(long parentId, long ancestorId)
     
    static void
    validateBucket(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.
    verifyFilesInPath(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 void
    verifyToDirIsASubDirOfFromDirectory(String fromKeyName, String toKeyName, boolean isDir)
    Verify that the given toKey directory is a sub directory of fromKey directory.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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 - OMMetadataManager
      volumeName - Volume Name
      bucketName - Bucket Name
      keyPath - 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 manager
      volumeName - volume name
      bucketName - bucket name
      keyName - key name
      keyPath - 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 Manager
      volumeId - ID of the Volume
      bucketId - ID of the Bucket
      trxnLogIndex - transaction log index
      missingParentInfos - list of the parents to be added to DB
      dirInfo - 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 Manager
      dbOpenFileName - open file name key
      omFileInfo - key info
      fileName - file name
      trxnLogIndex - 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 Manager
      dbFileKey - file name key
      omFileInfo - key info
      fileName - file name
      trxnLogIndex - 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 Manager
      batchOp - batch of db operations
      omFileInfo - omKeyInfo
      openKeySessionID - 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 Manager
      batchOp - batch of db operations
      omFileInfo - omKeyInfo
      uploadID - 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 fileTable
      omMetadataMgr - OM Metadata Manager
      dbOpenFileKey - open file kaye name in DB
      keyName - 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 manager
      volumeName - volume name
      bucketName - bucket name
      keyName - key name
      scmBlockSize - 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 manager
      volumeName - volume name
      bucketName - bucket name
      keyName - key name
      scmBlockSize - scm block size
      validateBucketAndVolume - 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 name
      bucketName - bucket name
      dirInfo - directory info
      keyName - user given key name
      Returns:
      OmKeyInfo object
    • getAbsolutePath

      @Nonnull public static String getAbsolutePath(String prefixName, String fileName)
      Returns absolute path.
      Parameters:
      prefixName - prefix path
      fileName - 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 path
      toKeyName - destination path
      isDir - 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 name
      bucketName - bucket name
      toKeyName - destination path
      ozoneManager -
      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 path
      metaMgr - 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 id
      bucketId - bucket id
      keyName - user given key name
      omMetadataManager - 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 id
      keyName - user given key name
      omMetadataManager - 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