You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2017/08/01 19:41:09 UTC

[1/6] hbase git commit: HBASE-18487 Minor fixes in row lock implementation

Repository: hbase
Updated Branches:
  refs/heads/branch-1 abb9d88dc -> 80b85a857
  refs/heads/branch-1.2 43e26e535 -> 6cadd1def
  refs/heads/branch-1.3 c799649a0 -> 843681102
  refs/heads/branch-1.4 16503568e -> 2d9dbf27b
  refs/heads/branch-2 7bdabed27 -> f67dae90f
  refs/heads/master a5db120e6 -> 422a57223


HBASE-18487 Minor fixes in row lock implementation

Signed-off-by: Andrew Purtell <ap...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/422a5722
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/422a5722
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/422a5722

Branch: refs/heads/master
Commit: 422a57223a9a3cccfdc6db7c9f43ca083e6f3037
Parents: a5db120
Author: James Taylor <ja...@apache.org>
Authored: Mon Jul 31 12:00:04 2017 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Tue Aug 1 11:28:02 2017 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/regionserver/HRegion.java     | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/422a5722/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 2163ac0..31357ad 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
@@ -5404,6 +5404,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       traceScope.getSpan().addTimelineAnnotation("Getting a " + (readLock?"readLock":"writeLock"));
     }
 
+    boolean success = false;
     try {
       // Keep trying until we have a lock or error out.
       // TODO: do we need to add a time component here?
@@ -5434,8 +5435,6 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
           traceScope.getSpan().addTimelineAnnotation("Failed to get row lock");
         }
         result = null;
-        // Clean up the counts just in case this was the thing keeping the context alive.
-        rowLockContext.cleanUp();
         String message = "Timed out waiting for lock for row: " + rowKey + " in region "
             + getRegionInfo().getEncodedName();
         if (reachDeadlineFirst) {
@@ -5446,6 +5445,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
         }
       }
       rowLockContext.setThreadName(Thread.currentThread().getName());
