public Resolution resolve ( AlluxioURI uri ) throws InvalidPathException { try ( LockResource r = new LockResource ( mReadLock ) ) { String path = uri . getPath ( ) ; LOG . debug ( "Resolving {}" , path ) ; // This will re-acquire the read lock, but that is allowed. String mountPoint = getMountPoint ( uri ) ; if ( mountPoint != null ) { MountInfo info = mState . getMountTable ( ) . get ( mountPoint ) ; AlluxioURI ufsUri = info . getUfsUri ( ) ; UfsManager . UfsClient ufsClient ; AlluxioURI resolvedUri ; try { ufsClient = mUfsManager . get ( info . getMountId ( ) ) ; try ( CloseableResource < UnderFileSystem > ufsResource = ufsClient . acquireUfsResource ( ) ) { UnderFileSystem ufs = ufsResource . get ( ) ; resolvedUri = ufs . resolveUri ( ufsUri , path . substring ( mountPoint . length ( ) ) ) ; } } catch ( NotFoundException | UnavailableException e ) { throw new RuntimeException ( String . format ( "No UFS information for %s for mount Id %d, we should never reach here" , uri , info . getMountId ( ) ) , e ) ; } return new Resolution ( resolvedUri , ufsClient , info . getOptions ( ) . getShared ( ) , info . getMountId ( ) ) ; } // TODO(binfan): throw exception as we should never reach here return new Resolution ( uri , null , false , IdUtils . INVALID_MOUNT_ID ) ; } }
Resolves the given Alluxio path . If the given Alluxio path is nested under a mount point the resolution maps the Alluxio path to the corresponding UFS path . Otherwise the resolution is a no - op .