use of alluxio.master.file.meta.InodeTree in project alluxio by Alluxio.
the class FileSystemMaster method createDirectoryInternal.
/**
* Implementation of directory creation for a given path.
*
* @param inodePath the path of the directory
* @param options method options
* @return an {@link alluxio.master.file.meta.InodeTree.CreatePathResult} representing the
* modified inodes and created inodes during path creation
* @throws InvalidPathException when the path is invalid, please see documentation on {@link
* InodeTree#createPath(LockedInodePath, alluxio.master.file.options.CreatePathOptions)}
* for more details
* @throws FileAlreadyExistsException when there is already a file at path
* @throws IOException if a non-Alluxio related exception occurs
* @throws AccessControlException if permission checking fails
*/
private InodeTree.CreatePathResult createDirectoryInternal(LockedInodePath inodePath, CreateDirectoryOptions options) throws InvalidPathException, FileAlreadyExistsException, IOException, AccessControlException, FileDoesNotExistException {
try {
InodeTree.CreatePathResult createResult = mInodeTree.createPath(inodePath, options);
InodeDirectory inodeDirectory = (InodeDirectory) inodePath.getInode();
// If inodeDirectory's ttl not equals Constants.NO_TTL, it should insert into mTtlBuckets
if (createResult.getCreated().size() > 0) {
mTtlBuckets.insert(inodeDirectory);
}
return createResult;
} catch (BlockInfoException e) {
// Since we are creating a directory, the block size is ignored, no such exception should
// happen.
Throwables.propagate(e);
}
return null;
}
use of alluxio.master.file.meta.InodeTree in project alluxio by Alluxio.
the class AccessTimeUpdaterTest method before.
@Before
public final void before() throws Exception {
mFileSystemMaster = Mockito.mock(FileSystemMaster.class);
when(mFileSystemMaster.getName()).thenReturn(Constants.FILE_SYSTEM_MASTER_NAME);
ServerConfiguration.set(PropertyKey.MASTER_JOURNAL_TYPE, "UFS");
MasterRegistry registry = new MasterRegistry();
JournalSystem journalSystem = JournalTestUtils.createJournalSystem(mTestFolder);
mContext = MasterTestUtils.testMasterContext(journalSystem);
new MetricsMasterFactory().create(registry, mContext);
mBlockMaster = new BlockMasterFactory().create(registry, mContext);
InodeDirectoryIdGenerator directoryIdGenerator = new InodeDirectoryIdGenerator(mBlockMaster);
UfsManager manager = mock(UfsManager.class);
MountTable mountTable = new MountTable(manager, mock(MountInfo.class));
InodeLockManager lockManager = new InodeLockManager();
mInodeStore = mContext.getInodeStoreFactory().apply(lockManager);
mInodeTree = new InodeTree(mInodeStore, mBlockMaster, directoryIdGenerator, mountTable, lockManager);
journalSystem.start();
journalSystem.gainPrimacy();
mBlockMaster.start(true);
ServerConfiguration.set(PropertyKey.SECURITY_AUTHORIZATION_PERMISSION_ENABLED, true);
ServerConfiguration.set(PropertyKey.SECURITY_AUTHORIZATION_PERMISSION_SUPERGROUP, "test-supergroup");
mInodeTree.initializeRoot(TEST_OWNER, TEST_GROUP, TEST_MODE, NoopJournalContext.INSTANCE);
mScheduler = new ControllableScheduler();
}
use of alluxio.master.file.meta.InodeTree in project alluxio by Alluxio.
the class PermissionCheckerTest method beforeClass.
@BeforeClass
public static void beforeClass() throws Exception {
sFileContext = CreateFileContext.mergeFrom(CreateFilePOptions.newBuilder().setBlockSizeBytes(Constants.KB).setMode(TEST_NORMAL_MODE.toProto())).setOwner(TEST_USER_2.getUser()).setGroup(TEST_USER_2.getGroup());
sWeirdFileContext = CreateFileContext.mergeFrom(CreateFilePOptions.newBuilder().setBlockSizeBytes(Constants.KB).setMode(TEST_WEIRD_MODE.toProto())).setOwner(TEST_USER_1.getUser()).setGroup(TEST_USER_1.getGroup());
sNestedFileContext = CreateFileContext.mergeFrom(CreateFilePOptions.newBuilder().setBlockSizeBytes(Constants.KB).setMode(TEST_NORMAL_MODE.toProto()).setRecursive(true)).setOwner(TEST_USER_1.getUser()).setGroup(TEST_USER_1.getGroup());
// setup an InodeTree
sRegistry = new MasterRegistry();
CoreMasterContext masterContext = MasterTestUtils.testMasterContext();
sMetricsMaster = new MetricsMasterFactory().create(sRegistry, masterContext);
sRegistry.add(MetricsMaster.class, sMetricsMaster);
BlockMaster blockMaster = new BlockMasterFactory().create(sRegistry, masterContext);
InodeDirectoryIdGenerator directoryIdGenerator = new InodeDirectoryIdGenerator(blockMaster);
UfsManager ufsManager = mock(UfsManager.class);
MountTable mountTable = new MountTable(ufsManager, mock(MountInfo.class));
InodeLockManager lockManager = new InodeLockManager();
sInodeStore = masterContext.getInodeStoreFactory().apply(lockManager);
sTree = new InodeTree(sInodeStore, blockMaster, directoryIdGenerator, mountTable, lockManager);
sRegistry.start(true);
GroupMappingServiceTestUtils.resetCache();
ServerConfiguration.set(PropertyKey.SECURITY_GROUP_MAPPING_CLASS, FakeUserGroupsMapping.class.getName());
ServerConfiguration.set(PropertyKey.SECURITY_AUTHENTICATION_TYPE, AuthType.SIMPLE.getAuthName());
ServerConfiguration.set(PropertyKey.SECURITY_AUTHORIZATION_PERMISSION_ENABLED, true);
ServerConfiguration.set(PropertyKey.SECURITY_AUTHORIZATION_PERMISSION_SUPERGROUP, TEST_SUPER_GROUP);
sTree.initializeRoot(TEST_USER_ADMIN.getUser(), TEST_USER_ADMIN.getGroup(), TEST_NORMAL_MODE, NoopJournalContext.INSTANCE);
// build file structure
createAndSetPermission(TEST_DIR_FILE_URI, sNestedFileContext);
createAndSetPermission(TEST_FILE_URI, sFileContext);
createAndSetPermission(TEST_WEIRD_FILE_URI, sWeirdFileContext);
}
use of alluxio.master.file.meta.InodeTree in project alluxio by Alluxio.
the class ReplicationCheckerTest method before.
@Before
public void before() throws Exception {
ServerConfiguration.set(PropertyKey.MASTER_JOURNAL_TYPE, "UFS");
MasterRegistry registry = new MasterRegistry();
JournalSystem journalSystem = JournalTestUtils.createJournalSystem(mTestFolder);
mContext = MasterTestUtils.testMasterContext(journalSystem);
new MetricsMasterFactory().create(registry, mContext);
mBlockMaster = new BlockMasterFactory().create(registry, mContext);
InodeDirectoryIdGenerator directoryIdGenerator = new InodeDirectoryIdGenerator(mBlockMaster);
UfsManager manager = mock(UfsManager.class);
MountTable mountTable = new MountTable(manager, mock(MountInfo.class));
InodeLockManager lockManager = new InodeLockManager();
mInodeStore = mContext.getInodeStoreFactory().apply(lockManager);
mInodeTree = new InodeTree(mInodeStore, mBlockMaster, directoryIdGenerator, mountTable, lockManager);
journalSystem.start();
journalSystem.gainPrimacy();
mBlockMaster.start(true);
ServerConfiguration.set(PropertyKey.TEST_MODE, true);
ServerConfiguration.set(PropertyKey.SECURITY_AUTHORIZATION_PERMISSION_ENABLED, true);
ServerConfiguration.set(PropertyKey.SECURITY_AUTHORIZATION_PERMISSION_SUPERGROUP, "test-supergroup");
mInodeTree.initializeRoot(TEST_OWNER, TEST_GROUP, TEST_MODE, NoopJournalContext.INSTANCE);
mMockReplicationHandler = new MockHandler();
mReplicationChecker = new ReplicationChecker(mInodeTree, mBlockMaster, mContext.getSafeModeManager(), mMockReplicationHandler);
}
use of alluxio.master.file.meta.InodeTree in project alluxio by Alluxio.
the class BlockMasterIntegrityIntegrationTest method removeFileMetadata.
private void removeFileMetadata(AlluxioURI uri) throws Exception {
FileSystemMaster fsm = mCluster.getLocalAlluxioMaster().getMasterProcess().getMaster(FileSystemMaster.class);
InodeTree tree = Whitebox.getInternalState(fsm, "mInodeTree");
LockedInodePath path = tree.lockInodePath(uri, LockPattern.WRITE_EDGE);
RpcContext rpcContext = ((DefaultFileSystemMaster) fsm).createRpcContext();
((DefaultFileSystemMaster) fsm).deleteInternal(rpcContext, path, DeleteContext.defaults());
path.close();
rpcContext.close();
}
Aggregations