This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2 by this push:
     new f198311  HBASE-21928 Deprecated HConstants.META_QOS
f198311 is described below

commit f198311556827bb593efd5be8269260b91582a61
Author: zhangduo <[email protected]>
AuthorDate: Tue Feb 19 20:57:46 2019 +0800

    HBASE-21928 Deprecated HConstants.META_QOS
    
    Signed-off-by: Zheng Hu <[email protected]>
---
 .../hadoop/hbase/client/ConnectionUtils.java       |  4 +---
 .../hbase/client/TestAsyncAdminRpcPriority.java    |  3 +--
 .../hbase/client/TestAsyncTableRpcPriority.java    | 25 +++++++++++-----------
 .../java/org/apache/hadoop/hbase/HConstants.java   |  6 +++++-
 .../hadoop/hbase/ipc/SimpleRpcScheduler.java       |  4 +++-
 .../MasterAnnotationReadingPriorityFunction.java   | 22 ++++++++++++++-----
 6 files changed, 39 insertions(+), 25 deletions(-)

diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionUtils.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionUtils.java
index 2c53854..1940948 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionUtils.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionUtils.java
@@ -612,9 +612,7 @@ public final class ConnectionUtils {
   }
 
   static int getPriority(TableName tableName) {
-    if (TableName.isMetaTableName(tableName)) {
-      return HConstants.META_QOS;
-    } else if (tableName.isSystemTable()) {
+    if (tableName.isSystemTable()) {
       return HConstants.SYSTEMTABLE_QOS;
     } else {
       return HConstants.NORMAL_QOS;
diff --git 
a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncAdminRpcPriority.java
 
b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncAdminRpcPriority.java
index db00d89..46d786e 100644
--- 
a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncAdminRpcPriority.java
+++ 
b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncAdminRpcPriority.java
@@ -18,7 +18,6 @@
 package org.apache.hadoop.hbase.client;
 
 import static org.apache.hadoop.hbase.HConstants.HIGH_QOS;
-import static org.apache.hadoop.hbase.HConstants.META_QOS;
 import static org.apache.hadoop.hbase.HConstants.NORMAL_QOS;
 import static org.apache.hadoop.hbase.HConstants.SYSTEMTABLE_QOS;
 import static 
org.apache.hadoop.hbase.NamespaceDescriptor.SYSTEM_NAMESPACE_NAME_STR;
@@ -197,7 +196,7 @@ public class TestAsyncAdminRpcPriority {
   public void testCreateMetaTable() {
     
conn.getAdmin().createTable(TableDescriptorBuilder.newBuilder(TableName.META_TABLE_NAME)
       .setColumnFamily(ColumnFamilyDescriptorBuilder.of("cf")).build()).join();
-    verify(masterStub, times(1)).createTable(assertPriority(META_QOS),
+    verify(masterStub, times(1)).createTable(assertPriority(SYSTEMTABLE_QOS),
       any(CreateTableRequest.class), any());
   }
 
diff --git 
a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableRpcPriority.java
 
b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableRpcPriority.java
index c195812..56dcf10 100644
--- 
a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableRpcPriority.java
+++ 
b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableRpcPriority.java
@@ -17,7 +17,6 @@
  */
 package org.apache.hadoop.hbase.client;
 
-import static org.apache.hadoop.hbase.HConstants.META_QOS;
 import static org.apache.hadoop.hbase.HConstants.NORMAL_QOS;
 import static org.apache.hadoop.hbase.HConstants.SYSTEMTABLE_QOS;
 import static 
org.apache.hadoop.hbase.NamespaceDescriptor.SYSTEM_NAMESPACE_NAME_STR;
@@ -242,7 +241,7 @@ public class TestAsyncTableRpcPriority {
   @Test
   public void testGetMetaTable() {
     conn.getTable(TableName.META_TABLE_NAME).get(new 
Get(Bytes.toBytes(0))).join();
-    verify(stub, times(1)).get(assertPriority(META_QOS), 
any(GetRequest.class), any());
+    verify(stub, times(1)).get(assertPriority(SYSTEMTABLE_QOS), 
any(GetRequest.class), any());
   }
 
   @Test
@@ -274,7 +273,7 @@ public class TestAsyncTableRpcPriority {
   public void testPutMetaTable() {
     conn.getTable(TableName.META_TABLE_NAME).put(new Put(Bytes.toBytes(0))
       .addColumn(Bytes.toBytes("cf"), Bytes.toBytes("cq"), 
Bytes.toBytes("v"))).join();
-    verify(stub, times(1)).mutate(assertPriority(META_QOS), 
any(MutateRequest.class), any());
+    verify(stub, times(1)).mutate(assertPriority(SYSTEMTABLE_QOS), 
any(MutateRequest.class), any());
   }
 
   @Test
@@ -301,7 +300,7 @@ public class TestAsyncTableRpcPriority {
   @Test
   public void testDeleteMetaTable() {
     conn.getTable(TableName.META_TABLE_NAME).delete(new 
Delete(Bytes.toBytes(0))).join();
-    verify(stub, times(1)).mutate(assertPriority(META_QOS), 
any(MutateRequest.class), any());
+    verify(stub, times(1)).mutate(assertPriority(SYSTEMTABLE_QOS), 
any(MutateRequest.class), any());
   }
 
   @Test
@@ -333,7 +332,7 @@ public class TestAsyncTableRpcPriority {
   public void testAppendMetaTable() {
     conn.getTable(TableName.META_TABLE_NAME).append(new 
Append(Bytes.toBytes(0))
       .addColumn(Bytes.toBytes("cf"), Bytes.toBytes("cq"), 
Bytes.toBytes("v"))).join();
-    verify(stub, times(1)).mutate(assertPriority(META_QOS), 
any(MutateRequest.class), any());
+    verify(stub, times(1)).mutate(assertPriority(SYSTEMTABLE_QOS), 
any(MutateRequest.class), any());
   }
 
   @Test
@@ -361,7 +360,7 @@ public class TestAsyncTableRpcPriority {
   public void testIncrementMetaTable() {
     conn.getTable(TableName.META_TABLE_NAME)
       .incrementColumnValue(Bytes.toBytes(0), Bytes.toBytes("cf"), 
Bytes.toBytes("cq"), 1).join();
-    verify(stub, times(1)).mutate(assertPriority(META_QOS), 
any(MutateRequest.class), any());
+    verify(stub, times(1)).mutate(assertPriority(SYSTEMTABLE_QOS), 
any(MutateRequest.class), any());
   }
 
   @Test
@@ -401,7 +400,7 @@ public class TestAsyncTableRpcPriority {
       .qualifier(Bytes.toBytes("cq")).ifNotExists().thenPut(new 
Put(Bytes.toBytes(0))
         .addColumn(Bytes.toBytes("cf"), Bytes.toBytes("cq"), 
Bytes.toBytes("v")))
       .join();
-    verify(stub, times(1)).mutate(assertPriority(META_QOS), 
any(MutateRequest.class), any());
+    verify(stub, times(1)).mutate(assertPriority(SYSTEMTABLE_QOS), 
any(MutateRequest.class), any());
   }
 
   @Test
@@ -434,7 +433,7 @@ public class TestAsyncTableRpcPriority {
       .qualifier(Bytes.toBytes("cq")).ifNotExists().thenPut(new 
Put(Bytes.toBytes(0))
         .addColumn(Bytes.toBytes("cf"), Bytes.toBytes("cq"), 
Bytes.toBytes("v")))
       .join();
-    verify(stub, times(1)).mutate(assertPriority(META_QOS), 
any(MutateRequest.class), any());
+    verify(stub, times(1)).mutate(assertPriority(SYSTEMTABLE_QOS), 
any(MutateRequest.class), any());
   }
 
   @Test
@@ -475,8 +474,8 @@ public class TestAsyncTableRpcPriority {
       .qualifier(Bytes.toBytes("cq")).ifEquals(Bytes.toBytes("v"))
       .thenMutate(new RowMutations(Bytes.toBytes(0)).add((Mutation) new 
Delete(Bytes.toBytes(0))))
       .join();
-    verify(stub, times(1)).multi(assertPriority(META_QOS), 
any(ClientProtos.MultiRequest.class),
-      any());
+    verify(stub, times(1)).multi(assertPriority(SYSTEMTABLE_QOS),
+      any(ClientProtos.MultiRequest.class), any());
   }
 
   @Test
@@ -525,7 +524,7 @@ public class TestAsyncTableRpcPriority {
     }
     Thread.sleep(1000);
     // open, next, several renew lease, and then close
-    verify(stub, atLeast(4)).scan(assertPriority(META_QOS), 
any(ScanRequest.class), any());
+    verify(stub, atLeast(4)).scan(assertPriority(SYSTEMTABLE_QOS), 
any(ScanRequest.class), any());
   }
 
   @Test
@@ -548,7 +547,7 @@ public class TestAsyncTableRpcPriority {
   public void testBatchMetaTable() {
     conn.getTable(TableName.META_TABLE_NAME).batchAll(Arrays.asList(new 
Delete(Bytes.toBytes(0))))
       .join();
-    verify(stub, times(1)).multi(assertPriority(META_QOS), 
any(ClientProtos.MultiRequest.class),
-      any());
+    verify(stub, times(1)).multi(assertPriority(SYSTEMTABLE_QOS),
+      any(ClientProtos.MultiRequest.class), any());
   }
 }
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java 
b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java
index e6de71d..0491571 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java
@@ -1155,9 +1155,13 @@ public final class HConstants {
   public static final int ADMIN_QOS = 100;
   public static final int HIGH_QOS = 200;
   public static final int SYSTEMTABLE_QOS = HIGH_QOS;
+  /**
+   * @deprecated the name "META_QOS" is a bit ambiguous, actually only meta 
region transition can
+   *             use this priority, and you should not use this directly. Will 
be removed in 3.0.0.
+   */
+  @Deprecated
   public static final int META_QOS = 300;
 
-
   /** Directory under /hbase where archived hfiles are stored */
   public static final String HFILE_ARCHIVE_DIRECTORY = "archive";
 
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.java
index 2cbc44b..fb52116 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.java
@@ -24,6 +24,7 @@ import org.apache.hadoop.hbase.HConstants;
 import org.apache.yetus.audience.InterfaceAudience;
 import org.apache.yetus.audience.InterfaceStability;
 import org.apache.hadoop.hbase.conf.ConfigurationObserver;
+import org.apache.hadoop.hbase.master.MasterAnnotationReadingPriorityFunction;
 
 /**
  * The default scheduler. Configurable. Maintains isolated handler pools for 
general ('default'),
@@ -184,7 +185,8 @@ public class SimpleRpcScheduler extends RpcScheduler 
implements ConfigurationObs
     if (level == HConstants.PRIORITY_UNSET) {
       level = HConstants.NORMAL_QOS;
     }
-    if (metaTransitionExecutor != null && level == HConstants.META_QOS) {
+    if (metaTransitionExecutor != null &&
+      level == MasterAnnotationReadingPriorityFunction.META_TRANSITION_QOS) {
       return metaTransitionExecutor.dispatch(callTask);
     } else if (priorityExecutor != null && level > highPriorityLevel) {
       return priorityExecutor.dispatch(callTask);
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterAnnotationReadingPriorityFunction.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterAnnotationReadingPriorityFunction.java
index e99b7fb..87f345e 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterAnnotationReadingPriorityFunction.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterAnnotationReadingPriorityFunction.java
@@ -49,6 +49,9 @@ import 
org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProto
  */
 @InterfaceAudience.Private
 public class MasterAnnotationReadingPriorityFunction extends 
AnnotationReadingPriorityFunction {
+
+  public static final int META_TRANSITION_QOS = 300;
+
   public MasterAnnotationReadingPriorityFunction(final RSRpcServices 
rpcServices) {
     this(rpcServices, rpcServices.getClass());
   }
@@ -66,29 +69,38 @@ public class MasterAnnotationReadingPriorityFunction 
extends AnnotationReadingPr
     // every single RPC request.
     int priorityByAnnotation = getAnnotatedPriority(header);
     if (priorityByAnnotation >= 0) {
-      return priorityByAnnotation;
+      // no one can have higher priority than meta transition.
+      if (priorityByAnnotation >= META_TRANSITION_QOS) {
+        return META_TRANSITION_QOS - 1;
+      } else {
+        return priorityByAnnotation;
+      }
     }
 
     // If meta is moving then all the other of reports of state transitions 
will be
     // un able to edit meta. Those blocked reports should not keep the report 
that opens meta from
-    // running. Hence all reports of meta transitioning should always be in a 
different thread.
+    // running. Hence all reports of meta transition should always be in a 
different thread.
     // This keeps from deadlocking the cluster.
     if (param instanceof 
RegionServerStatusProtos.ReportRegionStateTransitionRequest) {
       // Regions are moving. Lets see which ones.
-      RegionServerStatusProtos.ReportRegionStateTransitionRequest
-          tRequest = 
(RegionServerStatusProtos.ReportRegionStateTransitionRequest) param;
+      RegionServerStatusProtos.ReportRegionStateTransitionRequest tRequest =
+        (RegionServerStatusProtos.ReportRegionStateTransitionRequest) param;
       for (RegionServerStatusProtos.RegionStateTransition rst : 
tRequest.getTransitionList()) {
         if (rst.getRegionInfoList() != null) {
           for (HBaseProtos.RegionInfo info : rst.getRegionInfoList()) {
             TableName tn = ProtobufUtil.toTableName(info.getTableName());
             if (TableName.META_TABLE_NAME.equals(tn)) {
-              return HConstants.META_QOS;
+              return META_TRANSITION_QOS;
             }
           }
         }
       }
       return HConstants.HIGH_QOS;
     }
+    // also use HIGH_QOS for region server report
+    if (param instanceof RegionServerStatusProtos.RegionServerReportRequest) {
+      return HConstants.HIGH_QOS;
+    }
 
     // Handle the rest of the different reasons to change priority.
     return getBasePriority(header, param);

Reply via email to