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

Huaxiang Sun updated HBASE-26864:
---------------------------------
    Description: 
Changed the issue title and description for the scope of the work. 

there is a bug in handling Rollback in SplitTableRegionProcedure.

[https://github.com/apache/hbase/blob/master/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java#L304]

[https://github.com/apache/hbase/blob/master/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java#L385]
{code:java}
In the state machine:


        case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:
          addChildProcedure(createUnassignProcedures(env));
          // Comments from HX:
          // createUnassignProcedures() can throw out IOException. If this 
happens,
          // it wont reach state SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGION and no 
parent regions
          // is closed as all created UnassignProcedures are rolled back. If it 
rolls back with
          // state SPLIT_TABLE_REGION_CLOSE_PARENT_REGION, no need to call 
openParentRegion(),
          // otherwise, it will result in OpenRegionProcedure for an already 
open region.
          
setNextState(SplitTableRegionState.SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS);
          break;


In the rollback,


        case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:
          // Doing nothing, in SPLIT_TABLE_REGION_CLOSE_PARENT_REGION,
          // we will bring parent region online
          break;
        case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:
          // Comments from HX: 
          // OpenParentRegion() should not be called here as explained above.
          openParentRegion(env);
          break; {code}

  was:
Changed the issue title and description for the scope of the work. 

The reason 


> SplitTableRegionProcedure, it calls openParentRegions() at a wrong state 
> during rollback.
> -----------------------------------------------------------------------------------------
>
>                 Key: HBASE-26864
>                 URL: https://issues.apache.org/jira/browse/HBASE-26864
>             Project: HBase
>          Issue Type: Bug
>          Components: Region Assignment
>    Affects Versions: 2.4.10
>            Reporter: Huaxiang Sun
>            Assignee: Huaxiang Sun
>            Priority: Major
>
> Changed the issue title and description for the scope of the work. 
> there is a bug in handling Rollback in SplitTableRegionProcedure.
> [https://github.com/apache/hbase/blob/master/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java#L304]
> [https://github.com/apache/hbase/blob/master/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java#L385]
> {code:java}
> In the state machine:
>         case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:
>           addChildProcedure(createUnassignProcedures(env));
>           // Comments from HX:
>           // createUnassignProcedures() can throw out IOException. If this 
> happens,
>           // it wont reach state SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGION and 
> no parent regions
>           // is closed as all created UnassignProcedures are rolled back. If 
> it rolls back with
>           // state SPLIT_TABLE_REGION_CLOSE_PARENT_REGION, no need to call 
> openParentRegion(),
>           // otherwise, it will result in OpenRegionProcedure for an already 
> open region.
>           
> setNextState(SplitTableRegionState.SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS);
>           break;
> In the rollback,
>         case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:
>           // Doing nothing, in SPLIT_TABLE_REGION_CLOSE_PARENT_REGION,
>           // we will bring parent region online
>           break;
>         case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:
>           // Comments from HX: 
>           // OpenParentRegion() should not be called here as explained above.
>           openParentRegion(env);
>           break; {code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to