This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch branch-2.2
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.2 by this push:
new bc5eaef HBASE-21928 Deprecated HConstants.META_QOS
bc5eaef is described below
commit bc5eaefb5eace2c15794ac3a2a697c508c9394ee
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);