Repository: hbase Updated Branches: refs/heads/branch-1 303ef340d -> 585f8fa8a
HBASE-14239 Fix Branch-1.2 AM can get stuck when meta moves Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/585f8fa8 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/585f8fa8 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/585f8fa8 Branch: refs/heads/branch-1 Commit: 585f8fa8a518e30e05047f363b29174de977e48c Parents: 303ef34 Author: Elliott Clark <[email protected]> Authored: Tue Aug 18 10:52:07 2015 -0700 Committer: Elliott Clark <[email protected]> Committed: Mon Aug 24 12:53:05 2015 -0700 ---------------------------------------------------------------------- .../hadoop/hbase/ipc/RWQueueRpcExecutor.java | 17 ++++++++++++++--- .../hadoop/hbase/master/MasterRpcServices.java | 6 +----- .../hadoop/hbase/master/TestMasterPriorityRpc.java | 8 ++++---- 3 files changed, 19 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/585f8fa8/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.java index 7ba2442..1be8c65 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.java @@ -34,8 +34,7 @@ import org.apache.hadoop.hbase.classification.InterfaceStability; import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.Action; import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MultiRequest; import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutateRequest; -import org.apache.hadoop.hbase.protobuf.generated - .RegionServerStatusProtos.ReportRegionStateTransitionRequest; +import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos; import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.RegionAction; import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.ScanRequest; import org.apache.hadoop.hbase.protobuf.generated.RPCProtos.RequestHeader; @@ -189,7 +188,19 @@ public class RWQueueRpcExecutor extends RpcExecutor { if (param instanceof MutateRequest) { return true; } - if (param instanceof ReportRegionStateTransitionRequest) { + // Below here are methods for master. It's a pretty brittle version of this. + // Not sure that master actually needs a read/write queue since 90% of requests to + // master are writing to status or changing the meta table. + // All other read requests are admin generated and can be processed whenever. + // However changing that would require a pretty drastic change and should be done for + // the next major release and not as a fix for HBASE-14239 + if (param instanceof RegionServerStatusProtos.ReportRegionStateTransitionRequest) { + return true; + } + if (param instanceof RegionServerStatusProtos.RegionServerStartupRequest) { + return true; + } + if (param instanceof RegionServerStatusProtos.RegionServerReportRequest) { return true; } return false; http://git-wip-us.apache.org/repos/asf/hbase/blob/585f8fa8/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java ---------------------------------------------------------------------- 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 2bb0105..d7bbc91 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 @@ -278,7 +278,7 @@ public class MasterRpcServices extends RSRpcServices } @Override - @QosPriority(priority=HConstants.ADMIN_QOS) + @QosPriority(priority = HConstants.ADMIN_QOS) public GetLastFlushedSequenceIdResponse getLastFlushedSequenceId(RpcController controller, GetLastFlushedSequenceIdRequest request) throws ServiceException { try { @@ -292,7 +292,6 @@ public class MasterRpcServices extends RSRpcServices } @Override - @QosPriority(priority=HConstants.ADMIN_QOS) public RegionServerReportResponse regionServerReport( RpcController controller, RegionServerReportRequest request) throws ServiceException { try { @@ -313,7 +312,6 @@ public class MasterRpcServices extends RSRpcServices } @Override - @QosPriority(priority=HConstants.ADMIN_QOS) public RegionServerStartupResponse regionServerStartup( RpcController controller, RegionServerStartupRequest request) throws ServiceException { // Register with server manager @@ -339,7 +337,6 @@ public class MasterRpcServices extends RSRpcServices } @Override - @QosPriority(priority=HConstants.ADMIN_QOS) public ReportRSFatalErrorResponse reportRSFatalError( RpcController controller, ReportRSFatalErrorRequest request) throws ServiceException { String errorText = request.getErrorMessage(); @@ -1319,7 +1316,6 @@ public class MasterRpcServices extends RSRpcServices } @Override - @QosPriority(priority=HConstants.ADMIN_QOS) public ReportRegionStateTransitionResponse reportRegionStateTransition(RpcController c, ReportRegionStateTransitionRequest req) throws ServiceException { try { http://git-wip-us.apache.org/repos/asf/hbase/blob/585f8fa8/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterPriorityRpc.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterPriorityRpc.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterPriorityRpc.java index ae55daf..44fa16a 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterPriorityRpc.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterPriorityRpc.java @@ -45,12 +45,12 @@ public class TestMasterPriorityRpc { private PriorityFunction priority = null; private User user = null; - private final Set<String> ADMIN_METHODS = Sets.newHashSet("GetLastFlushedSequenceId", - "RegionServerReport", "RegionServerStartup", "ReportRSFatalError", - "ReportRegionStateTransition"); + private final Set<String> ADMIN_METHODS = Sets.newHashSet("GetLastFlushedSequenceId"); private final Set<String> NORMAL_METHODS = Sets.newHashSet("CreateTable", "DeleteTable", - "ModifyColumn", "OfflineRegion", "Shutdown"); + "ModifyColumn", "OfflineRegion", "Shutdown", + "RegionServerReport", "RegionServerStartup", "ReportRSFatalError", + "ReportRegionStateTransition"); @Before public void setup() {
