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) {

Reply via email to