This is an automated email from the ASF dual-hosted git repository.
stack pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new c882672 HBASE-22922 Lock all regions to be merged in case of multi
region merge (#542)
c882672 is described below
commit c88267202a280f21d8aa937a8440fda2e3d84c6f
Author: Istvan Toth <[email protected]>
AuthorDate: Tue Aug 27 06:09:18 2019 +0200
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 <[email protected]>
---
.../hbase/master/assignment/MergeTableRegionsProcedure.java | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
index 8375dd0..41e77f8 100644
---
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
+++
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
@@ -402,8 +402,10 @@ public class MergeTableRegionsProcedure
@Override
protected LockState acquireLock(final MasterProcedureEnv env) {
- if (env.getProcedureScheduler().waitRegions(this, getTableName(),
- mergedRegion, regionsToMerge[0], regionsToMerge[1])) {
+ RegionInfo[] lockRegions = Arrays.copyOf(regionsToMerge,
regionsToMerge.length + 1);
+ lockRegions[lockRegions.length - 1] = mergedRegion;
+
+ if (env.getProcedureScheduler().waitRegions(this, getTableName(),
lockRegions)) {
try {
LOG.debug(LockState.LOCK_EVENT_WAIT + " " +
env.getProcedureScheduler().dumpLocks());
} catch (IOException e) {
@@ -416,8 +418,10 @@ public class MergeTableRegionsProcedure
@Override
protected void releaseLock(final MasterProcedureEnv env) {
- env.getProcedureScheduler().wakeRegions(this, getTableName(),
- mergedRegion, regionsToMerge[0], regionsToMerge[1]);
+ RegionInfo[] lockRegions = Arrays.copyOf(regionsToMerge,
regionsToMerge.length + 1);
+ lockRegions[lockRegions.length - 1] = mergedRegion;
+
+ env.getProcedureScheduler().wakeRegions(this, getTableName(), lockRegions);
}
@Override