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 70ed148ef4e2..464dfaca7035 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 @@ -92,8 +92,8 @@ protected int getBasePriority(RequestHeader header, Message param) { } return HConstants.HIGH_QOS; } - // also use HIGH_QOS for region server report - if (param instanceof RegionServerStatusProtos.RegionServerReportRequest) { + // also use HIGH_QOS for all rest methods in RegionServerStatusProtos + if (RegionServerStatusProtos.class.equals(param.getClass().getEnclosingClass())) { return HConstants.HIGH_QOS; } // Trust the client-set priorities if set diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java index faedc6dd628f..e3b30bc733a8 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java @@ -608,7 +608,8 @@ void stop() { } @Override - @QosPriority(priority = HConstants.ADMIN_QOS) + // priority for all RegionServerStatusProtos rpc's are set HIGH_QOS in + // MasterAnnotationReadingPriorityFunction itself public GetLastFlushedSequenceIdResponse getLastFlushedSequenceId(RpcController controller, GetLastFlushedSequenceIdRequest request) throws ServiceException { try { @@ -623,7 +624,6 @@ public GetLastFlushedSequenceIdResponse getLastFlushedSequenceId(RpcController c } @Override - @QosPriority(priority = HConstants.ADMIN_QOS) public RegionServerReportResponse regionServerReport(RpcController controller, RegionServerReportRequest request) throws ServiceException { try { @@ -659,7 +659,6 @@ public RegionServerReportResponse regionServerReport(RpcController controller, } @Override - @QosPriority(priority = HConstants.ADMIN_QOS) public RegionServerStartupResponse regionServerStartup(RpcController controller, RegionServerStartupRequest request) throws ServiceException { // Register with server manager @@ -691,7 +690,6 @@ public RegionServerStartupResponse regionServerStartup(RpcController controller, } @Override - @QosPriority(priority = HConstants.ADMIN_QOS) public ReportRSFatalErrorResponse reportRSFatalError(RpcController controller, ReportRSFatalErrorRequest request) throws ServiceException { String errorText = request.getErrorMessage(); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterQosFunction.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterQosFunction.java index 6259c256d151..79fa8e713652 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterQosFunction.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterQosFunction.java @@ -37,6 +37,8 @@ import org.junit.experimental.categories.Category; import org.mockito.Mockito; +import org.apache.hbase.thirdparty.com.google.protobuf.ByteString; + import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos; import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos; @@ -96,6 +98,34 @@ public void testRegionInTransition() throws IOException { @Test public void testAnnotations() { - checkMethod(conf, "GetLastFlushedSequenceId", HConstants.ADMIN_QOS, qosFunction); + checkMethod(conf, "GetRegionInfo", HConstants.ADMIN_QOS, qosFunction); + } + + @Test + public void testRegionServerStatusProtos() { + RegionServerStatusProtos.RemoteProcedureResult splitWalProcedureResult = + RegionServerStatusProtos.RemoteProcedureResult.newBuilder() + .setStatus(RegionServerStatusProtos.RemoteProcedureResult.Status.SUCCESS).setProcId(100) + .build(); + + RegionServerStatusProtos.ReportProcedureDoneRequest splitWalProcedureDoneReport = + RegionServerStatusProtos.ReportProcedureDoneRequest.newBuilder() + .addResult(splitWalProcedureResult).build(); + + RegionServerStatusProtos.GetLastFlushedSequenceIdRequest lastFlushedSequenceIdRequest = + RegionServerStatusProtos.GetLastFlushedSequenceIdRequest.newBuilder() + .setRegionName(ByteString.copyFrom(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName())) + .build(); + + RegionServerStatusProtos.RegionServerReportRequest regionServerReportRequest = + RegionServerStatusProtos.RegionServerReportRequest.newBuilder() + .setServer(ProtobufUtil.toServerName(ServerName.valueOf("locahost:60020", 100))).build(); + + checkMethod(conf, "ReportProcedureDone", HConstants.HIGH_QOS, qosFunction, + splitWalProcedureDoneReport); + checkMethod(conf, "GetLastFlushedSequenceId", HConstants.HIGH_QOS, qosFunction, + lastFlushedSequenceIdRequest); + checkMethod(conf, "RegionServerReport", HConstants.HIGH_QOS, qosFunction, + regionServerReportRequest); } }