This is an automated email from the ASF dual-hosted git repository. siyao pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push: new 8d5cc98 HDFS-15997. Implement dfsadmin -provisionSnapshotTrash -all (#2958) 8d5cc98 is described below commit 8d5cc98b4271dc1dca2e69cb02e4ed87c16361ad Author: Siyao Meng <50227127+smen...@users.noreply.github.com> AuthorDate: Mon May 10 12:41:07 2021 -0700 HDFS-15997. Implement dfsadmin -provisionSnapshotTrash -all (#2958) --- .../org/apache/hadoop/hdfs/tools/DFSAdmin.java | 51 ++++++++++++++++------ 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java index c874d92..4f57040 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java @@ -38,6 +38,7 @@ import java.util.Optional; import java.util.TreeSet; import java.util.concurrent.TimeUnit; +import org.apache.hadoop.hdfs.protocol.SnapshottableDirectoryStatus; import org.apache.hadoop.thirdparty.com.google.common.base.Joiner; import org.apache.hadoop.hdfs.client.HdfsAdmin; @@ -461,7 +462,7 @@ public class DFSAdmin extends FsShell { "\t[-fetchImage <local directory>]\n" + "\t[-allowSnapshot <snapshotDir>]\n" + "\t[-disallowSnapshot <snapshotDir>]\n" + - "\t[-provisionSnapshotTrash <snapshotDir>]\n" + + "\t[-provisionSnapshotTrash <snapshotDir> [-all]]\n" + "\t[-shutdownDatanode <datanode_host:ipc_port> [upgrade]]\n" + "\t[-evictWriters <datanode_host:ipc_port>]\n" + "\t[-getDatanodeInfo <datanode_host:ipc_port>]\n" + @@ -793,14 +794,7 @@ public class DFSAdmin extends FsShell { System.out.println("Disallowing snapshot on " + argv[1] + " succeeded"); } - /** - * Provision trash root in a snapshottable directory. - * Usage: hdfs dfsadmin -provisionSnapshotTrash snapshotDir - * @param argv List of of command line parameters. - * @exception IOException - */ - public void provisionSnapshotTrash(String[] argv) throws IOException { - Path p = new Path(argv[1]); + private void provisionSnapshotTrashInternal(Path p) throws IOException { final HdfsAdmin admin = new HdfsAdmin(p.toUri(), getConf()); Path trashRoot; try { @@ -809,7 +803,35 @@ public class DFSAdmin extends FsShell { throw new RemoteException(e.getClass().getName(), e.getMessage()); } System.out.println("Successfully provisioned snapshot trash at " + - trashRoot); + trashRoot); + } + + private void provisionSnapshotTrashAll() throws IOException { + // Get all snapshottable directories + final DistributedFileSystem dfs = getDFS(); + SnapshottableDirectoryStatus[] lst = dfs.getSnapshottableDirListing(); + if (lst != null) { + for (SnapshottableDirectoryStatus dirStatus : lst) { + final Path p = dirStatus.getFullPath(); + provisionSnapshotTrashInternal(p); + } + } + } + + /** + * Provision trash root in a snapshottable directory. + * Usage: hdfs dfsadmin -provisionSnapshotTrash snapshotDir + * hdfs dfsadmin -provisionSnapshotTrash -all + * @param argv List of of command line parameters. + * @exception IOException + */ + public void provisionSnapshotTrash(String[] argv) throws IOException { + if (argv[1].equals("-all")) { + provisionSnapshotTrashAll(); + return; + } + Path p = new Path(argv[1]); + provisionSnapshotTrashInternal(p); } /** @@ -1266,9 +1288,10 @@ public class DFSAdmin extends FsShell { String disallowSnapshot = "-disallowSnapshot <snapshotDir>:\n" + "\tDo not allow snapshots to be taken on a directory any more.\n"; - String provisionSnapshotTrash = "-provisionSnapshotTrash <snapshotDir>:\n" + - "\tProvision trash root in a snapshottable directory with permission" - + "\t" + HdfsAdmin.TRASH_PERMISSION + ".\n"; + String provisionSnapshotTrash = + "-provisionSnapshotTrash <snapshotDir> [-all]:\n" + + "\tProvision trash root in one or all snapshottable directories." + + "\tTrash permission is " + HdfsAdmin.TRASH_PERMISSION + ".\n"; String shutdownDatanode = "-shutdownDatanode <datanode_host:ipc_port> [upgrade]\n" + "\tSubmit a shutdown request for the given datanode. If an optional\n" @@ -2115,7 +2138,7 @@ public class DFSAdmin extends FsShell { + " [-disallowSnapshot <snapshotDir>]"); } else if ("-provisionSnapshotTrash".equalsIgnoreCase(cmd)) { System.err.println("Usage: hdfs dfsadmin" - + " [-provisionSnapshotTrash <snapshotDir>]"); + + " [-provisionSnapshotTrash <snapshotDir> [-all]]"); } else if ("-saveNamespace".equals(cmd)) { System.err.println("Usage: hdfs dfsadmin" + " [-saveNamespace [-beforeShutdown]]"); --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org