ACCUMULO-4656 print all index levels
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/7543ea2b Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/7543ea2b Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/7543ea2b Branch: refs/heads/master Commit: 7543ea2b31977c20460c7622f605913d3f3ba9dc Parents: 5757c89 Author: Keith Turner <[email protected]> Authored: Tue Jun 20 09:42:56 2017 -0400 Committer: Michael Wall <[email protected]> Committed: Tue Jun 20 12:54:37 2017 -0400 ---------------------------------------------------------------------- .../core/file/rfile/MultiLevelIndex.java | 50 ++++++++++++++++---- .../apache/accumulo/core/file/rfile/RFile.java | 11 +++-- 2 files changed, 48 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/7543ea2b/core/src/main/java/org/apache/accumulo/core/file/rfile/MultiLevelIndex.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/accumulo/core/file/rfile/MultiLevelIndex.java b/core/src/main/java/org/apache/accumulo/core/file/rfile/MultiLevelIndex.java index 7ac253d..e129b7b 100644 --- a/core/src/main/java/org/apache/accumulo/core/file/rfile/MultiLevelIndex.java +++ b/core/src/main/java/org/apache/accumulo/core/file/rfile/MultiLevelIndex.java @@ -83,14 +83,6 @@ public class MultiLevelIndex { } } - public void printInfo(PrintStream out) { - out.println("Key: " + key.toString() + - " NumEntries: " + entries + - " Offset: " + offset + - " CompressedSize: " + compressedSize + - " RawSize: " + rawSize); - } - @Override public void write(DataOutput out) throws IOException { key.write(out); @@ -863,9 +855,49 @@ public class MultiLevelIndex { getIndexInfo(rootBlock, sizes, counts); } + private void printIndex(IndexBlock ib, String prefix, PrintStream out) throws IOException { + List<IndexEntry> index = ib.getIndex(); + + StringBuilder sb = new StringBuilder(); + sb.append(prefix); + + sb.append("Level: "); + sb.append(ib.getLevel()); + + int resetLen = sb.length(); + + String recursePrefix = prefix + " "; + + for (IndexEntry ie : index) { + + sb.setLength(resetLen); + + sb.append(" Key: "); + sb.append(ie.key); + sb.append(" NumEntries: "); + sb.append(ie.entries); + sb.append(" Offset: "); + sb.append(ie.offset); + sb.append(" CompressedSize: "); + sb.append(ie.compressedSize); + sb.append(" RawSize : "); + sb.append(ie.rawSize); + + out.println(sb.toString()); + + if (ib.getLevel() > 0) { + IndexBlock cib = getIndexBlock(ie); + printIndex(cib, recursePrefix, out); + } + } + } + + public void printIndex(String prefix, PrintStream out) throws IOException { + printIndex(rootBlock, prefix, out); + } + public Key getLastKey() { return rootBlock.getIndex().get(rootBlock.getIndex().size() - 1).getKey(); } } - } http://git-wip-us.apache.org/repos/asf/accumulo/blob/7543ea2b/core/src/main/java/org/apache/accumulo/core/file/rfile/RFile.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/accumulo/core/file/rfile/RFile.java b/core/src/main/java/org/apache/accumulo/core/file/rfile/RFile.java index 7ffc5c8..3b11d51 100644 --- a/core/src/main/java/org/apache/accumulo/core/file/rfile/RFile.java +++ b/core/src/main/java/org/apache/accumulo/core/file/rfile/RFile.java @@ -311,13 +311,16 @@ public class RFile { while (countIter.hasNext()) { IndexEntry indexEntry = countIter.next(); numKeys += indexEntry.getNumEntries(); - if (includeIndexDetails) { - indexEntry.printInfo(out); - } } out.printf("\t%-22s : %,d\n", "Num entries", numKeys); out.printf("\t%-22s : %s\n", "Column families", (isDefaultLG && columnFamilies == null ? "<UNKNOWN>" : columnFamilies.keySet())); + + if (includeIndexDetails) { + out.printf("\t%-22s :\n", "Index Entries", lastKey); + String prefix = String.format("\t ", ""); + indexReader.printIndex(prefix, out); + } } } @@ -1386,7 +1389,7 @@ public class RFile { public void printInfo() throws IOException { printInfo(false); } - + public void printInfo(boolean includeIndexDetails) throws IOException { System.out.printf("%-24s : %d\n", "RFile Version", rfileVersion);
