Java Code Examples for org.apache.hadoop.hdfs.server.namenode.INodeDirectory#getFullPathName()

The following examples show how to use org.apache.hadoop.hdfs.server.namenode.INodeDirectory#getFullPathName() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: SnapshotManager.java    From hadoop with Apache License 2.0 6 votes vote down vote up
private void checkNestedSnapshottable(INodeDirectory dir, String path)
    throws SnapshotException {
  if (allowNestedSnapshots) {
    return;
  }

  for(INodeDirectory s : snapshottables.values()) {
    if (s.isAncestorDirectory(dir)) {
      throw new SnapshotException(
          "Nested snapshottable directories not allowed: path=" + path
          + ", the subdirectory " + s.getFullPathName()
          + " is already a snapshottable directory.");
    }
    if (dir.isAncestorDirectory(s)) {
      throw new SnapshotException(
          "Nested snapshottable directories not allowed: path=" + path
          + ", the ancestor " + s.getFullPathName()
          + " is already a snapshottable directory.");
    }
  }
}
 
Example 2
Source File: SnapshotManager.java    From big-c with Apache License 2.0 6 votes vote down vote up
private void checkNestedSnapshottable(INodeDirectory dir, String path)
    throws SnapshotException {
  if (allowNestedSnapshots) {
    return;
  }

  for(INodeDirectory s : snapshottables.values()) {
    if (s.isAncestorDirectory(dir)) {
      throw new SnapshotException(
          "Nested snapshottable directories not allowed: path=" + path
          + ", the subdirectory " + s.getFullPathName()
          + " is already a snapshottable directory.");
    }
    if (dir.isAncestorDirectory(s)) {
      throw new SnapshotException(
          "Nested snapshottable directories not allowed: path=" + path
          + ", the ancestor " + s.getFullPathName()
          + " is already a snapshottable directory.");
    }
  }
}
 
Example 3
Source File: SnapshotManager.java    From hadoop with Apache License 2.0 5 votes vote down vote up
public static SnapshottableDirectoryStatus.Bean toBean(INodeDirectory d) {
  return new SnapshottableDirectoryStatus.Bean(
      d.getFullPathName(),
      d.getDirectorySnapshottableFeature().getNumSnapshots(),
      d.getDirectorySnapshottableFeature().getSnapshotQuota(),
      d.getModificationTime(),
      Short.valueOf(Integer.toOctalString(
          d.getFsPermissionShort())),
      d.getUserName(),
      d.getGroupName());
}
 
Example 4
Source File: DirectorySnapshottableFeature.java    From hadoop with Apache License 2.0 5 votes vote down vote up
/**
 * Remove the snapshot with the given name from {@link #snapshotsByNames},
 * and delete all the corresponding DirectoryDiff.
 *
 * @param snapshotRoot The directory where we take snapshots
 * @param snapshotName The name of the snapshot to be removed
 * @param collectedBlocks Used to collect information to update blocksMap
 * @return The removed snapshot. Null if no snapshot with the given name
 *         exists.
 */
public Snapshot removeSnapshot(BlockStoragePolicySuite bsps, INodeDirectory snapshotRoot,
    String snapshotName, BlocksMapUpdateInfo collectedBlocks,
    final List<INode> removedINodes) throws SnapshotException {
  final int i = searchSnapshot(DFSUtil.string2Bytes(snapshotName));
  if (i < 0) {
    throw new SnapshotException("Cannot delete snapshot " + snapshotName
        + " from path " + snapshotRoot.getFullPathName()
        + ": the snapshot does not exist.");
  } else {
    final Snapshot snapshot = snapshotsByNames.get(i);
    int prior = Snapshot.findLatestSnapshot(snapshotRoot, snapshot.getId());
    try {
      QuotaCounts counts = snapshotRoot.cleanSubtree(bsps, snapshot.getId(),
          prior, collectedBlocks, removedINodes);
      INodeDirectory parent = snapshotRoot.getParent();
      if (parent != null) {
        // there will not be any WithName node corresponding to the deleted
        // snapshot, thus only update the quota usage in the current tree
        parent.addSpaceConsumed(counts.negation(), true);
      }
    } catch(QuotaExceededException e) {
      INode.LOG.error("BUG: removeSnapshot increases namespace usage.", e);
    }
    // remove from snapshotsByNames after successfully cleaning the subtree
    snapshotsByNames.remove(i);
    return snapshot;
  }
}
 
