Repository: hbase Updated Branches: refs/heads/branch-2.0 bc12f38b4 -> 7b7888e1c
HBASE-21185 - WALPrettyPrinter: Additional useful info to be printed by wal printer tool, for debugability purposes Signed-off-by: Allan Yang <allan...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/7b7888e1 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/7b7888e1 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/7b7888e1 Branch: refs/heads/branch-2.0 Commit: 7b7888e1cf123e867322b73f7c0e6e89ae900e1c Parents: bc12f38 Author: Wellington Chevreuil <wellingtonchevreuil@ChevreuilWellington-MBP15.local> Authored: Tue Oct 2 15:55:52 2018 +0100 Committer: Michael Stack <st...@apache.org> Committed: Thu Oct 4 03:19:38 2018 -0700 ---------------------------------------------------------------------- .../hadoop/hbase/wal/WALPrettyPrinter.java | 23 ++++++++++++++++++++ 1 file changed, 23 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/7b7888e1/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALPrettyPrinter.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALPrettyPrinter.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALPrettyPrinter.java index 85877fe..45934d4 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALPrettyPrinter.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALPrettyPrinter.java @@ -80,6 +80,8 @@ public class WALPrettyPrinter { private PrintStream out; // for JSON encoding 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. @@ -198,6 +200,15 @@ public class WALPrettyPrinter { } /** + * 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 * the case of JSON output. */ @@ -270,6 +281,10 @@ public class WALPrettyPrinter { firstTxn = true; } + if (position > 0) { + log.seek(position); + } + try { WAL.Entry entry; while ((entry = log.next()) != null) { @@ -293,6 +308,7 @@ public class WALPrettyPrinter { if (row == null || ((String) op.get("row")).equals(row)) { actions.add(op); } + op.put("total_size_sum", PrivateCellUtil.estimatedSizeOfCell(cell)); } if (actions.isEmpty()) continue; @@ -317,8 +333,11 @@ public class WALPrettyPrinter { out.println(" tag: " + op.get("tag")); } 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 { log.close(); @@ -376,6 +395,7 @@ public class WALPrettyPrinter { options.addOption("s", "sequence", true, "Sequence to filter by. Pass sequence number."); 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(); CommandLineParser parser = new PosixParser(); @@ -399,6 +419,9 @@ public class WALPrettyPrinter { printer.setSequenceFilter(Long.parseLong(cmd.getOptionValue("s"))); if (cmd.hasOption("w")) printer.setRowFilter(cmd.getOptionValue("w")); + if (cmd.hasOption("g")) { + printer.setPosition(Long.parseLong(cmd.getOptionValue("g"))); + } } catch (ParseException e) { e.printStackTrace(); HelpFormatter formatter = new HelpFormatter();