/** * Get the list of snapshottable directories that are owned * by the current user. Return all the snapshottable directories if the * current user is a super user. * @return The list of all the current snapshottable directories * @throws IOException */ public SnapshottableDirectoryStatus[] getSnapshottableDirListing() throws IOException { SnapshottableDirectoryStatus[] status = null; checkOperation(OperationCategory.READ); boolean success = false; readLock(); try { checkOperation(OperationCategory.READ); status = FSDirSnapshotOp.getSnapshottableDirListing(dir, snapshotManager); success = true; } finally { readUnlock(); } logAuditEvent(success, "listSnapshottableDirectory", null, null, null); return status; }
public static SnapshottableDirectoryStatus convert( SnapshottableDirectoryStatusProto sdirStatusProto) { if (sdirStatusProto == null) { return null; } final HdfsFileStatusProto status = sdirStatusProto.getDirStatus(); return new SnapshottableDirectoryStatus( status.getModificationTime(), status.getAccessTime(), PBHelper.convert(status.getPermission()), status.getOwner(), status.getGroup(), status.getPath().toByteArray(), status.getFileId(), status.getChildrenNum(), sdirStatusProto.getSnapshotNumber(), sdirStatusProto.getSnapshotQuota(), sdirStatusProto.getParentFullpath().toByteArray()); }
public static SnapshottableDirectoryStatusProto convert( SnapshottableDirectoryStatus status) { if (status == null) { return null; } int snapshotNumber = status.getSnapshotNumber(); int snapshotQuota = status.getSnapshotQuota(); byte[] parentFullPath = status.getParentFullPath(); ByteString parentFullPathBytes = ByteString.copyFrom( parentFullPath == null ? DFSUtil.EMPTY_BYTES : parentFullPath); HdfsFileStatusProto fs = convert(status.getDirStatus()); SnapshottableDirectoryStatusProto.Builder builder = SnapshottableDirectoryStatusProto .newBuilder().setSnapshotNumber(snapshotNumber) .setSnapshotQuota(snapshotQuota).setParentFullpath(parentFullPathBytes) .setDirStatus(fs); return builder.build(); }
public static SnapshottableDirectoryStatus[] convert( SnapshottableDirectoryListingProto sdlp) { if (sdlp == null) return null; List<SnapshottableDirectoryStatusProto> list = sdlp .getSnapshottableDirListingList(); if (list.isEmpty()) { return new SnapshottableDirectoryStatus[0]; } else { SnapshottableDirectoryStatus[] result = new SnapshottableDirectoryStatus[list.size()]; for (int i = 0; i < list.size(); i++) { result[i] = PBHelper.convert(list.get(i)); } return result; } }
@Override public GetSnapshottableDirListingResponseProto getSnapshottableDirListing( RpcController controller, GetSnapshottableDirListingRequestProto request) throws ServiceException { try { SnapshottableDirectoryStatus[] result = server .getSnapshottableDirListing(); if (result != null) { return GetSnapshottableDirListingResponseProto.newBuilder(). setSnapshottableDirList(PBHelper.convert(result)).build(); } else { return NULL_GET_SNAPSHOTTABLE_DIR_LISTING_RESPONSE; } } catch (IOException e) { throw new ServiceException(e); } }
@Override public SnapshottableDirectoryStatus[] getSnapshottableDirListing() throws IOException { GetSnapshottableDirListingRequestProto req = GetSnapshottableDirListingRequestProto.newBuilder().build(); try { GetSnapshottableDirListingResponseProto result = rpcProxy .getSnapshottableDirListing(null, req); if (result.hasSnapshottableDirList()) { return PBHelper.convert(result.getSnapshottableDirList()); } return null; } catch (ServiceException e) { throw ProtobufHelper.getRemoteException(e); } }
public static SnapshottableDirectoryStatus[] convert( SnapshottableDirectoryListingProto sdlp) { if (sdlp == null) return null; List<SnapshottableDirectoryStatusProto> list = sdlp .getSnapshottableDirListingList(); if (list.isEmpty()) { return new SnapshottableDirectoryStatus[0]; } else { SnapshottableDirectoryStatus[] result = new SnapshottableDirectoryStatus[list.size()]; for (int i = 0; i < list.size(); i++) { result[i] = convert(list.get(i)); } return result; } }
public static SnapshottableDirectoryStatus convert( SnapshottableDirectoryStatusProto sdirStatusProto) { if (sdirStatusProto == null) { return null; } final HdfsFileStatusProto status = sdirStatusProto.getDirStatus(); return new SnapshottableDirectoryStatus( status.getModificationTime(), status.getAccessTime(), convert(status.getPermission()), status.getOwner(), status.getGroup(), status.getPath().toByteArray(), status.getFileId(), status.getChildrenNum(), sdirStatusProto.getSnapshotNumber(), sdirStatusProto.getSnapshotQuota(), sdirStatusProto.getParentFullpath().toByteArray()); }
public static SnapshottableDirectoryStatusProto convert( SnapshottableDirectoryStatus status) { if (status == null) { return null; } int snapshotNumber = status.getSnapshotNumber(); int snapshotQuota = status.getSnapshotQuota(); byte[] parentFullPath = status.getParentFullPath(); ByteString parentFullPathBytes = getByteString( parentFullPath == null ? DFSUtilClient.EMPTY_BYTES : parentFullPath); HdfsFileStatusProto fs = convert(status.getDirStatus()); SnapshottableDirectoryStatusProto.Builder builder = SnapshottableDirectoryStatusProto .newBuilder() .setSnapshotNumber(snapshotNumber) .setSnapshotQuota(snapshotQuota) .setParentFullpath(parentFullPathBytes) .setDirStatus(fs); return builder.build(); }
@Override public SnapshottableDirectoryStatus[] getSnapshottableDirListing() throws IOException { GetSnapshottableDirListingRequestProto req = GetSnapshottableDirListingRequestProto.newBuilder().build(); try { GetSnapshottableDirListingResponseProto result = rpcProxy .getSnapshottableDirListing(null, req); if (result.hasSnapshottableDirList()) { return PBHelperClient.convert(result.getSnapshottableDirList()); } return null; } catch (ServiceException e) { throw ProtobufHelper.getRemoteException(e); } }
@Override public GetSnapshottableDirListingResponseProto getSnapshottableDirListing( RpcController controller, GetSnapshottableDirListingRequestProto request) throws ServiceException { try { SnapshottableDirectoryStatus[] result = server .getSnapshottableDirListing(); if (result != null) { return GetSnapshottableDirListingResponseProto.newBuilder(). setSnapshottableDirList(PBHelperClient.convert(result)).build(); } else { return NULL_GET_SNAPSHOTTABLE_DIR_LISTING_RESPONSE; } } catch (IOException e) { throw new ServiceException(e); } }
/** * Get the list of snapshottable directories that are owned * by the current user. Return all the snapshottable directories if the * current user is a super user. * @return The list of all the current snapshottable directories * @throws IOException */ public SnapshottableDirectoryStatus[] getSnapshottableDirListing() throws IOException { SnapshottableDirectoryStatus[] status = null; checkOperation(OperationCategory.READ); final FSPermissionChecker checker = getPermissionChecker(); readLock(); try { checkOperation(OperationCategory.READ); final String user = checker.isSuperUser()? null : checker.getUser(); status = snapshotManager.getSnapshottableDirListing(user); } finally { readUnlock(); } if (auditLog.isInfoEnabled() && isExternalInvocation()) { logAuditEvent(true, "listSnapshottableDirectory", null, null, null); } return status; }
/** * Get the list of snapshottable directories that are owned * by the current user. Return all the snapshottable directories if the * current user is a super user. * @return The list of all the current snapshottable directories * @throws IOException */ public SnapshottableDirectoryStatus[] getSnapshottableDirListing() throws IOException { SnapshottableDirectoryStatus[] status = null; readLock(); try { checkOperation(OperationCategory.READ); FSPermissionChecker checker = getPermissionChecker(); final String user = checker.isSuperUser()? null : checker.getUser(); status = snapshotManager.getSnapshottableDirListing(user); } finally { readUnlock(); } if (auditLog.isInfoEnabled() && isExternalInvocation()) { logAuditEvent(true, "listSnapshottableDirectory", null, null, null); } return status; }
/** * List all the snapshottable directories that are owned by the current user. * @param userName Current user name. * @return Snapshottable directories that are owned by the current user, * represented as an array of {@link SnapshottableDirectoryStatus}. If * {@code userName} is null, return all the snapshottable dirs. */ public SnapshottableDirectoryStatus[] getSnapshottableDirListing( String userName) { if (snapshottables.isEmpty()) { return null; } List<SnapshottableDirectoryStatus> statusList = new ArrayList<SnapshottableDirectoryStatus>(); for (INodeDirectorySnapshottable dir : snapshottables.values()) { if (userName == null || userName.equals(dir.getUserName())) { SnapshottableDirectoryStatus status = new SnapshottableDirectoryStatus( dir.getModificationTime(), dir.getAccessTime(), dir.getFsPermission(), dir.getUserName(), dir.getGroupName(), dir.getLocalNameBytes(), dir.getId(), dir.getChildrenNum(null), dir.getNumSnapshots(), dir.getSnapshotQuota(), dir.getParent() == null ? DFSUtil.EMPTY_BYTES : DFSUtil.string2Bytes(dir.getParent().getFullPathName())); statusList.add(status); } } Collections.sort(statusList, SnapshottableDirectoryStatus.COMPARATOR); return statusList.toArray( new SnapshottableDirectoryStatus[statusList.size()]); }
public static void checkSnapshottableDirs(Volume[] volumes) throws IOException { for (Volume v : volumes) { LOG.debug("Checking to see if Volume {} has snapshots enabled", v.getBasePath()); FileSystem fs = v.getFileSystem(); if (fs instanceof DistributedFileSystem) { DistributedFileSystem dfs = (DistributedFileSystem) fs; SnapshottableDirectoryStatus[] snaps = dfs.getSnapshottableDirListing(); boolean found = false; if (null != snaps) { for (SnapshottableDirectoryStatus snap : snaps) { LOG.trace("Snapshots enabled for directory: {}", snap.getFullPath()); if (v.getBasePath().equals(snap.getFullPath().toString())) { found = true; LOG.debug("Snapshots enabled for Volume {}", v); break; } } } if (!found) { throw new RuntimeException(v.toString() + " is not configured for snapshots."); } } else { throw new RuntimeException("Configured Accumulo volume is not an HDFS DistributedFileSystem."); } } }
/** * Get the list of snapshottable directories that are owned * by the current user. Return all the snapshottable directories if the * current user is a super user. * @return The list of all the current snapshottable directories * @throws IOException */ public SnapshottableDirectoryStatus[] getSnapshottableDirListing() throws IOException { SnapshottableDirectoryStatus[] status = null; final FSPermissionChecker checker = getPermissionChecker(); readLock(); try { checkOperation(OperationCategory.READ); final String user = checker.isSuperUser()? null : checker.getUser(); status = snapshotManager.getSnapshottableDirListing(user); } finally { readUnlock(); } if (auditLog.isInfoEnabled() && isExternalInvocation()) { logAuditEvent(true, "listSnapshottableDirectory", null, null, null); } return status; }