virajjasani commented on code in PR #5799:
URL: https://github.com/apache/hbase/pull/5799#discussion_r1555020386
##########
hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java:
##########
@@ -639,8 +639,22 @@ private void cleanupMergedRegion(final MasterProcedureEnv
env) throws IOExceptio
* Rollback close regions
**/
private void rollbackCloseRegionsForMerge(MasterProcedureEnv env) throws
IOException {
- AssignmentManagerUtil.reopenRegionsForRollback(env,
Arrays.asList(regionsToMerge),
- getRegionReplication(env), getServerName(env));
+ // At this point we should check if region was actually closed. If it was
not closed then we
+ // don't need to repoen the region and we can just change the regionNode
state to OPEN.
+ // if it is alredy closed then we need to do a reopen of region
+ List<RegionInfo> toAssign = new ArrayList<>();
+ for (RegionInfo rinfo : regionsToMerge) {
+ RegionStateNode regionStateNode =
+ env.getAssignmentManager().getRegionStates().getRegionStateNode(rinfo);
+ if (regionStateNode.getState() == State.MERGING) {
+ regionStateNode.setState(State.OPEN);
+ } else {
+ // same as before HBASE-28405
+ toAssign.add(rinfo);
+ }
+ }
+ AssignmentManagerUtil.reopenRegionsForRollback(env, toAssign,
getRegionReplication(env),
Review Comment:
How about this with streams?
```
// At this point we should check if region was actually closed. If it
was not closed then we
// don't need to repoen the region and we can just change the regionNode
state to OPEN.
// if it is alredy closed then we need to do a reopen of region
List<RegionInfo> regionsToReopen = new ArrayList<>();
Arrays.stream(regionsToMerge).forEach(regionInfo -> {
RegionStateNode regionStateNode =
env.getAssignmentManager().getRegionStates().getRegionStateNode(regionInfo);
if (regionStateNode.getState() == State.MERGING) {
regionStateNode.setState(State.OPEN);
} else {
// same as before HBASE-28405
regionsToReopen.add(regionInfo);
}
});
if (!regionsToReopen.isEmpty()) {
AssignmentManagerUtil.reopenRegionsForRollback(env, regionsToReopen,
getRegionReplication(env),
getServerName(env));
}
```
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]