[
https://issues.apache.org/jira/browse/HBASE-26864?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17512767#comment-17512767
]
Andrew Kyle Purtell commented on HBASE-26864:
---------------------------------------------
The PR had two approvals so I merged it and cherry picked it to branch-2.4,
branch-2.5, and branch-2. One test required a minor fixup. The modified test
passes after application to all target branches.
> SplitTableRegionProcedure 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
> Fix For: 2.5.0, 2.6.0, 3.0.0-alpha-3, 2.4.12
>
>
> 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)