HBASE-16452 Procedure v2 - Make ProcedureWALPrettyPrinter extend Tool

This commit is contained in:
Matteo Bertozzi 2016-08-19 09:53:50 -07:00
parent e05b002ed5
commit a857a60ccb
1 changed files with 20 additions and 20 deletions

View File

@ -29,6 +29,7 @@ import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException; import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser; import org.apache.commons.cli.PosixParser;
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.FileSystem;
@ -40,14 +41,16 @@ import org.apache.hadoop.hbase.classification.InterfaceStability;
import org.apache.hadoop.hbase.procedure2.Procedure; import org.apache.hadoop.hbase.procedure2.Procedure;
import org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureWALEntry; import org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureWALEntry;
import org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureWALHeader; import org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureWALHeader;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
/** /**
* ProcedureWALPrettyPrinter prints the contents of a given ProcedureWAL file * ProcedureWALPrettyPrinter prints the contents of a given ProcedureWAL file
*/ */
@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS) @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)
@InterfaceStability.Evolving @InterfaceStability.Evolving
public class ProcedureWALPrettyPrinter { public class ProcedureWALPrettyPrinter extends Configured implements Tool {
private PrintStream out; private final PrintStream out;
public ProcedureWALPrettyPrinter() { public ProcedureWALPrettyPrinter() {
out = System.out; out = System.out;
@ -85,7 +88,6 @@ public class ProcedureWALPrettyPrinter {
} }
public void processProcedureWALFile(ProcedureWALFile log) throws IOException { public void processProcedureWALFile(ProcedureWALFile log) throws IOException {
log.open(); log.open();
ProcedureWALHeader header = log.getHeader(); ProcedureWALHeader header = log.getHeader();
printHeader(header); printHeader(header);
@ -96,7 +98,7 @@ public class ProcedureWALPrettyPrinter {
while (hasMore) { while (hasMore) {
ProcedureWALEntry entry = ProcedureWALFormat.readEntry(stream); ProcedureWALEntry entry = ProcedureWALFormat.readEntry(stream);
if (entry == null) { if (entry == null) {
out.print("No more entry, exiting with missing EOF"); out.println("No more entry, exiting with missing EOF");
hasMore = false; hasMore = false;
break; break;
} }
@ -109,7 +111,7 @@ public class ProcedureWALPrettyPrinter {
} }
} }
} catch (IOException e) { } catch (IOException e) {
out.print("got an exception while reading the procedure WAL " + e.getMessage()); out.println("got an exception while reading the procedure WAL " + e.getMessage());
} }
finally { finally {
log.close(); log.close();
@ -138,10 +140,6 @@ public class ProcedureWALPrettyPrinter {
out.println(); out.println();
} }
public static void main(String[] args) throws IOException {
run(args);
}
/** /**
* Pass one or more log file names and formatting options and it will dump out * Pass one or more log file names and formatting options and it will dump out
* a text version of the contents on <code>stdout</code>. * a text version of the contents on <code>stdout</code>.
@ -151,18 +149,15 @@ public class ProcedureWALPrettyPrinter {
* @throws IOException * @throws IOException
* Thrown upon file system errors etc. * Thrown upon file system errors etc.
*/ */
public static void run(String[] args) throws IOException { public int run(final String[] args) throws IOException {
// create options // create options
Options options = new Options(); Options options = new Options();
options.addOption("h", "help", false, "Output help message"); options.addOption("h", "help", false, "Output help message");
options.addOption("f", "file", true, "File to print"); options.addOption("f", "file", true, "File to print");
List<Path> files = new ArrayList<Path>(); final List<Path> files = new ArrayList<Path>();
ProcedureWALPrettyPrinter printer = new ProcedureWALPrettyPrinter();
CommandLineParser parser = new PosixParser();
try { try {
CommandLine cmd = parser.parse(options, args); CommandLine cmd = new PosixParser().parse(options, args);
if (cmd.hasOption("f")) { if (cmd.hasOption("f")) {
files.add(new Path(cmd.getOptionValue("f"))); files.add(new Path(cmd.getOptionValue("f")));
@ -171,19 +166,24 @@ public class ProcedureWALPrettyPrinter {
if (files.size() == 0 || cmd.hasOption("h")) { if (files.size() == 0 || cmd.hasOption("h")) {
HelpFormatter formatter = new HelpFormatter(); HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("ProcedureWALPrettyPrinter ", options, true); formatter.printHelp("ProcedureWALPrettyPrinter ", options, true);
System.exit(-1); return(-1);
} }
} catch (ParseException e) { } catch (ParseException e) {
e.printStackTrace(); e.printStackTrace();
HelpFormatter formatter = new HelpFormatter(); HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("ProcedureWALPrettyPrinter ", options, true); formatter.printHelp("ProcedureWALPrettyPrinter ", options, true);
System.exit(-1); return(-1);
} }
// get configuration, file system, and process the given files // get configuration, file system, and process the given files
Configuration conf = HBaseConfiguration.create();
for (Path file : files) { for (Path file : files) {
printer.processFile(conf, file); processFile(getConf(), file);
} }
return(0);
}
public static void main(String[] args) throws Exception {
final Configuration conf = HBaseConfiguration.create();
int exitCode = ToolRunner.run(conf, new ProcedureWALPrettyPrinter(), args);
System.exit(exitCode);
} }
} }