HBASE-21185 - WALPrettyPrinter: Additional useful info to be printed by wal printer tool, for debugability purposes
Signed-off-by: Allan Yang <allan163@apache.org>
This commit is contained in:
parent
8a5537b5f5
commit
9e3f3fdc1f
|
@ -80,6 +80,8 @@ public class WALPrettyPrinter {
|
||||||
private PrintStream out;
|
private PrintStream out;
|
||||||
// for JSON encoding
|
// for JSON encoding
|
||||||
private static final ObjectMapper MAPPER = new ObjectMapper();
|
private static final ObjectMapper MAPPER = new ObjectMapper();
|
||||||
|
//allows for jumping straight to a given portion of the file
|
||||||
|
private long position;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Basic constructor that simply initializes values to reasonable defaults.
|
* Basic constructor that simply initializes values to reasonable defaults.
|
||||||
|
@ -197,6 +199,15 @@ public class WALPrettyPrinter {
|
||||||
this.row = row;
|
this.row = row;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sets the position to start seeking the WAL file
|
||||||
|
* @param position
|
||||||
|
* initial position to start seeking the given WAL file
|
||||||
|
*/
|
||||||
|
public void setPosition(long position) {
|
||||||
|
this.position = position;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enables output as a single, persistent list. at present, only relevant in
|
* enables output as a single, persistent list. at present, only relevant in
|
||||||
* the case of JSON output.
|
* the case of JSON output.
|
||||||
|
@ -270,6 +281,10 @@ public class WALPrettyPrinter {
|
||||||
firstTxn = true;
|
firstTxn = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (position > 0) {
|
||||||
|
log.seek(position);
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
WAL.Entry entry;
|
WAL.Entry entry;
|
||||||
while ((entry = log.next()) != null) {
|
while ((entry = log.next()) != null) {
|
||||||
|
@ -293,6 +308,7 @@ public class WALPrettyPrinter {
|
||||||
if (row == null || ((String) op.get("row")).equals(row)) {
|
if (row == null || ((String) op.get("row")).equals(row)) {
|
||||||
actions.add(op);
|
actions.add(op);
|
||||||
}
|
}
|
||||||
|
op.put("total_size_sum", PrivateCellUtil.estimatedSizeOfCell(cell));
|
||||||
}
|
}
|
||||||
if (actions.isEmpty())
|
if (actions.isEmpty())
|
||||||
continue;
|
continue;
|
||||||
|
@ -317,8 +333,11 @@ public class WALPrettyPrinter {
|
||||||
out.println(" tag: " + op.get("tag"));
|
out.println(" tag: " + op.get("tag"));
|
||||||
}
|
}
|
||||||
if (outputValues) out.println(" value: " + op.get("value"));
|
if (outputValues) out.println(" value: " + op.get("value"));
|
||||||
|
out.println("cell total size sum: " + op.get("total_size_sum"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
out.println("edit heap size: " + entry.getEdit().heapSize());
|
||||||
|
out.println("position: " + log.getPosition());
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
log.close();
|
log.close();
|
||||||
|
@ -376,6 +395,7 @@ public class WALPrettyPrinter {
|
||||||
options.addOption("s", "sequence", true,
|
options.addOption("s", "sequence", true,
|
||||||
"Sequence to filter by. Pass sequence number.");
|
"Sequence to filter by. Pass sequence number.");
|
||||||
options.addOption("w", "row", true, "Row to filter by. Pass row name.");
|
options.addOption("w", "row", true, "Row to filter by. Pass row name.");
|
||||||
|
options.addOption("g", "goto", true, "Position to seek to in the file");
|
||||||
|
|
||||||
WALPrettyPrinter printer = new WALPrettyPrinter();
|
WALPrettyPrinter printer = new WALPrettyPrinter();
|
||||||
CommandLineParser parser = new PosixParser();
|
CommandLineParser parser = new PosixParser();
|
||||||
|
@ -399,6 +419,9 @@ public class WALPrettyPrinter {
|
||||||
printer.setSequenceFilter(Long.parseLong(cmd.getOptionValue("s")));
|
printer.setSequenceFilter(Long.parseLong(cmd.getOptionValue("s")));
|
||||||
if (cmd.hasOption("w"))
|
if (cmd.hasOption("w"))
|
||||||
printer.setRowFilter(cmd.getOptionValue("w"));
|
printer.setRowFilter(cmd.getOptionValue("w"));
|
||||||
|
if (cmd.hasOption("g")) {
|
||||||
|
printer.setPosition(Long.parseLong(cmd.getOptionValue("g")));
|
||||||
|
}
|
||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
HelpFormatter formatter = new HelpFormatter();
|
HelpFormatter formatter = new HelpFormatter();
|
||||||
|
|
Loading…
Reference in New Issue