Repository: hbase
Updated Branches:
  refs/heads/branch-2 08b5a4b2c -> 5490c558b


HBASE-18475 ensure only non-null procedures are sent to 
requireTableExclusiveLock

Signed-off-by: Umesh Agashe <uaga...@cloudera.com>
Signed-off-by: Michael Stack <st...@apache.org>


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

Branch: refs/heads/branch-2
Commit: 5490c558bce907c46ce544710846966ed1c9eb0e
Parents: 08b5a4b
Author: Sean Busbey <bus...@apache.org>
Authored: Fri Jul 28 16:04:45 2017 -0500
Committer: Sean Busbey <bus...@apache.org>
Committed: Mon Jul 31 11:06:57 2017 -0500

----------------------------------------------------------------------
 .../hbase/master/procedure/MasterProcedureScheduler.java  | 10 ++++++++++
 1 file changed, 10 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/5490c558/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.java
index 10e6aa0..564b86d 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.java
@@ -212,6 +212,9 @@ public class MasterProcedureScheduler extends 
AbstractProcedureScheduler {
     }
 
     final Procedure pollResult = rq.peek();
+    if (pollResult == null) {
+      return null;
+    }
     final boolean xlockReq = rq.requireExclusiveLock(pollResult);
     if (xlockReq && rq.getLockStatus().isLocked() && 
!rq.getLockStatus().hasLockAccess(pollResult)) {
       // someone is already holding the lock (e.g. shared lock). avoid a yield
@@ -586,6 +589,9 @@ public class MasterProcedureScheduler extends 
AbstractProcedureScheduler {
   // 
============================================================================
   //  Table Locking Helpers
   // 
============================================================================
+  /**
+   * @param proc must not be null
+   */
   private static boolean requireTableExclusiveLock(TableProcedureInterface 
proc) {
     switch (proc.getTableOperationType()) {
       case CREATE:
@@ -1007,6 +1013,10 @@ public class MasterProcedureScheduler extends 
AbstractProcedureScheduler {
   // 
============================================================================
   private static abstract class Queue<TKey extends Comparable<TKey>>
       extends AvlLinkedNode<Queue<TKey>> {
+
+    /**
+     * @param proc must not be null
+     */
     abstract boolean requireExclusiveLock(Procedure proc);
 
     private final TKey key;

Reply via email to