symat opened a new pull request #2989:
URL: https://github.com/apache/hbase/pull/2989


   This PR is about to backport HBASE-24885 to branch-2.2.
   The backport jira ticket: HBASE-25606
   I put the original commit message below. 
   The cherry-pick was based on the commit on branch-2.3. It was quite clean, 
only a few trivial conflicts to resolve.
   (cherry picked from commit c7e31f720d5c607f8a903a45e46b995a8db37490)
   
   --------------
   
   Adds region state check on hbck2 assigns/unassigns. Returns pid of -1
   if in inappropriate state with logging explaination which suggests
   passing override if operator wants to assign/unassign anyways. Here
   is an example of what happens now if hbck2 tries an unassign and
   Region already unassigned:
   
     2020-08-19 11:22:06,926 INFO  
[RpcServer.default.FPBQ.Fifo.handler=1,queue=0,port=50086] 
assignment.AssignmentManager(820): Failed {ENCODED => 
d1112e553991e938b6852f87774c91ee, NAME => 
'TestHbck,zzzzz,1597861310769.d1112e553991e938b6852f87774c91ee.', STARTKEY => 
'zzzzz', ENDKEY => ''} unassign, override=false; set override to by-pass state 
checks.
     org.apache.hadoop.hbase.client.DoNotRetryRegionException: Unexpected state 
for state=CLOSED, location=null, table=TestHbck, 
region=d1112e553991e938b6852f87774c91ee
             at 
org.apache.hadoop.hbase.master.assignment.AssignmentManager.preTransitCheck(AssignmentManager.java:583)
             at 
org.apache.hadoop.hbase.master.assignment.AssignmentManager.createOneUnassignProcedure(AssignmentManager.java:812)
             at 
org.apache.hadoop.hbase.master.MasterRpcServices.unassigns(MasterRpcServices.java:2616)
             at 
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$HbckService$2.callBlockingMethod(MasterProtos.java)
             at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:397)
             at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133)
             at 
org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338)
             at 
org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)
   
   Previous it would just create the unassign anyways. Now must pass override
   to queue the procedure regardless. Safer.
   
   
hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java
    javadoc on assigns/unassigns. Minor refactor in assigns/unassigns to cater 
to
    case where procedure may come back null (if override not set and fails 
state checks).
   
   
hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java
    checkstyle cleanups.
    Clarifying javadoc on how there is no state checking when bulk assigns 
creating/enabling
    tables.
   
    createOneAssignProcedure and createOneUnassignProcedure now handle 
exceptions which now
    can be thrown if no override and region state is not appropriate.
   
    Aggregation of createAssignProcedure and createUnassignProcedure instances 
adding in
    region state check invoked if override is NOT set.
   
   
hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStateNode.java
    Change to setProcedure so it returns passed proc as result instead of void
   
   Signed-off-by: Duo Zhang <[email protected]>
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to