Repository: hadoop Updated Branches: refs/heads/HDFS-7240 ee4f021fb -> 97ff55eab
HDFS-12503. Ozone: some UX improvements to oz_debug. Contributed by Weiwei Yang. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/97ff55ea Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/97ff55ea Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/97ff55ea Branch: refs/heads/HDFS-7240 Commit: 97ff55eab1c20c1266075c6a7505b5cf3098bfff Parents: ee4f021 Author: Weiwei Yang <[email protected]> Authored: Sun Sep 24 09:39:23 2017 +0800 Committer: Weiwei Yang <[email protected]> Committed: Sun Sep 24 09:39:23 2017 +0800 ---------------------------------------------------------------------- .../org/apache/hadoop/ozone/scm/cli/SQLCLI.java | 44 ++++++++++++++++---- 1 file changed, 36 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/97ff55ea/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/scm/cli/SQLCLI.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/scm/cli/SQLCLI.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/scm/cli/SQLCLI.java index 4a8121d..849efdd 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/scm/cli/SQLCLI.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/scm/cli/SQLCLI.java @@ -23,6 +23,7 @@ import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; import org.apache.commons.cli.OptionBuilder; import org.apache.commons.cli.Options; +import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.ParseException; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.hdfs.DFSUtil; @@ -67,11 +68,12 @@ import static org.apache.hadoop.ozone.OzoneConsts.NODEPOOL_DB; import static org.apache.hadoop.ozone.OzoneConsts.OPEN_CONTAINERS_DB; /** - * This is the CLI that can be use to convert a levelDB into a sqlite DB file. + * This is the CLI that can be use to convert an ozone metadata DB into + * a sqlite DB file. * * NOTE: user should use this CLI in an offline fashion. Namely, this should not - * be used to convert a levelDB that is currently being used by Ozone. Instead, - * this should be used to debug and diagnosis closed levelDB instances. + * be used to convert a DB that is currently being used by Ozone. Instead, + * this should be used to debug and diagnosis closed DB instances. * */ public class SQLCLI extends Configured implements Tool { @@ -213,11 +215,18 @@ public class SQLCLI extends Configured implements Tool { @SuppressWarnings("static-access") private Options getOptions() { Options allOptions = new Options(); + Option helpOpt = OptionBuilder + .hasArg(false) + .withLongOpt("help") + .withDescription("display help message") + .create("h"); + allOptions.addOption(helpOpt); + Option dbPathOption = OptionBuilder - .withArgName("levelDB path") + .withArgName("DB path") .withLongOpt("dbPath") .hasArgs(1) - .withDescription("specify levelDB path") + .withDescription("specify DB path") .create("p"); allOptions.addOption(dbPathOption); @@ -225,22 +234,33 @@ public class SQLCLI extends Configured implements Tool { .withArgName("output path") .withLongOpt("outPath") .hasArgs(1) - .withDescription("specify output path") + .withDescription("specify output DB file path") .create("o"); allOptions.addOption(outPathOption); return allOptions; } + public void displayHelp() { + HelpFormatter helpFormatter = new HelpFormatter(); + Options allOpts = getOptions(); + helpFormatter.printHelp("hdfs oz_debug -p <DB path>" + + " -o <Output DB file path>", allOpts); + } + @Override public int run(String[] args) throws Exception { CommandLine commandLine = parseArgs(args); + if (commandLine.hasOption("help")) { + displayHelp(); + return 0; + } if (!commandLine.hasOption("p") || !commandLine.hasOption("o")) { - LOG.error("Require dbPath option(-p) AND outPath option (-o)"); + displayHelp(); return -1; } String value = commandLine.getOptionValue("p"); - LOG.info("levelDB path {}", value); + LOG.info("DB path {}", value); // the value is supposed to be an absolute path to a container file Path dbPath = Paths.get(value); if (!Files.exists(dbPath)) { @@ -260,6 +280,11 @@ public class SQLCLI extends Configured implements Tool { return -1; } + if (outPath.toFile().isDirectory()) { + LOG.error("The db output path should be a file instead of a directory"); + return -1; + } + Path outParentPath = outPath.getParent(); if (outParentPath != null) { if (!Files.exists(outParentPath)) { @@ -689,6 +714,9 @@ public class SQLCLI extends Configured implements Tool { ToolRunner.run(shell, args); } catch (Exception ex) { LOG.error(ex.toString()); + if (LOG.isDebugEnabled()) { + LOG.debug("Command execution failed", ex); + } res = 1; } System.exit(res); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
