Repository: hbase
Updated Branches:
  refs/heads/0.98 1c70befd7 -> 716ca48a7


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

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/716ca48a
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/716ca48a
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/716ca48a

Branch: refs/heads/0.98
Commit: 716ca48a7491ecf561efba532fb7a5ff3f7a5e57
Parents: 1c70bef
Author: chenheng <chenh...@apache.org>
Authored: Thu Apr 28 12:18:32 2016 +0800
Committer: chenheng <chenh...@apache.org>
Committed: Thu Apr 28 12:37:55 2016 +0800

----------------------------------------------------------------------
 .../hadoop/hbase/regionserver/HRegion.java      | 15 +++++++++++++-
 .../hbase/regionserver/RSDumpServlet.java       | 21 +++++++++++++++++++-
 2 files changed, 34 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/716ca48a/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 aa88257..f426cdd 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
@@ -250,7 +250,6 @@ public class HRegion implements HeapSize { // , Writable{
   
//////////////////////////////////////////////////////////////////////////////
   // 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)
@@ -6616,6 +6615,15 @@ public class HRegion implements HeapSize { // , Writable{
         latch.countDown();
       }
     }
+
+    @Override
+    public String toString() {
+     return "RowLockContext{" +
+         "row=" + row +
+         ", count=" + lockCount +
+         ", threadName=" + thread.getName() +
+         '}';
+    }
   }
 
   /**
@@ -6660,4 +6668,9 @@ public class HRegion implements HeapSize { // , Writable{
   public void updatesUnlock() throws InterruptedIOException {
     updatesLock.readLock().unlock();
   }
+
+  public ConcurrentHashMap<HashedBytes, RowLockContext> getLockedRows() {
+    return lockedRows;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/716ca48a/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 f2aab40..fd72245 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
@@ -72,7 +72,11 @@ public class RSDumpServlet extends StateDumpServlet {
     out.println("\n\nTasks:");
     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);
@@ -120,5 +124,20 @@ public class RSDumpServlet extends StateDumpServlet {
         + hrs.cacheFlusher.toString());
     out.println(hrs.cacheFlusher.dumpQueue());
   }
+
+  public static void dumpRowLock(HRegionServer hrs, PrintWriter out) {
+    StringBuilder sb = new StringBuilder();
+    for (HRegion hRegion : hrs.getOnlineRegionsLocalContext()) {
+      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());
+        }
+      }
+    }
+  }
   
 }

Reply via email to