Repository: hbase Updated Branches: refs/heads/branch-1.1 46dda26df -> 1c92d02b0
HBASE-15720 Print row locks at the debug dump page Conflicts: hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSDumpServlet.java Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/1c92d02b Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/1c92d02b Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/1c92d02b Branch: refs/heads/branch-1.1 Commit: 1c92d02b001e1bf3c9bf1d9dfe7d094c2c932e75 Parents: 46dda26 Author: chenheng <chenh...@apache.org> Authored: Thu Apr 28 12:18:32 2016 +0800 Committer: chenheng <chenh...@apache.org> Committed: Thu Apr 28 12:24:18 2016 +0800 ---------------------------------------------------------------------- .../hadoop/hbase/regionserver/HRegion.java | 17 +++++++++++++++- .../hbase/regionserver/RSDumpServlet.java | 21 +++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/1c92d02b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index 8dde6cf..d41549c 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -265,7 +265,6 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi ////////////////////////////////////////////////////////////////////////////// // Members ////////////////////////////////////////////////////////////////////////////// - // map from a locked row to the context for that lock including: // - CountDownLatch for threads waiting on that row // - the thread that owns the lock (allow reentrancy) @@ -4974,6 +4973,10 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi return this.stores.get(column); } + public ConcurrentHashMap<HashedBytes, RowLockContext> getLockedRows() { + return lockedRows; + } + /** * Return HStore instance. Does not do any copy: as the number of store is limited, we * iterate on the list. @@ -7985,6 +7988,16 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi latch.countDown(); } } + + @Override + public String toString() { + return "RowLockContext{" + + "row=" + row + + ", count=" + lockCount + + ", threadName=" + thread.getName() + + '}'; + } + } public static class RowLockImpl implements RowLock { @@ -8066,4 +8079,6 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi public RegionSplitPolicy getSplitPolicy() { return this.splitPolicy; } + + } http://git-wip-us.apache.org/repos/asf/hbase/blob/1c92d02b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSDumpServlet.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSDumpServlet.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSDumpServlet.java index 77b68ec..56d0417 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSDumpServlet.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSDumpServlet.java @@ -23,7 +23,6 @@ import java.io.OutputStream; import java.io.PrintStream; import java.io.PrintWriter; import java.util.Date; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -69,6 +68,10 @@ public class RSDumpServlet extends StateDumpServlet { out.println(LINE); TaskMonitor.get().dumpAsText(out); + out.println("\n\nRowLocks:"); + out.println(LINE); + dumpRowLock(hrs, out); + out.println("\n\nExecutors:"); out.println(LINE); dumpExecutors(hrs.getExecutorService(), out); @@ -100,6 +103,22 @@ public class RSDumpServlet extends StateDumpServlet { out.flush(); } + public static void dumpRowLock(HRegionServer hrs, PrintWriter out) { + StringBuilder sb = new StringBuilder(); + for (Region region : hrs.getOnlineRegionsLocalContext()) { + HRegion hRegion = (HRegion)region; + if (hRegion.getLockedRows().size() > 0) { + for (HRegion.RowLockContext rowLockContext : hRegion.getLockedRows().values()) { + sb.setLength(0); + sb.append(hRegion.getTableDesc().getTableName()).append(",") + .append(hRegion.getRegionInfo().getEncodedName()).append(","); + sb.append(rowLockContext.toString()); + out.println(sb.toString()); + } + } + } + } + public static void dumpQueue(HRegionServer hrs, PrintWriter out) throws IOException { if (hrs.compactSplitThread != null) {