Skip to content

Commit caba5cf

Browse files
stotysaintstack
authored andcommitted
HBASE-22922 Lock all regions to be merged in case of multi region merge (#542)
* HBASE-22922 Lock all regions to be merged in case of multi region merge * HBASE-22922 Lock all regions to be merged in case of multi region merge (addendum) fix off-by-one error in patch Signed-off-by: stack <stack@apache.org>
1 parent 1eac16e commit caba5cf

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -402,8 +402,10 @@ public void toStringClassDetails(StringBuilder sb) {
402402

403403
@Override
404404
protected LockState acquireLock(final MasterProcedureEnv env) {
405-
if (env.getProcedureScheduler().waitRegions(this, getTableName(),
406-
mergedRegion, regionsToMerge[0], regionsToMerge[1])) {
405+
RegionInfo[] lockRegions = Arrays.copyOf(regionsToMerge, regionsToMerge.length + 1);
406+
lockRegions[lockRegions.length - 1] = mergedRegion;
407+
408+
if (env.getProcedureScheduler().waitRegions(this, getTableName(), lockRegions)) {
407409
try {
408410
LOG.debug(LockState.LOCK_EVENT_WAIT + " " + env.getProcedureScheduler().dumpLocks());
409411
} catch (IOException e) {
@@ -416,8 +418,10 @@ protected LockState acquireLock(final MasterProcedureEnv env) {
416418

417419
@Override
418420
protected void releaseLock(final MasterProcedureEnv env) {
419-
env.getProcedureScheduler().wakeRegions(this, getTableName(),
420-
mergedRegion, regionsToMerge[0], regionsToMerge[1]);
421+
RegionInfo[] lockRegions = Arrays.copyOf(regionsToMerge, regionsToMerge.length + 1);
422+
lockRegions[lockRegions.length - 1] = mergedRegion;
423+
424+
env.getProcedureScheduler().wakeRegions(this, getTableName(), lockRegions);
421425
}
422426

423427
@Override

0 commit comments

Comments
 (0)