Example 5
Source File: DirectorySnapshottableFeature.java    From hadoop with Apache License 2.0 5 votes vote down vote up
/**
 * Find the snapshot matching the given name.
 *
 * @param snapshotRoot The directory where snapshots were taken.
 * @param snapshotName The name of the snapshot.
 * @return The corresponding snapshot. Null if snapshotName is null or empty.
 * @throws SnapshotException If snapshotName is not null or empty, but there
 *           is no snapshot matching the name.
 */
private Snapshot getSnapshotByName(INodeDirectory snapshotRoot,
    String snapshotName) throws SnapshotException {
  Snapshot s = null;
  if (snapshotName != null && !snapshotName.isEmpty()) {
    final int index = searchSnapshot(DFSUtil.string2Bytes(snapshotName));
    if (index < 0) {
      throw new SnapshotException("Cannot find the snapshot of directory "
          + snapshotRoot.getFullPathName() + " with name " + snapshotName);
    }
    s = snapshotsByNames.get(index);
  }
  return s;
}
 
Example 6
Source File: SnapshotManager.java    From big-c with Apache License 2.0 5 votes vote down vote up
public static SnapshottableDirectoryStatus.Bean toBean(INodeDirectory d) {
  return new SnapshottableDirectoryStatus.Bean(
      d.getFullPathName(),
      d.getDirectorySnapshottableFeature().getNumSnapshots(),
      d.getDirectorySnapshottableFeature().getSnapshotQuota(),
      d.getModificationTime(),
      Short.valueOf(Integer.toOctalString(
          d.getFsPermissionShort())),
      d.getUserName(),
      d.getGroupName());
}
 
Example 7
Source File: DirectorySnapshottableFeature.java    From big-c with Apache License 2.0 5 votes vote down vote up
/**
 * Remove the snapshot with the given name from {@link #snapshotsByNames},
 * and delete all the corresponding DirectoryDiff.
 *
 * @param snapshotRoot The directory where we take snapshots
 * @param snapshotName The name of the snapshot to be removed
 * @param collectedBlocks Used to collect information to update blocksMap
 * @return The removed snapshot. Null if no snapshot with the given name
 *         exists.
 */
public Snapshot removeSnapshot(BlockStoragePolicySuite bsps, INodeDirectory snapshotRoot,
    String snapshotName, BlocksMapUpdateInfo collectedBlocks,
    final List<INode> removedINodes) throws SnapshotException {
  final int i = searchSnapshot(DFSUtil.string2Bytes(snapshotName));
  if (i < 0) {
    throw new SnapshotException("Cannot delete snapshot " + snapshotName
        + " from path " + snapshotRoot.getFullPathName()
        + ": the snapshot does not exist.");
  } else {
    final Snapshot snapshot = snapshotsByNames.get(i);
    int prior = Snapshot.findLatestSnapshot(snapshotRoot, snapshot.getId());
    try {
      QuotaCounts counts = snapshotRoot.cleanSubtree(bsps, snapshot.getId(),
          prior, collectedBlocks, removedINodes);
      INodeDirectory parent = snapshotRoot.getParent();
      if (parent != null) {
        // there will not be any WithName node corresponding to the deleted
        // snapshot, thus only update the quota usage in the current tree
        parent.addSpaceConsumed(counts.negation(), true);
      }
    } catch(QuotaExceededException e) {
      INode.LOG.error("BUG: removeSnapshot increases namespace usage.", e);
    }
    // remove from snapshotsByNames after successfully cleaning the subtree
    snapshotsByNames.remove(i);
    return snapshot;
  }
}
 
Example 8
Source File: DirectorySnapshottableFeature.java    From big-c with Apache License 2.0 5 votes vote down vote up
/**
 * Find the snapshot matching the given name.
 *
 * @param snapshotRoot The directory where snapshots were taken.
 * @param snapshotName The name of the snapshot.
 * @return The corresponding snapshot. Null if snapshotName is null or empty.
 * @throws SnapshotException If snapshotName is not null or empty, but there
 *           is no snapshot matching the name.
 */
private Snapshot getSnapshotByName(INodeDirectory snapshotRoot,
    String snapshotName) throws SnapshotException {
  Snapshot s = null;
  if (snapshotName != null && !snapshotName.isEmpty()) {
    final int index = searchSnapshot(DFSUtil.string2Bytes(snapshotName));
    if (index < 0) {
      throw new SnapshotException("Cannot find the snapshot of directory "
          + snapshotRoot.getFullPathName() + " with name " + snapshotName);
    }
    s = snapshotsByNames.get(index);
  }
  return s;
}