+      success = true;
       return result;
     } catch (InterruptedException ie) {
       LOG.warn("Thread interrupted waiting for lock on row: " + rowKey);
@@ -5457,6 +5457,10 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       Thread.currentThread().interrupt();
       throw iie;
     } finally {
+      // Clean up the counts just in case this was the thing keeping the context alive.
+      if (!success && rowLockContext != null) {
+        rowLockContext.cleanUp();
+      }
       if (traceScope != null) {
         traceScope.close();
       }
@@ -5519,7 +5523,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       long c = count.decrementAndGet();
       if (c <= 0) {
         synchronized (lock) {
-          if (count.get() <= 0){
+          if (count.get() <= 0 && usable.get()){ // Don't attempt to remove row if already removed
             usable.set(false);
             RowLockContext removed = lockedRows.remove(row);
             assert removed == this: "we should never remove a different context";


[2/6] hbase git commit: HBASE-18487 Minor fixes in row lock implementation

Posted by ap...@apache.org.
HBASE-18487 Minor fixes in row lock implementation

Signed-off-by: Andrew Purtell <ap...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/80b85a85
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/80b85a85
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/80b85a85

Branch: refs/heads/branch-1
Commit: 80b85a857c87c66d45275e5716d02186918e9b5d
Parents: abb9d88
Author: James Taylor <ja...@apache.org>
Authored: Mon Jul 31 11:42:48 2017 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Tue Aug 1 11:28:28 2017 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/regionserver/HRegion.java     | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/80b85a85/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 427c43b..d6ad5a4 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
@@ -5459,6 +5459,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       traceScope.getSpan().addTimelineAnnotation("Getting a " + (readLock?"readLock":"writeLock"));
     }
 
+    boolean success = false;
     try {
       // Keep trying until we have a lock or error out.
       // TODO: do we need to add a time component here?
@@ -5500,8 +5501,6 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
           traceScope.getSpan().addTimelineAnnotation("Failed to get row lock");
         }
         result = null;
-        // Clean up the counts just in case this was the thing keeping the context alive.
-        rowLockContext.cleanUp();
         String message = "Timed out waiting for lock for row: " + rowKey + " in region "
             + getRegionInfo().getEncodedName();
         if (reachDeadlineFirst) {
@@ -5512,6 +5511,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
         }
       }
       rowLockContext.setThreadName(Thread.currentThread().getName());
+      success = true;
       return result;
     } catch (InterruptedException ie) {
       LOG.warn("Thread interrupted waiting for lock on row: " + rowKey);
@@ -5523,6 +5523,10 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       Thread.currentThread().interrupt();
       throw iie;
     } finally {
+      // Clean up the counts just in case this was the thing keeping the context alive.
+      if (!success && rowLockContext != null) {
+        rowLockContext.cleanUp();
+      }
       if (traceScope != null) {
         traceScope.close();
       }
@@ -5580,7 +5584,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       long c = count.decrementAndGet();
       if (c <= 0) {
         synchronized (lock) {
-          if (count.get() <= 0 ){
+          if (count.get() <= 0 && usable.get()){ // Don't attempt to remove row if already removed
             usable.set(false);
             RowLockContext removed = lockedRows.remove(row);
             assert removed == this: "we should never remove a different context";


[3/6] hbase git commit: HBASE-18487 Minor fixes in row lock implementation

Posted by ap...@apache.org.
HBASE-18487 Minor fixes in row lock implementation

Signed-off-by: Andrew Purtell <ap...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/2d9dbf27
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/2d9dbf27
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/2d9dbf27

Branch: refs/heads/branch-1.4
Commit: 2d9dbf27b302208aaa7589f311b472709c1b019d
Parents: 1650356
Author: James Taylor <ja...@apache.org>
Authored: Mon Jul 31 11:42:48 2017 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Tue Aug 1 11:28:31 2017 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/regionserver/HRegion.java     | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/2d9dbf27/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 427c43b..d6ad5a4 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
@@ -5459,6 +5459,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       traceScope.getSpan().addTimelineAnnotation("Getting a " + (readLock?"readLock":"writeLock"));
     }
 
+    boolean success = false;
     try {
       // Keep trying until we have a lock or error out.
       // TODO: do we need to add a time component here?
@@ -5500,8 +5501,6 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
           traceScope.getSpan().addTimelineAnnotation("Failed to get row lock");
         }
         result = null;
-        // Clean up the counts just in case this was the thing keeping the context alive.
-        rowLockContext.cleanUp();
         String message = "Timed out waiting for lock for row: " + rowKey + " in region "
             + getRegionInfo().getEncodedName();
         if (reachDeadlineFirst) {
@@ -5512,6 +5511,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
         }
       }
       rowLockContext.setThreadName(Thread.currentThread().getName());
+      success = true;
       return result;
     } catch (InterruptedException ie) {
       LOG.warn("Thread interrupted waiting for lock on row: " + rowKey);
@@ -5523,6 +5523,10 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       Thread.currentThread().interrupt();
       throw iie;
     } finally {
+      // Clean up the counts just in case this was the thing keeping the context alive.
+      if (!success && rowLockContext != null) {
+        rowLockContext.cleanUp();
+      }
       if (traceScope != null) {
         traceScope.close();
       }
@@ -5580,7 +5584,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       long c = count.decrementAndGet();
       if (c <= 0) {
         synchronized (lock) {
-          if (count.get() <= 0 ){
+          if (count.get() <= 0 && usable.get()){ // Don't attempt to remove row if already removed
             usable.set(false);
             RowLockContext removed = lockedRows.remove(row);
             assert removed == this: "we should never remove a different context";


[4/6] hbase git commit: HBASE-18487 Minor fixes in row lock implementation

Posted by ap...@apache.org.
HBASE-18487 Minor fixes in row lock implementation

Signed-off-by: Andrew Purtell <ap...@apache.org>

Conflicts:
	hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/84368110
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/84368110
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/84368110

Branch: refs/heads/branch-1.3
Commit: 84368110268ba0d2e75ce5acff2704eef615e3c6
Parents: c799649
Author: James Taylor <ja...@apache.org>
Authored: Mon Jul 31 11:42:48 2017 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Tue Aug 1 11:30:27 2017 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/regionserver/HRegion.java     | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/84368110/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 42a2389..90f3079 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
@@ -5321,6 +5321,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       traceScope.getSpan().addTimelineAnnotation("Getting a " + (readLock?"readLock":"writeLock"));
     }
 
+    boolean success = false;
     try {
       // Keep trying until we have a lock or error out.
       // TODO: do we need to add a time component here?
@@ -5350,11 +5351,10 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
           traceScope.getSpan().addTimelineAnnotation("Failed to get row lock");
         }
         result = null;
-        // Clean up the counts just in case this was the thing keeping the context alive.
-        rowLockContext.cleanUp();
         throw new IOException("Timed out waiting for lock for row: " + rowKey);
       }
       rowLockContext.setThreadName(Thread.currentThread().getName());
+      success = true;
       return result;
     } catch (InterruptedException ie) {
       LOG.warn("Thread interrupted waiting for lock on row: " + rowKey);
@@ -5366,6 +5366,10 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       Thread.currentThread().interrupt();
       throw iie;
     } finally {
+      // Clean up the counts just in case this was the thing keeping the context alive.
+      if (!success && rowLockContext != null) {
+        rowLockContext.cleanUp();
+      }
       if (traceScope != null) {
         traceScope.close();
       }
@@ -5423,7 +5427,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       long c = count.decrementAndGet();
       if (c <= 0) {
         synchronized (lock) {
-          if (count.get() <= 0 ){
+          if (count.get() <= 0 && usable.get()){ // Don't attempt to remove row if already removed
             usable.set(false);
             RowLockContext removed = lockedRows.remove(row);
             assert removed == this: "we should never remove a different context";


[5/6] hbase git commit: HBASE-18487 Minor fixes in row lock implementation

Posted by ap...@apache.org.
HBASE-18487 Minor fixes in row lock implementation

Signed-off-by: Andrew Purtell <ap...@apache.org>

Conflicts:
	hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/6cadd1de
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/6cadd1de
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/6cadd1de

Branch: refs/heads/branch-1.2
Commit: 6cadd1def796656efbcb3ca10befe5d323b53f1a
Parents: 43e26e5
Author: James Taylor <ja...@apache.org>
Authored: Mon Jul 31 11:42:48 2017 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Tue Aug 1 11:33:46 2017 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/regionserver/HRegion.java     | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/6cadd1de/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 719336e..5bb6206 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
@@ -5162,6 +5162,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       traceScope.getSpan().addTimelineAnnotation("Getting a " + (readLock?"readLock":"writeLock"));
     }
 
+    boolean success = false;
     try {
       // Keep trying until we have a lock or error out.
       // TODO: do we need to add a time component here?
@@ -5191,11 +5192,10 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
           traceScope.getSpan().addTimelineAnnotation("Failed to get row lock");
         }
         result = null;
-        // Clean up the counts just in case this was the thing keeping the context alive.
-        rowLockContext.cleanUp();
         throw new IOException("Timed out waiting for lock for row: " + rowKey);
       }
       rowLockContext.setThreadName(Thread.currentThread().getName());
+      success = true;
       return result;
     } catch (InterruptedException ie) {
       LOG.warn("Thread interrupted waiting for lock on row: " + rowKey);
@@ -5207,6 +5207,10 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       Thread.currentThread().interrupt();
       throw iie;
     } finally {
+      // Clean up the counts just in case this was the thing keeping the context alive.
+      if (!success && rowLockContext != null) {
+        rowLockContext.cleanUp();
+      }
       if (traceScope != null) {
         traceScope.close();
       }
@@ -5264,7 +5268,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       long c = count.decrementAndGet();
       if (c <= 0) {
         synchronized (lock) {
-          if (count.get() <= 0 ){
+          if (count.get() <= 0 && usable.get()){ // Don't attempt to remove row if already removed
             usable.set(false);
             RowLockContext removed = lockedRows.remove(row);
             assert removed == this: "we should never remove a different context";


[6/6] hbase git commit: HBASE-18487 Minor fixes in row lock implementation

Posted by ap...@apache.org.
HBASE-18487 Minor fixes in row lock implementation

Signed-off-by: Andrew Purtell <ap...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/f67dae90
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/f67dae90
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/f67dae90

Branch: refs/heads/branch-2
Commit: f67dae90f952e84681a07a612b8005a2d688cae5
Parents: 7bdabed
Author: James Taylor <ja...@apache.org>
Authored: Mon Jul 31 12:00:04 2017 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Tue Aug 1 12:16:43 2017 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/regionserver/HRegion.java     | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/f67dae90/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 2163ac0..31357ad 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
@@ -5404,6 +5404,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       traceScope.getSpan().addTimelineAnnotation("Getting a " + (readLock?"readLock":"writeLock"));
     }
 
+    boolean success = false;
     try {
       // Keep trying until we have a lock or error out.
       // TODO: do we need to add a time component here?
@@ -5434,8 +5435,6 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
           traceScope.getSpan().addTimelineAnnotation("Failed to get row lock");
         }
         result = null;
-        // Clean up the counts just in case this was the thing keeping the context alive.
-        rowLockContext.cleanUp();
         String message = "Timed out waiting for lock for row: " + rowKey + " in region "
             + getRegionInfo().getEncodedName();
         if (reachDeadlineFirst) {
@@ -5446,6 +5445,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
         }
       }
       rowLockContext.setThreadName(Thread.currentThread().getName());
+      success = true;
       return result;
     } catch (InterruptedException ie) {
       LOG.warn("Thread interrupted waiting for lock on row: " + rowKey);
@@ -5457,6 +5457,10 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       Thread.currentThread().interrupt();
       throw iie;
     } finally {
+      // Clean up the counts just in case this was the thing keeping the context alive.
+      if (!success && rowLockContext != null) {
+        rowLockContext.cleanUp();
+      }
       if (traceScope != null) {
         traceScope.close();
       }
@@ -5519,7 +5523,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
       long c = count.decrementAndGet();
       if (c <= 0) {
         synchronized (lock) {
-          if (count.get() <= 0){
+          if (count.get() <= 0 && usable.get()){ // Don't attempt to remove row if already removed
             usable.set(false);
             RowLockContext removed = lockedRows.remove(row);
             assert removed == this: "we should never remove a different context";