[ 
https://issues.apache.org/jira/browse/HBASE-21003?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Allan Yang updated HBASE-21003:
-------------------------------
    Description: 
TestSplitOrMergeStatus.testSplitSwitch() is flaky because :
1. Set the split switch to false
2. Split the region, except nothing happen
3. Set the split switch to true, but since the last split request may not start 
yet, so setting the switch to true may lead to the last split success
4. Split the same region again, except split success. But since the last split 
operation may already successful, this one will fail

Maybe we should wait for a while between 2 and 3.

{code}
org.apache.hadoop.hbase.client.DoNotRetryRegionException: 
3f16a57c583e6ecf044c5b7de2e97121 is not OPEN; 
regionState={3f16a57c583e6ecf044c5b7de2e97121 state=SPLITTING, 
ts=1533239385789, server=asf911.gq1.ygridcore.net,60061,1533239369899}
 at 
org.apache.hadoop.hbase.master.procedure.AbstractStateMachineTableProcedure.checkOnline(AbstractStateMachineTableProcedure.java:191)
 at 
org.apache.hadoop.hbase.master.assignment.SplitTableRegionProcedure.<init>(SplitTableRegionProcedure.java:112)
 at 
org.apache.hadoop.hbase.master.assignment.AssignmentManager.createSplitProcedure(AssignmentManager.java:756)
 at org.apache.hadoop.hbase.master.HMaster$2.run(HMaster.java:1722)
 at 
org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.submitProcedure(MasterProcedureUtil.java:131)
 at org.apache.hadoop.hbase.master.HMaster.splitRegion(HMaster.java:1714)
 at 
org.apache.hadoop.hbase.master.MasterRpcServices.splitRegion(MasterRpcServices.java:797)
 at 
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
 at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:409)
 at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:130)
 at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:324)
 at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:304)
{code}

  was:
TestSplitOrMergeStatus.testSplitSwitch() is flaky because :
{code}
    //Set the split switch to false
    boolean[] results = admin.setSplitOrMergeEnabled(false, false, 
    MasterSwitchType.SPLIT);
    ......
    //Split the region
    admin.split(t.getName());
    int count = admin.getTableRegions(tableName).size();
    assertTrue(originalCount == count);
    //Set the split switch to true, actually, the last split procedure may not 
started yet on master
    //So, after setting the switch to true, the last split operation may 
success, which is not 
    //excepted   
    results = admin.setSplitOrMergeEnabled(true, false, MasterSwitchType.SPLIT);
    assertEquals(1, results.length);
    assertFalse(results[0]);
    //Since last split success, split the region again will end up with a 
    //DoNotRetryRegionException here
    admin.split(t.getName());
{code}

{code}
org.apache.hadoop.hbase.client.DoNotRetryRegionException: 
3f16a57c583e6ecf044c5b7de2e97121 is not OPEN; 
regionState={3f16a57c583e6ecf044c5b7de2e97121 state=SPLITTING, 
ts=1533239385789, server=asf911.gq1.ygridcore.net,60061,1533239369899}
 at 
org.apache.hadoop.hbase.master.procedure.AbstractStateMachineTableProcedure.checkOnline(AbstractStateMachineTableProcedure.java:191)
 at 
org.apache.hadoop.hbase.master.assignment.SplitTableRegionProcedure.<init>(SplitTableRegionProcedure.java:112)
 at 
org.apache.hadoop.hbase.master.assignment.AssignmentManager.createSplitProcedure(AssignmentManager.java:756)
 at org.apache.hadoop.hbase.master.HMaster$2.run(HMaster.java:1722)
 at 
org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.submitProcedure(MasterProcedureUtil.java:131)
 at org.apache.hadoop.hbase.master.HMaster.splitRegion(HMaster.java:1714)
 at 
org.apache.hadoop.hbase.master.MasterRpcServices.splitRegion(MasterRpcServices.java:797)
 at 
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
 at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:409)
 at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:130)
 at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:324)
 at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:304)
{code}


> Fix the flaky TestSplitOrMergeStatus
> ------------------------------------
>
>                 Key: HBASE-21003
>                 URL: https://issues.apache.org/jira/browse/HBASE-21003
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 2.1.0, 2.0.1
>            Reporter: Allan Yang
>            Assignee: Allan Yang
>            Priority: Major
>
> TestSplitOrMergeStatus.testSplitSwitch() is flaky because :
> 1. Set the split switch to false
> 2. Split the region, except nothing happen
> 3. Set the split switch to true, but since the last split request may not 
> start yet, so setting the switch to true may lead to the last split success
> 4. Split the same region again, except split success. But since the last 
> split operation may already successful, this one will fail
> Maybe we should wait for a while between 2 and 3.
> {code}
> org.apache.hadoop.hbase.client.DoNotRetryRegionException: 
> 3f16a57c583e6ecf044c5b7de2e97121 is not OPEN; 
> regionState={3f16a57c583e6ecf044c5b7de2e97121 state=SPLITTING, 
> ts=1533239385789, server=asf911.gq1.ygridcore.net,60061,1533239369899}
>  at 
> org.apache.hadoop.hbase.master.procedure.AbstractStateMachineTableProcedure.checkOnline(AbstractStateMachineTableProcedure.java:191)
>  at 
> org.apache.hadoop.hbase.master.assignment.SplitTableRegionProcedure.<init>(SplitTableRegionProcedure.java:112)
>  at 
> org.apache.hadoop.hbase.master.assignment.AssignmentManager.createSplitProcedure(AssignmentManager.java:756)
>  at org.apache.hadoop.hbase.master.HMaster$2.run(HMaster.java:1722)
>  at 
> org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.submitProcedure(MasterProcedureUtil.java:131)
>  at org.apache.hadoop.hbase.master.HMaster.splitRegion(HMaster.java:1714)
>  at 
> org.apache.hadoop.hbase.master.MasterRpcServices.splitRegion(MasterRpcServices.java:797)
>  at 
> org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
>  at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:409)
>  at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:130)
>  at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:324)
>  at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:304)
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to