@NotThreadSafe public final class DefaultFileSystemMaster extends CoreMaster implements FileSystemMaster, DelegatingJournaled
| Modifier and Type | Class and Description |
|---|---|
static class |
DefaultFileSystemMaster.Metrics
Class that contains metrics for FileSystemMaster.
|
mBackupManager, mJournalSystem, mPort, mSafeModeManager, mStartTimeMsmClock, mMasterContext| Constructor and Description |
|---|
DefaultFileSystemMaster(BlockMaster blockMaster,
CoreMasterContext masterContext)
Creates a new instance of
DefaultFileSystemMaster. |
DefaultFileSystemMaster(BlockMaster blockMaster,
CoreMasterContext masterContext,
ExecutorServiceFactory executorServiceFactory)
Creates a new instance of
DefaultFileSystemMaster. |
| Modifier and Type | Method and Description |
|---|---|
void |
activeSyncMetadata(AlluxioURI path,
java.util.Collection<AlluxioURI> changedFiles,
java.util.concurrent.ExecutorService executorService)
Actively sync metadata, based on a list of changed files.
|
java.util.List<AlluxioURI> |
checkConsistency(AlluxioURI path,
CheckConsistencyContext context)
Checks the consistency of the files and directories in the subtree under the path.
|
void |
cleanupUfs()
Periodically clean up the under file systems.
|
void |
close() |
void |
completeFile(AlluxioURI path,
CompleteFileContext context)
Completes a file.
|
long |
createDirectory(AlluxioURI path,
CreateDirectoryContext context)
Creates a directory for a given path.
|
FileInfo |
createFile(AlluxioURI path,
CreateFileContext context)
Creates a file (not a directory) for a given path.
|
RpcContext |
createRpcContext() |
void |
delete(AlluxioURI path,
DeleteContext context)
Deletes a given path.
|
void |
deleteInternal(RpcContext rpcContext,
LockedInodePath inodePath,
DeleteContext deleteContext)
Implements file deletion.
|
void |
free(AlluxioURI path,
FreeContext context)
Frees or evicts all of the blocks of the file from alluxio storage.
|
Journaled |
getDelegate() |
java.util.Set<java.lang.Class<? extends Server>> |
getDependencies() |
MountPointInfo |
getDisplayMountPointInfo(AlluxioURI path)
Gets the mount point information of an Alluxio path for display purpose.
|
java.util.List<FileBlockInfo> |
getFileBlockInfoList(AlluxioURI path)
Gets the
FileBlockInfo for all blocks of a file. |
long |
getFileId(AlluxioURI path)
Returns the file id for a given path.
|
FileInfo |
getFileInfo(AlluxioURI path,
GetStatusContext context)
Returns the
FileInfo for a given path. |
FileInfo |
getFileInfo(long fileId)
Returns the
FileInfo for a given file id. |
FileSystemMasterView |
getFileSystemMasterView() |
java.util.List<AlluxioURI> |
getInAlluxioFiles() |
java.util.List<AlluxioURI> |
getInMemoryFiles() |
long |
getInodeCount() |
java.util.List<java.lang.Long> |
getLostFiles() |
java.util.Map<java.lang.String,MountPointInfo> |
getMountTable() |
java.lang.String |
getName() |
long |
getNewBlockIdForFile(AlluxioURI path)
Gets a new block id for the next block of a given file to write to.
|
int |
getNumberOfPinnedFiles() |
AlluxioURI |
getPath(long fileId)
Gets the path of a file with the given id.
|
PersistenceState |
getPersistenceState(long fileId)
Returns the persistence state for a file id.
|
java.util.Set<java.lang.Long> |
getPinIdList() |
java.util.Map<ServiceType,GrpcService> |
getServices() |
java.util.List<SyncPointInfo> |
getSyncPathList() |
java.util.List<TimeSeries> |
getTimeSeries() |
java.lang.String |
getUfsAddress() |
UfsInfo |
getUfsInfo(long mountId) |
java.util.List<java.lang.String> |
getWhiteList() |
java.util.List<WorkerInfo> |
getWorkerInfoList() |
java.util.List<FileInfo> |
listStatus(AlluxioURI path,
ListStatusContext context)
Returns a list of
FileInfo for a given path. |
void |
listStatus(AlluxioURI path,
ListStatusContext context,
ResultStream<FileInfo> resultStream)
Enumerates given path to given batch tracker.
|
void |
mount(AlluxioURI alluxioPath,
AlluxioURI ufsPath,
MountContext context)
Mounts a UFS path onto an Alluxio path.
|
boolean |
recordActiveSyncTxid(long txId,
long mountId)
Journal the active sync transaction id so that we can restart more efficiently.
|
void |
rename(AlluxioURI srcPath,
AlluxioURI dstPath,
RenameContext context)
Renames a file to a destination.
|
AlluxioURI |
reverseResolve(AlluxioURI ufsUri)
Reverse path resolve a ufs uri to an Alluxio path.
|
void |
scheduleAsyncPersistence(AlluxioURI path,
ScheduleAsyncPersistenceContext context)
Schedules a file for async persistence.
|
void |
setAcl(AlluxioURI path,
SetAclAction action,
java.util.List<AclEntry> entries,
SetAclContext context)
Sets the ACL for a path.
|
void |
setAttribute(AlluxioURI path,
SetAttributeContext context)
Sets the file attribute.
|
void |
start(java.lang.Boolean isPrimary) |
void |
startSync(AlluxioURI syncPoint)
starts active sync on a specified alluxioURI.
|
void |
stop() |
void |
stopSync(AlluxioURI syncPoint)
stops active sync on a specific syncpoint.
|
void |
unmount(AlluxioURI alluxioPath)
Unmounts a UFS path previously mounted onto an Alluxio path.
|
void |
updateMount(AlluxioURI alluxioPath,
MountContext context)
Update properties of an Alluxio mount point.
|
void |
updateUfsMode(AlluxioURI ufsPath,
UfsMode ufsMode)
Update the operation mode for the given ufs path under one or more mount points.
|
void |
validateInodeBlocks(boolean repair)
Checks the integrity of the inodes with respect to the blocks of the system.
|
FileSystemCommand |
workerHeartbeat(long workerId,
java.util.List<java.lang.Long> persistedFiles,
WorkerHeartbeatContext context)
Instructs a worker to persist the files.
|
createJournalContext, getExecutorServiceclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitcreateJournalContextapplyAndJournal, processJournalEntry, resetState, restoreFromCheckpoint, writeToCheckpointgetCheckpointNamegetJournalEntryIteratorapplyAndJournal, getCheckpointName, getJournalEntryIterator, processJournalEntry, resetState, restoreFromCheckpoint, writeToCheckpointpublic DefaultFileSystemMaster(BlockMaster blockMaster, CoreMasterContext masterContext)
DefaultFileSystemMaster.blockMaster - a block master handlemasterContext - the context for Alluxio masterpublic DefaultFileSystemMaster(BlockMaster blockMaster, CoreMasterContext masterContext, ExecutorServiceFactory executorServiceFactory)
DefaultFileSystemMaster.blockMaster - a block master handlemasterContext - the context for Alluxio masterexecutorServiceFactory - a factory for creating the executor service to use for running
maintenance threadspublic java.util.Map<ServiceType,GrpcService> getServices()
getServices in interface Server<java.lang.Boolean>public java.lang.String getName()
public java.util.Set<java.lang.Class<? extends Server>> getDependencies()
getDependencies in interface Server<java.lang.Boolean>getDependencies in class AbstractMasterpublic Journaled getDelegate()
getDelegate in interface DelegatingJournaledpublic void start(java.lang.Boolean isPrimary)
throws java.io.IOException
start in interface Server<java.lang.Boolean>start in class AbstractMasterjava.io.IOExceptionpublic void stop()
throws java.io.IOException
stop in interface Server<java.lang.Boolean>stop in class AbstractMasterjava.io.IOExceptionpublic void close()
throws java.io.IOException
close in interface Server<java.lang.Boolean>close in class AbstractMasterjava.io.IOExceptionpublic void validateInodeBlocks(boolean repair)
throws UnavailableException
FileSystemMastervalidateInodeBlocks in interface FileSystemMasterrepair - if true, will attempt to repair the state of the system when inconsistencies are
discoveredUnavailableException - if the repair attempt failspublic void cleanupUfs()
FileSystemMastercleanupUfs in interface FileSystemMasterpublic long getFileId(AlluxioURI path) throws AccessControlException, UnavailableException
FileSystemMasterThis operation requires users to have READ permission of the path.
getFileId in interface FileSystemMasterpath - the path to get the file id forAccessControlException - if permission checking failsUnavailableExceptionpublic FileInfo getFileInfo(long fileId) throws FileDoesNotExistException, AccessControlException, UnavailableException
FileSystemMasterFileInfo for a given file id. This method is not user-facing but supposed
to be called by other internal servers (e.g., block workers, web UI).getFileInfo in interface FileSystemMasterfileId - the file id to get the FileInfo forFileInfo for the given fileFileDoesNotExistException - if the file does not existAccessControlException - if permission deniedUnavailableExceptionpublic FileInfo getFileInfo(AlluxioURI path, GetStatusContext context) throws FileDoesNotExistException, InvalidPathException, AccessControlException, java.io.IOException
FileSystemMasterFileInfo for a given path.
This operation requires users to have READ permission on the path.
getFileInfo in interface FileSystemMasterpath - the path to get the FileInfo forcontext - the method contextFileInfo for the given file idFileDoesNotExistException - if the file does not existInvalidPathException - if the file path is not validAccessControlException - if permission checking failsjava.io.IOExceptionpublic PersistenceState getPersistenceState(long fileId) throws FileDoesNotExistException
FileSystemMastergetPersistenceState in interface FileSystemMasterfileId - the file idPersistenceState for the given file idFileDoesNotExistException - if the file does not existpublic void listStatus(AlluxioURI path, ListStatusContext context, ResultStream<FileInfo> resultStream) throws AccessControlException, FileDoesNotExistException, InvalidPathException, java.io.IOException
FileSystemMasterThis operation requires users to have READ permission on the path, and also EXECUTE permission on the path if it is a directory.
listStatus in interface FileSystemMasterpath - the path to get the FileInfo list forcontext - the method contextresultStream - the stream to receive individual resultsAccessControlException - if permission checking failsFileDoesNotExistException - if the file does not existInvalidPathException - if the path is invalidjava.io.IOExceptionpublic java.util.List<FileInfo> listStatus(AlluxioURI path, ListStatusContext context) throws AccessControlException, FileDoesNotExistException, InvalidPathException, java.io.IOException
FileSystemMasterFileInfo for a given path. If the given path is a file, the list only
contains a single object. If it is a directory, the resulting list contains all direct children
of the directory.
This operation requires users to have READ permission on the path, and also EXECUTE permission on the path if it is a directory.
listStatus in interface FileSystemMasterpath - the path to get the FileInfo list forcontext - the method contextFileInfosAccessControlException - if permission checking failsFileDoesNotExistException - if the file does not existInvalidPathException - if the path is invalidjava.io.IOExceptionpublic FileSystemMasterView getFileSystemMasterView()
getFileSystemMasterView in interface FileSystemMasterpublic java.util.List<AlluxioURI> checkConsistency(AlluxioURI path, CheckConsistencyContext context) throws AccessControlException, FileDoesNotExistException, InvalidPathException, java.io.IOException
FileSystemMastercheckConsistency in interface FileSystemMasterpath - the root of the subtree to checkcontext - the context to use for the checkConsistency methodAccessControlException - if the permission checking failsFileDoesNotExistException - if the path does not existInvalidPathException - if the path is invalidjava.io.IOExceptionpublic void completeFile(AlluxioURI path, CompleteFileContext context) throws BlockInfoException, FileDoesNotExistException, InvalidPathException, InvalidFileSizeException, FileAlreadyCompletedException, AccessControlException, UnavailableException
FileSystemMasterThis operation requires users to have WRITE permission on the path.
completeFile in interface FileSystemMasterpath - the file path to completecontext - the method contextBlockInfoException - if a block information exception is encounteredFileDoesNotExistException - if the file does not existInvalidPathException - if an invalid path is encounteredInvalidFileSizeException - if an invalid file size is encounteredFileAlreadyCompletedException - if the file is already completedAccessControlException - if permission checking failsUnavailableExceptionpublic FileInfo createFile(AlluxioURI path, CreateFileContext context) throws AccessControlException, InvalidPathException, FileAlreadyExistsException, BlockInfoException, java.io.IOException, FileDoesNotExistException
FileSystemMasterThis operation requires WRITE permission on the parent of this path.
createFile in interface FileSystemMasterpath - the file to createcontext - the method contextAccessControlException - if permission checking failsInvalidPathException - if an invalid path is encounteredFileAlreadyExistsException - if the file already existsBlockInfoException - if an invalid block information is encounteredFileDoesNotExistException - if the parent of the path does not exist and the recursive
option is falsejava.io.IOExceptionpublic long getNewBlockIdForFile(AlluxioURI path) throws FileDoesNotExistException, InvalidPathException, AccessControlException, UnavailableException
FileSystemMasterThis operation requires users to have WRITE permission on the path as this API is called when creating a new block for a file.
getNewBlockIdForFile in interface FileSystemMasterpath - the path of the file to get the next block id forFileDoesNotExistException - if the file does not existInvalidPathException - if the given path is not validAccessControlException - if permission checking failsUnavailableExceptionpublic java.util.Map<java.lang.String,MountPointInfo> getMountTable()
getMountTable in interface FileSystemMasterpublic MountPointInfo getDisplayMountPointInfo(AlluxioURI path) throws InvalidPathException
FileSystemMastergetDisplayMountPointInfo in interface FileSystemMasterpath - an Alluxio path which must be a mount pointInvalidPathExceptionpublic long getInodeCount()
getInodeCount in interface FileSystemMasterpublic int getNumberOfPinnedFiles()
getNumberOfPinnedFiles in interface FileSystemMasterpublic void delete(AlluxioURI path, DeleteContext context) throws java.io.IOException, FileDoesNotExistException, DirectoryNotEmptyException, InvalidPathException, AccessControlException
FileSystemMasterThis operation requires user to have WRITE permission on the parent of the path.
delete in interface FileSystemMasterpath - the path to deletecontext - method contextFileDoesNotExistException - if the file does not existDirectoryNotEmptyException - if recursive is false and the file is a nonempty directoryInvalidPathException - if the path is invalidAccessControlException - if permission checking failsjava.io.IOExceptionpublic void deleteInternal(RpcContext rpcContext, LockedInodePath inodePath, DeleteContext deleteContext) throws FileDoesNotExistException, java.io.IOException, DirectoryNotEmptyException, InvalidPathException
This method does not delete blocks. Instead, it returns deleted inodes so that their blocks can be deleted after the inode deletion journal entry has been written. We cannot delete blocks earlier because the inode deletion may fail, leaving us with inode containing deleted blocks.
rpcContext - the rpc contextinodePath - the file LockedInodePathdeleteContext - the method optitionsFileDoesNotExistExceptionjava.io.IOExceptionDirectoryNotEmptyExceptionInvalidPathExceptionpublic java.util.List<FileBlockInfo> getFileBlockInfoList(AlluxioURI path) throws FileDoesNotExistException, InvalidPathException, AccessControlException, UnavailableException
FileSystemMasterFileBlockInfo for all blocks of a file. If path is a directory, an exception
is thrown.
This operation requires the client user to have READ permission on the the path.
getFileBlockInfoList in interface FileSystemMasterpath - the path to get the info forFileBlockInfo for all the blocks of the given pathFileDoesNotExistException - if the file does not exist or path is a directoryInvalidPathException - if the path of the given file is invalidAccessControlException - if permission checking failsUnavailableExceptionpublic java.util.List<AlluxioURI> getInAlluxioFiles() throws UnavailableException
getInAlluxioFiles in interface FileSystemMasterUnavailableExceptionpublic java.util.List<AlluxioURI> getInMemoryFiles() throws UnavailableException
getInMemoryFiles in interface FileSystemMasterUnavailableExceptionpublic long createDirectory(AlluxioURI path, CreateDirectoryContext context) throws InvalidPathException, FileAlreadyExistsException, java.io.IOException, AccessControlException, FileDoesNotExistException
FileSystemMasterThis operation requires the client user to have WRITE permission on the parent of the path.
createDirectory in interface FileSystemMasterpath - the path of the directorycontext - method contextInvalidPathException - when the path is invalidFileAlreadyExistsException - when there is already a file at pathAccessControlException - if permission checking failsFileDoesNotExistException - if the parent of the path does not exist and the recursive
option is falsejava.io.IOExceptionpublic void rename(AlluxioURI srcPath, AlluxioURI dstPath, RenameContext context) throws FileAlreadyExistsException, FileDoesNotExistException, InvalidPathException, java.io.IOException, AccessControlException
FileSystemMasterThis operation requires users to have WRITE permission on the parent of the src path, and WRITE permission on the parent of the dst path.
rename in interface FileSystemMastersrcPath - the source path to renamedstPath - the destination path to rename the file tocontext - method contextFileAlreadyExistsException - if the file already existsFileDoesNotExistException - if a non-existent file is encounteredInvalidPathException - if an invalid path is encounteredAccessControlException - if permission checking failsjava.io.IOExceptionpublic void free(AlluxioURI path, FreeContext context) throws FileDoesNotExistException, InvalidPathException, AccessControlException, UnexpectedAlluxioException, java.io.IOException
FileSystemMasterThis operation requires users to have READ permission on the path.
free in interface FileSystemMasterpath - the path to free methodcontext - context to free methodFileDoesNotExistException - if the file does not existInvalidPathException - if the given path is invalidAccessControlException - if permission checking failsUnexpectedAlluxioException - if the file or directory can not be freedjava.io.IOExceptionpublic AlluxioURI getPath(long fileId) throws FileDoesNotExistException
FileSystemMastergetPath in interface FileSystemMasterfileId - the id of the file to look upFileDoesNotExistException - raise if the file does not existpublic java.util.Set<java.lang.Long> getPinIdList()
getPinIdList in interface FileSystemMasterpublic java.lang.String getUfsAddress()
getUfsAddress in interface FileSystemMasterpublic UfsInfo getUfsInfo(long mountId)
getUfsInfo in interface FileSystemMastermountId - the mount id to querypublic java.util.List<java.lang.String> getWhiteList()
getWhiteList in interface FileSystemMasterpublic java.util.List<java.lang.Long> getLostFiles()
getLostFiles in interface FileSystemMasterpublic void updateMount(AlluxioURI alluxioPath, MountContext context) throws FileAlreadyExistsException, FileDoesNotExistException, InvalidPathException, java.io.IOException, AccessControlException
FileSystemMasterThis operation requires users to have WRITE permission on the parent of the Alluxio path.
updateMount in interface FileSystemMasteralluxioPath - the Alluxio path to update, must be a mount pointcontext - the mount contextFileDoesNotExistException - if the given path does not existInvalidPathException - if the given path is not a mount pointAccessControlException - if the permission check failsFileAlreadyExistsExceptionjava.io.IOExceptionpublic void mount(AlluxioURI alluxioPath, AlluxioURI ufsPath, MountContext context) throws FileAlreadyExistsException, FileDoesNotExistException, InvalidPathException, java.io.IOException, AccessControlException
FileSystemMasterThis operation requires users to have WRITE permission on the parent of the Alluxio path.
mount in interface FileSystemMasteralluxioPath - the Alluxio path to mount toufsPath - the UFS path to mountcontext - the mount contextFileAlreadyExistsException - if the path to be mounted to already existsFileDoesNotExistException - if the parent of the path to be mounted to does not existInvalidPathException - if an invalid path is encounteredAccessControlException - if the permission check failsjava.io.IOExceptionpublic void unmount(AlluxioURI alluxioPath) throws FileDoesNotExistException, InvalidPathException, java.io.IOException, AccessControlException
FileSystemMasterThis operation requires users to have WRITE permission on the parent of the Alluxio path.
unmount in interface FileSystemMasteralluxioPath - the Alluxio path to unmount, must be a mount pointFileDoesNotExistException - if the path to be mounted does not existInvalidPathException - if the given path is not a mount pointAccessControlException - if the permission check failsjava.io.IOExceptionpublic void setAcl(AlluxioURI path, SetAclAction action, java.util.List<AclEntry> entries, SetAclContext context) throws FileDoesNotExistException, AccessControlException, InvalidPathException, java.io.IOException
FileSystemMastersetAcl in interface FileSystemMasterpath - the path to set attribute foraction - the set action to performentries - the list of ACL entries for setting ACLcontext - the context for setting ACLFileDoesNotExistException - if the file does not existAccessControlException - if permission checking failsInvalidPathException - if the given path is invalidjava.io.IOExceptionpublic void setAttribute(AlluxioURI path, SetAttributeContext context) throws FileDoesNotExistException, AccessControlException, InvalidPathException, java.io.IOException
FileSystemMasterThis operation requires users to have WRITE permission on the path. In addition, the client user must be a super user when setting the owner, and must be a super user or the owner when setting the group or permission.
setAttribute in interface FileSystemMasterpath - the path to set attribute forcontext - master operation contextFileDoesNotExistException - if the file does not existAccessControlException - if permission checking failsInvalidPathException - if the given path is invalidjava.io.IOExceptionpublic void scheduleAsyncPersistence(AlluxioURI path, ScheduleAsyncPersistenceContext context) throws AlluxioException, UnavailableException
FileSystemMasterscheduleAsyncPersistence in interface FileSystemMasterpath - the path of the file for persistencecontext - the schedule async persistence contextAlluxioExceptionUnavailableExceptionpublic void activeSyncMetadata(AlluxioURI path, java.util.Collection<AlluxioURI> changedFiles, java.util.concurrent.ExecutorService executorService) throws java.io.IOException
activeSyncMetadata in interface FileSystemMasterpath - the path to syncchangedFiles - collection of files that are changed under the path to sync, if this is
null, force sync the entire directoryexecutorService - executor to execute the parallel incremental syncjava.io.IOExceptionpublic boolean recordActiveSyncTxid(long txId,
long mountId)
FileSystemMasterrecordActiveSyncTxid in interface FileSystemMastertxId - transaction idmountId - mount idpublic FileSystemCommand workerHeartbeat(long workerId, java.util.List<java.lang.Long> persistedFiles, WorkerHeartbeatContext context) throws java.io.IOException
FileSystemMasterNeeds WRITE permission on the list of files.
workerHeartbeat in interface FileSystemMasterworkerId - the id of the worker that heartbeatspersistedFiles - the files that persisted on the workercontext - the method contextjava.io.IOExceptionpublic java.util.List<SyncPointInfo> getSyncPathList()
getSyncPathList in interface FileSystemMasterpublic void startSync(AlluxioURI syncPoint) throws java.io.IOException, InvalidPathException, AccessControlException, ConnectionFailedException
FileSystemMasterstartSync in interface FileSystemMastersyncPoint - sync point which is a valid path in Alluxio namespaceUnavailableExceptionInvalidPathExceptionAccessControlExceptionjava.io.IOExceptionConnectionFailedExceptionpublic void stopSync(AlluxioURI syncPoint) throws java.io.IOException, InvalidPathException, AccessControlException
FileSystemMasterstopSync in interface FileSystemMastersyncPoint - alluxio path that has been added as a sync pointUnavailableExceptionInvalidPathExceptionAccessControlExceptionjava.io.IOExceptionpublic java.util.List<WorkerInfo> getWorkerInfoList() throws UnavailableException
getWorkerInfoList in interface FileSystemMasterWorkerInfo objects representing the workers in AlluxioUnavailableExceptionpublic void updateUfsMode(AlluxioURI ufsPath, UfsMode ufsMode) throws InvalidPathException, InvalidArgumentException, UnavailableException, AccessControlException
FileSystemMasterupdateUfsMode in interface FileSystemMasterufsPath - the physical ufs pathufsMode - the ufs operation modeInvalidPathException - if ufs path is not used by any mount pointInvalidArgumentException - if arguments for the method are invalidUnavailableExceptionAccessControlExceptionpublic RpcContext createRpcContext() throws UnavailableException
UnavailableExceptionpublic java.util.List<TimeSeries> getTimeSeries()
getTimeSeries in interface FileSystemMasterpublic AlluxioURI reverseResolve(AlluxioURI ufsUri) throws InvalidPathException
FileSystemMasterreverseResolve in interface FileSystemMasterufsUri - ufs uriInvalidPathExceptionCopyright © 2019. All Rights Reserved.