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;