[hbase] branch master updated: HBASE-22234 Fix flaky TestHbck#testRecoverSplitAfterMetaUpdated
This is an automated email from the ASF dual-hosted git repository. tianjy 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 cb84b27 HBASE-22234 Fix flaky TestHbck#testRecoverSplitAfterMetaUpdated cb84b27 is described below commit cb84b2788aeed6aad2bc4b1acb98290e060861e2 Author: tianjingyun AuthorDate: Sun Apr 14 21:59:59 2019 +0800 HBASE-22234 Fix flaky TestHbck#testRecoverSplitAfterMetaUpdated --- .../src/test/java/org/apache/hadoop/hbase/client/TestHbck.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestHbck.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestHbck.java index 8ee00b8..d9a7ca9 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestHbck.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestHbck.java @@ -253,7 +253,7 @@ public class TestHbck { Assert.assertEquals(1, result.size()); hbck.assigns(Arrays.asList(result.keySet().toArray(new String[0])).stream() .map(regionName -> regionName.split("\\.")[1]).collect(Collectors.toList())); - ProcedureTestingUtility.waitNoProcedureRunning(master.getMasterProcedureExecutor()); + ProcedureTestingUtility.waitAllProcedures(master.getMasterProcedureExecutor()); // now the state should be fixed result = hbck.getFailedSplitMergeLegacyRegions(Arrays.asList(TableName.valueOf(testTable))); Assert.assertEquals(0, result.size()); @@ -290,7 +290,7 @@ public class TestHbck { Assert.assertEquals(2, result.size()); hbck.assigns(Arrays.asList(result.keySet().toArray(new String[0])).stream() .map(regionName -> regionName.split("\\.")[1]).collect(Collectors.toList())); - ProcedureTestingUtility.waitNoProcedureRunning(master.getMasterProcedureExecutor()); + ProcedureTestingUtility.waitAllProcedures(master.getMasterProcedureExecutor()); // now the state should be fixed result = hbck.getFailedSplitMergeLegacyRegions(Arrays.asList(TableName.valueOf(testTable))); Assert.assertEquals(0, result.size()); @@ -310,7 +310,7 @@ public class TestHbck { Assert.assertEquals(2, result.size()); hbck.assigns(Arrays.asList(result.keySet().toArray(new String[0])).stream() .map(regionName -> regionName.split("\\.")[1]).collect(Collectors.toList())); - ProcedureTestingUtility.waitNoProcedureRunning(master.getMasterProcedureExecutor()); + ProcedureTestingUtility.waitAllProcedures(master.getMasterProcedureExecutor()); // now the state should be fixed result = hbck.getFailedSplitMergeLegacyRegions(Arrays.asList(TableName.valueOf(testTable))); Assert.assertEquals(0, result.size());
[hbase] branch branch-2 updated: HBASE-21965 Fix failed split and merge transactions that have failed to roll back
This is an automated email from the ASF dual-hosted git repository. tianjy pushed a commit to branch branch-2 in repository https://gitbox.apache.org/repos/asf/hbase.git The following commit(s) were added to refs/heads/branch-2 by this push: new 8a6b8e8 HBASE-21965 Fix failed split and merge transactions that have failed to roll back 8a6b8e8 is described below commit 8a6b8e81aa1844bc1b2c533a7139fddca05f3e53 Author: Jingyun Tian AuthorDate: Mon Apr 8 17:26:29 2019 +0800 HBASE-21965 Fix failed split and merge transactions that have failed to roll back --- .../org/apache/hadoop/hbase/client/HBaseHbck.java | 16 ++ .../java/org/apache/hadoop/hbase/client/Hbck.java | 15 ++ .../hbase/shaded/protobuf/RequestConverter.java| 9 ++ .../src/main/protobuf/Master.proto | 16 ++ .../hadoop/hbase/master/MasterRpcServices.java | 166 .../assignment/SplitTableRegionProcedure.java | 66 .../hbase/regionserver/HRegionFileSystem.java | 6 + .../org/apache/hadoop/hbase/client/TestHbck.java | 172 + 8 files changed, 438 insertions(+), 28 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java index a276017..79a75d0 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java @@ -19,10 +19,12 @@ package org.apache.hadoop.hbase.client; import java.io.IOException; import java.util.List; +import java.util.Map; import java.util.concurrent.Callable; import java.util.stream.Collectors; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.ipc.RpcControllerFactory; import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.shaded.protobuf.RequestConverter; @@ -172,4 +174,18 @@ public class HBaseHbck implements Hbck { throw new IOException(se); } } + + @Override + public Map + getFailedSplitMergeLegacyRegions(List tableNames) throws IOException { +try { + MasterProtos.GetFailedSplitMergeLegacyRegionsResponse response = + this.hbck.getFailedSplitMergeLegacyRegions(rpcControllerFactory.newController(), + RequestConverter.toGetFailedSplitMergeLegacyRegionsRequest(tableNames)); + return response.getErrorsMap(); +} catch (ServiceException se) { + LOG.debug("get failed split/merge legacy regions failed", se); + throw new IOException(se); +} + } } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java index e88805c..76643e6 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java @@ -20,12 +20,15 @@ package org.apache.hadoop.hbase.client; import java.io.Closeable; import java.io.IOException; import java.util.List; +import java.util.Map; import org.apache.hadoop.hbase.Abortable; import org.apache.hadoop.hbase.HBaseInterfaceAudience; +import org.apache.hadoop.hbase.TableName; import org.apache.yetus.audience.InterfaceAudience; import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos; +import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos; /** * Hbck fixup tool APIs. Obtain an instance from {@link ClusterConnection#getHbck()} and call @@ -106,4 +109,16 @@ public interface Hbck extends Abortable, Closeable { List scheduleServerCrashProcedure(List serverNames) throws IOException; + + /** + * This method is to get the regions which left by failed split/merge procedures for a certain + * table. There are two kinds of region this method will return. One is orphan regions left on FS, + * which left because split/merge procedure crashed before updating meta. And the other one is + * unassigned split daughter region or merged region, which left because split/merge procedure + * crashed before assignment. + * @param tableName table to check + * @return Map of problematic regions + */ + Map + getFailedSplitMergeLegacyRegions(List tableName) throws IOException; } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java index 7e5b5e4..19f7aeb 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java @@ -1884,6 +1884,15 @@ public final class RequestConverter { return b.addAllServerName(serverNames).build(); } + pub
[hbase] branch master updated: HBASE-21965 Fix failed split and merge transactions that have failed to roll back
This is an automated email from the ASF dual-hosted git repository. tianjy 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 bd2f04d HBASE-21965 Fix failed split and merge transactions that have failed to roll back bd2f04d is described below commit bd2f04dd5407400fff08ca62e1ea1082c5f79fa3 Author: Jingyun Tian AuthorDate: Mon Apr 8 17:26:29 2019 +0800 HBASE-21965 Fix failed split and merge transactions that have failed to roll back --- .../org/apache/hadoop/hbase/client/HBaseHbck.java | 16 ++ .../java/org/apache/hadoop/hbase/client/Hbck.java | 15 ++ .../hbase/shaded/protobuf/RequestConverter.java| 9 ++ .../src/main/protobuf/Master.proto | 16 ++ .../hadoop/hbase/master/MasterRpcServices.java | 166 .../assignment/SplitTableRegionProcedure.java | 66 .../hbase/regionserver/HRegionFileSystem.java | 6 + .../org/apache/hadoop/hbase/client/TestHbck.java | 172 + 8 files changed, 438 insertions(+), 28 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java index a276017..79a75d0 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java @@ -19,10 +19,12 @@ package org.apache.hadoop.hbase.client; import java.io.IOException; import java.util.List; +import java.util.Map; import java.util.concurrent.Callable; import java.util.stream.Collectors; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.ipc.RpcControllerFactory; import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.shaded.protobuf.RequestConverter; @@ -172,4 +174,18 @@ public class HBaseHbck implements Hbck { throw new IOException(se); } } + + @Override + public Map + getFailedSplitMergeLegacyRegions(List tableNames) throws IOException { +try { + MasterProtos.GetFailedSplitMergeLegacyRegionsResponse response = + this.hbck.getFailedSplitMergeLegacyRegions(rpcControllerFactory.newController(), + RequestConverter.toGetFailedSplitMergeLegacyRegionsRequest(tableNames)); + return response.getErrorsMap(); +} catch (ServiceException se) { + LOG.debug("get failed split/merge legacy regions failed", se); + throw new IOException(se); +} + } } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java index e88805c..76643e6 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java @@ -20,12 +20,15 @@ package org.apache.hadoop.hbase.client; import java.io.Closeable; import java.io.IOException; import java.util.List; +import java.util.Map; import org.apache.hadoop.hbase.Abortable; import org.apache.hadoop.hbase.HBaseInterfaceAudience; +import org.apache.hadoop.hbase.TableName; import org.apache.yetus.audience.InterfaceAudience; import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos; +import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos; /** * Hbck fixup tool APIs. Obtain an instance from {@link ClusterConnection#getHbck()} and call @@ -106,4 +109,16 @@ public interface Hbck extends Abortable, Closeable { List scheduleServerCrashProcedure(List serverNames) throws IOException; + + /** + * This method is to get the regions which left by failed split/merge procedures for a certain + * table. There are two kinds of region this method will return. One is orphan regions left on FS, + * which left because split/merge procedure crashed before updating meta. And the other one is + * unassigned split daughter region or merged region, which left because split/merge procedure + * crashed before assignment. + * @param tableName table to check + * @return Map of problematic regions + */ + Map + getFailedSplitMergeLegacyRegions(List tableName) throws IOException; } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java index 0c58d4b..5515b2f 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java @@ -1893,6 +1893,15 @@ public final class RequestConverter { return b.addAllServerName(serverNames).build(); } + public static MasterProtos.GetFailedSplitMergeLegacyRegi
[hbase] branch branch-2 updated: HBASE-21965 Fix failed split and merge transactions that have failed to roll back
This is an automated email from the ASF dual-hosted git repository. tianjy pushed a commit to branch branch-2 in repository https://gitbox.apache.org/repos/asf/hbase.git The following commit(s) were added to refs/heads/branch-2 by this push: new b2a4265 HBASE-21965 Fix failed split and merge transactions that have failed to roll back b2a4265 is described below commit b2a4265992855c93a7e7f3f998ee2fb7016b7190 Author: Jingyun Tian AuthorDate: Fri Mar 22 13:38:53 2019 +0800 HBASE-21965 Fix failed split and merge transactions that have failed to roll back --- .../org/apache/hadoop/hbase/client/HBaseHbck.java | 16 ++ .../java/org/apache/hadoop/hbase/client/Hbck.java | 15 ++ .../hbase/shaded/protobuf/RequestConverter.java| 9 ++ .../src/main/protobuf/Master.proto | 16 ++ .../hadoop/hbase/master/MasterRpcServices.java | 167 .../assignment/SplitTableRegionProcedure.java | 66 .../hbase/regionserver/HRegionFileSystem.java | 6 + .../org/apache/hadoop/hbase/client/TestHbck.java | 172 + 8 files changed, 439 insertions(+), 28 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java index a276017..1963906 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java @@ -19,10 +19,12 @@ package org.apache.hadoop.hbase.client; import java.io.IOException; import java.util.List; +import java.util.Map; import java.util.concurrent.Callable; import java.util.stream.Collectors; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.ipc.RpcControllerFactory; import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.shaded.protobuf.RequestConverter; @@ -172,4 +174,18 @@ public class HBaseHbck implements Hbck { throw new IOException(se); } } + + @Override + public Map + getFailedSplitMergeLegacyRegions(List tableNames) throws IOException { +try { + MasterProtos.GetFailedSplitMergeLegacyRegionsResponse response = + this.hbck.getFailedSplitMergeLegacyRegions(rpcControllerFactory.newController(), + RequestConverter.toGetFailedSplitMergeLegacyRegionsRequest(tableNames)); + return response.getErrorsMap(); +} catch (ServiceException se) { + LOG.debug("get failed split/merge legacy regions failed", se); + throw new IOException(se); +} + } } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java index e88805c..49fb18f 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java @@ -20,12 +20,15 @@ package org.apache.hadoop.hbase.client; import java.io.Closeable; import java.io.IOException; import java.util.List; +import java.util.Map; import org.apache.hadoop.hbase.Abortable; import org.apache.hadoop.hbase.HBaseInterfaceAudience; +import org.apache.hadoop.hbase.TableName; import org.apache.yetus.audience.InterfaceAudience; import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos; +import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos; /** * Hbck fixup tool APIs. Obtain an instance from {@link ClusterConnection#getHbck()} and call @@ -106,4 +109,16 @@ public interface Hbck extends Abortable, Closeable { List scheduleServerCrashProcedure(List serverNames) throws IOException; + + /** + * This method is to get the regions which left by failed split/merge procedures for a certain + * table. There are two kinds of region this method will return. One is orphan regions left on FS, + * which left because split/merge procedure crashed before updating meta. And the other one is + * unassigned split daughter region or merged region, which left because split/merge procedure + * crashed before assignment. + * @param tableName table to check + * @return Map of problematic regions + */ + Map + getFailedSplitMergeLegacyRegions(List tableName) throws IOException; } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java index a4bf899..19416d6 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java @@ -1904,6 +1904,15 @@ public final class RequestConverter { return b.addAllServerName(serverNames).build(); } + pub
[hbase] branch master updated: HBASE-21965 Fix failed split and merge transactions that have failed to roll back
This is an automated email from the ASF dual-hosted git repository. tianjy 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 7e3ca70 HBASE-21965 Fix failed split and merge transactions that have failed to roll back 7e3ca70 is described below commit 7e3ca7063cc1a4b431e0b07e8db91537252db3c3 Author: Jingyun Tian AuthorDate: Fri Mar 22 13:38:53 2019 +0800 HBASE-21965 Fix failed split and merge transactions that have failed to roll back --- .../org/apache/hadoop/hbase/client/HBaseHbck.java | 16 ++ .../java/org/apache/hadoop/hbase/client/Hbck.java | 15 ++ .../hbase/shaded/protobuf/RequestConverter.java| 9 ++ .../src/main/protobuf/Master.proto | 16 ++ .../hadoop/hbase/master/MasterRpcServices.java | 167 .../assignment/SplitTableRegionProcedure.java | 66 .../hbase/regionserver/HRegionFileSystem.java | 6 + .../org/apache/hadoop/hbase/client/TestHbck.java | 172 + 8 files changed, 439 insertions(+), 28 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java index a276017..1963906 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseHbck.java @@ -19,10 +19,12 @@ package org.apache.hadoop.hbase.client; import java.io.IOException; import java.util.List; +import java.util.Map; import java.util.concurrent.Callable; import java.util.stream.Collectors; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.ipc.RpcControllerFactory; import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.shaded.protobuf.RequestConverter; @@ -172,4 +174,18 @@ public class HBaseHbck implements Hbck { throw new IOException(se); } } + + @Override + public Map + getFailedSplitMergeLegacyRegions(List tableNames) throws IOException { +try { + MasterProtos.GetFailedSplitMergeLegacyRegionsResponse response = + this.hbck.getFailedSplitMergeLegacyRegions(rpcControllerFactory.newController(), + RequestConverter.toGetFailedSplitMergeLegacyRegionsRequest(tableNames)); + return response.getErrorsMap(); +} catch (ServiceException se) { + LOG.debug("get failed split/merge legacy regions failed", se); + throw new IOException(se); +} + } } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java index e88805c..49fb18f 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Hbck.java @@ -20,12 +20,15 @@ package org.apache.hadoop.hbase.client; import java.io.Closeable; import java.io.IOException; import java.util.List; +import java.util.Map; import org.apache.hadoop.hbase.Abortable; import org.apache.hadoop.hbase.HBaseInterfaceAudience; +import org.apache.hadoop.hbase.TableName; import org.apache.yetus.audience.InterfaceAudience; import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos; +import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos; /** * Hbck fixup tool APIs. Obtain an instance from {@link ClusterConnection#getHbck()} and call @@ -106,4 +109,16 @@ public interface Hbck extends Abortable, Closeable { List scheduleServerCrashProcedure(List serverNames) throws IOException; + + /** + * This method is to get the regions which left by failed split/merge procedures for a certain + * table. There are two kinds of region this method will return. One is orphan regions left on FS, + * which left because split/merge procedure crashed before updating meta. And the other one is + * unassigned split daughter region or merged region, which left because split/merge procedure + * crashed before assignment. + * @param tableName table to check + * @return Map of problematic regions + */ + Map + getFailedSplitMergeLegacyRegions(List tableName) throws IOException; } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java index 36c8fab..e7b6624 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/RequestConverter.java @@ -1913,6 +1913,15 @@ public final class RequestConverter { return b.addAllServerName(serverNames).build(); } + public static MasterProtos.GetFailedSplitMergeLegacyRegi
[hbase] branch branch-2.2 updated: HBASE-22061 SplitTableRegionProcedure should hold the lock of its daughter regions
This is an automated email from the ASF dual-hosted git repository. tianjy pushed a commit to branch branch-2.2 in repository https://gitbox.apache.org/repos/asf/hbase.git The following commit(s) were added to refs/heads/branch-2.2 by this push: new 31b1840 HBASE-22061 SplitTableRegionProcedure should hold the lock of its daughter regions 31b1840 is described below commit 31b1840ed357482b476c77a62693cc0af55a5af8 Author: Jingyun Tian AuthorDate: Tue Mar 19 14:25:04 2019 +0800 HBASE-22061 SplitTableRegionProcedure should hold the lock of its daughter regions --- .../master/assignment/SplitTableRegionProcedure.java | 20 1 file changed, 20 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java index 8e0dcd3..7b74919 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java @@ -137,6 +137,26 @@ public class SplitTableRegionProcedure } } + @Override + protected LockState acquireLock(final MasterProcedureEnv env) { +if (env.getProcedureScheduler().waitRegions(this, getTableName(), getParentRegion(), + daughter_1_RI, daughter_2_RI)) { + try { +LOG.debug(LockState.LOCK_EVENT_WAIT + " " + env.getProcedureScheduler().dumpLocks()); + } catch (IOException e) { +// Ignore, just for logging + } + return LockState.LOCK_EVENT_WAIT; +} +return LockState.LOCK_ACQUIRED; + } + + @Override + protected void releaseLock(final MasterProcedureEnv env) { +env.getProcedureScheduler().wakeRegions(this, getTableName(), getParentRegion(), daughter_1_RI, + daughter_2_RI); + } + /** * Check whether the region is splittable * @param env MasterProcedureEnv
[hbase] branch branch-2 updated: HBASE-22061 SplitTableRegionProcedure should hold the lock of its daughter regions
This is an automated email from the ASF dual-hosted git repository. tianjy pushed a commit to branch branch-2 in repository https://gitbox.apache.org/repos/asf/hbase.git The following commit(s) were added to refs/heads/branch-2 by this push: new b5fdce7 HBASE-22061 SplitTableRegionProcedure should hold the lock of its daughter regions b5fdce7 is described below commit b5fdce7c6b100548bc85015496c3ccbe44a14a91 Author: Jingyun Tian AuthorDate: Tue Mar 19 14:25:04 2019 +0800 HBASE-22061 SplitTableRegionProcedure should hold the lock of its daughter regions --- .../master/assignment/SplitTableRegionProcedure.java | 20 1 file changed, 20 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java index 8e0dcd3..7b74919 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java @@ -137,6 +137,26 @@ public class SplitTableRegionProcedure } } + @Override + protected LockState acquireLock(final MasterProcedureEnv env) { +if (env.getProcedureScheduler().waitRegions(this, getTableName(), getParentRegion(), + daughter_1_RI, daughter_2_RI)) { + try { +LOG.debug(LockState.LOCK_EVENT_WAIT + " " + env.getProcedureScheduler().dumpLocks()); + } catch (IOException e) { +// Ignore, just for logging + } + return LockState.LOCK_EVENT_WAIT; +} +return LockState.LOCK_ACQUIRED; + } + + @Override + protected void releaseLock(final MasterProcedureEnv env) { +env.getProcedureScheduler().wakeRegions(this, getTableName(), getParentRegion(), daughter_1_RI, + daughter_2_RI); + } + /** * Check whether the region is splittable * @param env MasterProcedureEnv
[hbase] branch master updated: HBASE-22061 SplitTableRegionProcedure should hold the lock of its daughter regions
This is an automated email from the ASF dual-hosted git repository. tianjy 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 c52dd9e HBASE-22061 SplitTableRegionProcedure should hold the lock of its daughter regions c52dd9e is described below commit c52dd9efa0607f922be5147f029fb0da4fa3f07b Author: Jingyun Tian AuthorDate: Tue Mar 19 14:25:04 2019 +0800 HBASE-22061 SplitTableRegionProcedure should hold the lock of its daughter regions --- .../master/assignment/SplitTableRegionProcedure.java | 20 1 file changed, 20 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java index 8e0dcd3..7b74919 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java @@ -137,6 +137,26 @@ public class SplitTableRegionProcedure } } + @Override + protected LockState acquireLock(final MasterProcedureEnv env) { +if (env.getProcedureScheduler().waitRegions(this, getTableName(), getParentRegion(), + daughter_1_RI, daughter_2_RI)) { + try { +LOG.debug(LockState.LOCK_EVENT_WAIT + " " + env.getProcedureScheduler().dumpLocks()); + } catch (IOException e) { +// Ignore, just for logging + } + return LockState.LOCK_EVENT_WAIT; +} +return LockState.LOCK_ACQUIRED; + } + + @Override + protected void releaseLock(final MasterProcedureEnv env) { +env.getProcedureScheduler().wakeRegions(this, getTableName(), getParentRegion(), daughter_1_RI, + daughter_2_RI); + } + /** * Check whether the region is splittable * @param env MasterProcedureEnv
[hbase] branch branch-2.1 updated: HBASE-21934 RemoteProcedureDispatcher should track the ongoing dispatched calls
This is an automated email from the ASF dual-hosted git repository. tianjy pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/hbase.git The following commit(s) were added to refs/heads/branch-2.1 by this push: new 4e74afe HBASE-21934 RemoteProcedureDispatcher should track the ongoing dispatched calls 4e74afe is described below commit 4e74afe12f83d1438d861a4f16194481c035da41 Author: Jingyun Tian AuthorDate: Mon Mar 4 14:11:27 2019 +0800 HBASE-21934 RemoteProcedureDispatcher should track the ongoing dispatched calls --- .../procedure2/RemoteProcedureDispatcher.java | 29 +++ .../assignment/RegionTransitionProcedure.java | 5 + .../master/procedure/ServerRemoteProcedure.java| 132 +++ .../master/replication/RefreshPeerProcedure.java | 72 +- .../procedure/TestServerRemoteProcedure.java | 246 + 5 files changed, 416 insertions(+), 68 deletions(-) diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java index 4c54c57..fe34d80 100644 --- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java +++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java @@ -172,6 +172,16 @@ public abstract class RemoteProcedureDispatcher implements RemoteNode { private Set operations; +private final Set dispatchedOperations = new HashSet<>(); protected BufferNode(final TRemote key) { super(key, 0); @@ -358,6 +379,8 @@ public abstract class RemoteProcedureDispatcher operation.storeInDispatchedQueue()) +.forEach(operation -> dispatchedOperations.add(operation)); this.operations = null; } } @@ -367,6 +390,12 @@ public abstract class RemoteProcedureDispatcherhttp://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.hbase.master.procedure; + +import java.io.IOException; + +import org.apache.hadoop.hbase.ServerName; +import org.apache.hadoop.hbase.procedure2.FailedRemoteDispatchException; +import org.apache.hadoop.hbase.procedure2.Procedure; +import org.apache.hadoop.hbase.procedure2.ProcedureEvent; +import org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException; +import org.apache.hadoop.hbase.procedure2.ProcedureYieldException; +import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher; +import org.apache.hadoop.hbase.procedure2.RemoteProcedureException; +import org.apache.yetus.audience.InterfaceAudience; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@InterfaceAudience.Private +/** + * This extract the common used methods of procedures which are send to remote servers. Developers + * who extends this class only need to override remoteCallBuild() and complete(). This procedure + * will help add the operation to {@link RSProcedureDispatcher} + * + * If adding the operation to dispatcher failed, addOperationToNode will throw + * FailedRemoteDispatchException, and this procedure will return null which procedure Executor will + * mark this procedure as complete. Thus the upper layer of this procedure must have a way to + * check if this procedure really succeed and how to deal with it. + * + * If sending the operation to remote RS failed, dispatcher will call remoteCallFailed() to + * handle this, which actually call remoteOperationDone with the exception. + * If the targetServer crashed but this procedure has no response, than dispatcher will call + * remoteOperationFailed() to handle this, which also calls remoteOperationDone with the exception. + * If the operation is successful, then remoteOperationCompleted will be called and actually calls + * the remoteOperationDone without exception. + * + * In remoteOperationDone, we'll check if the procedure is already get wake up by others. Then + * developer could implement complete() based on their own purpose. + * + * But basic logic is that if operation succeed, set succ to true and do the clean work. + * + * If operation failed and require to resend it to the same server, leave the succ as false. + * + * If operation failed and require to resend it to another server, set succ to true and upper layer + * should be able to find out this operation not work and send a operation to another server. + */ +public abstract class ServerRemoteProcedure extends Procedure +implements RemoteProcedureDispatcher.RemoteProcedure { + protected static final Logger LOG =
[hbase] branch branch-2.2 updated: HBASE-21934 RemoteProcedureDispatcher should track the ongoing dispatched calls
This is an automated email from the ASF dual-hosted git repository. tianjy pushed a commit to branch branch-2.2 in repository https://gitbox.apache.org/repos/asf/hbase.git The following commit(s) were added to refs/heads/branch-2.2 by this push: new b65ff3d HBASE-21934 RemoteProcedureDispatcher should track the ongoing dispatched calls b65ff3d is described below commit b65ff3d489364a592380d6625b2d19900aa721a1 Author: Jingyun Tian AuthorDate: Thu Feb 28 19:53:24 2019 +0800 HBASE-21934 RemoteProcedureDispatcher should track the ongoing dispatched calls --- .../procedure2/RemoteProcedureDispatcher.java | 29 +++ .../assignment/RegionRemoteProcedureBase.java | 5 + .../assignment/RegionTransitionProcedure.java | 1 + .../master/procedure/ServerRemoteProcedure.java| 131 ++ .../master/procedure/SplitWALRemoteProcedure.java | 84 +- .../SwitchRpcThrottleRemoteProcedure.java | 61 + .../master/replication/RefreshPeerProcedure.java | 72 +- .../procedure/TestServerRemoteProcedure.java | 282 + 8 files changed, 470 insertions(+), 195 deletions(-) diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java index 4a65796..de017ad 100644 --- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java +++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java @@ -172,6 +172,16 @@ public abstract class RemoteProcedureDispatcher implements RemoteNode { private Set operations; +private final Set dispatchedOperations = new HashSet<>(); protected BufferNode(final TRemote key) { super(key, 0); @@ -358,6 +379,8 @@ public abstract class RemoteProcedureDispatcher operation.storeInDispatchedQueue()) +.forEach(operation -> dispatchedOperations.add(operation)); this.operations = null; } } @@ -367,6 +390,12 @@ public abstract class RemoteProcedureDispatcherhttp://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.hbase.master.procedure; + +import java.io.IOException; + +import org.apache.hadoop.hbase.ServerName; +import org.apache.hadoop.hbase.procedure2.FailedRemoteDispatchException; +import org.apache.hadoop.hbase.procedure2.Procedure; +import org.apache.hadoop.hbase.procedure2.ProcedureEvent; +import org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException; +import org.apache.hadoop.hbase.procedure2.ProcedureYieldException; +import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher; +import org.apache.hadoop.hbase.procedure2.RemoteProcedureException; +import org.apache.yetus.audience.InterfaceAudience; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@InterfaceAudience.Private +/** + * This extract the common used methods of procedures which are send to remote servers. Developers + * who extends this class only need to override remoteCallBuild() and complete(). This procedure + * will help add the operation to {@link RSProcedureDispatcher} + * + * If adding the operation to dispatcher failed, addOperationToNode will throw + * FailedRemoteDispatchException, and this procedure will return null which procedure Executor will + * mark this procedure as complete. Thus the upper layer of this procedure must have a way to + * check if this procedure really succeed and how to deal with it. + * + * If sending the operation to remote RS failed, dispatcher will call remoteCallFailed() to + * handle this, which actually call remoteOperationDone with the exception. + * If the targetServer crashed but this procedure has no response, than dispatcher will call + * remoteOperationFailed() to handle this, which also calls remoteOperationDone with the exception. + * If the operation is successful, then remoteOperationCompleted will be called and actually calls + * the remoteOperationDone without exception. + * + * In remoteOperationDone, we'll check if the procedure is already get wake up by others. Then + * developer could implement complete() based on their own purpose. + * + * But basic logic is that if operation succeed, set succ to true and do the clean work. + * + * If operation failed and require to resend it to the same server, leave the succ as false. + * + * If operation failed and require to resend it to another server, set succ to true and upper layer + * should be able to find out this operation not work and send a operation to anot
[hbase] branch branch-2 updated: HBASE-21934 RemoteProcedureDispatcher should track the ongoing dispatched calls
This is an automated email from the ASF dual-hosted git repository. tianjy pushed a commit to branch branch-2 in repository https://gitbox.apache.org/repos/asf/hbase.git The following commit(s) were added to refs/heads/branch-2 by this push: new ebab2fc HBASE-21934 RemoteProcedureDispatcher should track the ongoing dispatched calls ebab2fc is described below commit ebab2fc913e7199c48f965ed5ab4e265ddd96930 Author: Jingyun Tian AuthorDate: Thu Feb 28 19:53:24 2019 +0800 HBASE-21934 RemoteProcedureDispatcher should track the ongoing dispatched calls --- .../procedure2/RemoteProcedureDispatcher.java | 29 +++ .../assignment/RegionRemoteProcedureBase.java | 5 + .../assignment/RegionTransitionProcedure.java | 1 + .../master/procedure/ServerRemoteProcedure.java| 131 ++ .../master/procedure/SplitWALRemoteProcedure.java | 84 +- .../SwitchRpcThrottleRemoteProcedure.java | 61 + .../master/replication/RefreshPeerProcedure.java | 72 +- .../procedure/TestServerRemoteProcedure.java | 282 + 8 files changed, 470 insertions(+), 195 deletions(-) diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java index 4a65796..de017ad 100644 --- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java +++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java @@ -172,6 +172,16 @@ public abstract class RemoteProcedureDispatcher implements RemoteNode { private Set operations; +private final Set dispatchedOperations = new HashSet<>(); protected BufferNode(final TRemote key) { super(key, 0); @@ -358,6 +379,8 @@ public abstract class RemoteProcedureDispatcher operation.storeInDispatchedQueue()) +.forEach(operation -> dispatchedOperations.add(operation)); this.operations = null; } } @@ -367,6 +390,12 @@ public abstract class RemoteProcedureDispatcherhttp://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.hbase.master.procedure; + +import java.io.IOException; + +import org.apache.hadoop.hbase.ServerName; +import org.apache.hadoop.hbase.procedure2.FailedRemoteDispatchException; +import org.apache.hadoop.hbase.procedure2.Procedure; +import org.apache.hadoop.hbase.procedure2.ProcedureEvent; +import org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException; +import org.apache.hadoop.hbase.procedure2.ProcedureYieldException; +import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher; +import org.apache.hadoop.hbase.procedure2.RemoteProcedureException; +import org.apache.yetus.audience.InterfaceAudience; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@InterfaceAudience.Private +/** + * This extract the common used methods of procedures which are send to remote servers. Developers + * who extends this class only need to override remoteCallBuild() and complete(). This procedure + * will help add the operation to {@link RSProcedureDispatcher} + * + * If adding the operation to dispatcher failed, addOperationToNode will throw + * FailedRemoteDispatchException, and this procedure will return null which procedure Executor will + * mark this procedure as complete. Thus the upper layer of this procedure must have a way to + * check if this procedure really succeed and how to deal with it. + * + * If sending the operation to remote RS failed, dispatcher will call remoteCallFailed() to + * handle this, which actually call remoteOperationDone with the exception. + * If the targetServer crashed but this procedure has no response, than dispatcher will call + * remoteOperationFailed() to handle this, which also calls remoteOperationDone with the exception. + * If the operation is successful, then remoteOperationCompleted will be called and actually calls + * the remoteOperationDone without exception. + * + * In remoteOperationDone, we'll check if the procedure is already get wake up by others. Then + * developer could implement complete() based on their own purpose. + * + * But basic logic is that if operation succeed, set succ to true and do the clean work. + * + * If operation failed and require to resend it to the same server, leave the succ as false. + * + * If operation failed and require to resend it to another server, set succ to true and upper layer + * should be able to find out this operation not work and send a operation to anot
[hbase] reference refs/remotes/origin/branch-2.2 created (now 42f1325)
This is an automated email from the ASF dual-hosted git repository. tianjy pushed a change to reference refs/remotes/origin/branch-2.2 in repository https://gitbox.apache.org/repos/asf/hbase.git. at 42f1325 HBASE-21967 Split TestServerCrashProcedure and TestServerCrashProcedureWithReplicas No new revisions were added by this update.
[hbase] branch master updated: HBASE-21934 RemoteProcedureDispatcher should track the ongoing dispatched calls
This is an automated email from the ASF dual-hosted git repository. tianjy 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 c19bc59 HBASE-21934 RemoteProcedureDispatcher should track the ongoing dispatched calls c19bc59 is described below commit c19bc5911b31552eb5f84628e78675cf1907959d Author: Jingyun Tian AuthorDate: Thu Feb 28 19:53:24 2019 +0800 HBASE-21934 RemoteProcedureDispatcher should track the ongoing dispatched calls --- .../procedure2/RemoteProcedureDispatcher.java | 29 +++ .../assignment/RegionRemoteProcedureBase.java | 5 + .../assignment/RegionTransitionProcedure.java | 1 + .../master/procedure/ServerRemoteProcedure.java| 131 ++ .../master/procedure/SplitWALRemoteProcedure.java | 84 +- .../SwitchRpcThrottleRemoteProcedure.java | 61 + .../master/replication/RefreshPeerProcedure.java | 71 +- .../SyncReplicationReplayWALRemoteProcedure.java | 70 + .../procedure/TestServerRemoteProcedure.java | 282 + 9 files changed, 474 insertions(+), 260 deletions(-) diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java index 958b071..da9d08c 100644 --- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java +++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java @@ -172,6 +172,16 @@ public abstract class RemoteProcedureDispatcher implements RemoteNode { private Set operations; +private final Set dispatchedOperations = new HashSet<>(); protected BufferNode(final TRemote key) { super(key, 0); @@ -358,6 +379,8 @@ public abstract class RemoteProcedureDispatcher operation.storeInDispatchedQueue()) +.forEach(operation -> dispatchedOperations.add(operation)); this.operations = null; } } @@ -367,6 +390,12 @@ public abstract class RemoteProcedureDispatcherhttp://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.hbase.master.procedure; + +import java.io.IOException; + +import org.apache.hadoop.hbase.ServerName; +import org.apache.hadoop.hbase.procedure2.FailedRemoteDispatchException; +import org.apache.hadoop.hbase.procedure2.Procedure; +import org.apache.hadoop.hbase.procedure2.ProcedureEvent; +import org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException; +import org.apache.hadoop.hbase.procedure2.ProcedureYieldException; +import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher; +import org.apache.hadoop.hbase.procedure2.RemoteProcedureException; +import org.apache.yetus.audience.InterfaceAudience; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@InterfaceAudience.Private +/** + * This extract the common used methods of procedures which are send to remote servers. Developers + * who extends this class only need to override remoteCallBuild() and complete(). This procedure + * will help add the operation to {@link RSProcedureDispatcher} + * + * If adding the operation to dispatcher failed, addOperationToNode will throw + * FailedRemoteDispatchException, and this procedure will return null which procedure Executor will + * mark this procedure as complete. Thus the upper layer of this procedure must have a way to + * check if this procedure really succeed and how to deal with it. + * + * If sending the operation to remote RS failed, dispatcher will call remoteCallFailed() to + * handle this, which actually call remoteOperationDone with the exception. + * If the targetServer crashed but this procedure has no response, than dispatcher will call + * remoteOperationFailed() to handle this, which also calls remoteOperationDone with the exception. + * If the operation is successful, then remoteOperationCompleted will be called and actually calls + * the remoteOperationDone without exception. + * + * In remoteOperationDone, we'll check if the procedure is already get wake up by others. Then + * developer could implement complete() based on their own purpose. + * + * But basic logic is that if operation succeed, set succ to true and do the clean work. + * + * If operation failed and require to resend it to the same server, leave the succ as false. + * + * If operation failed and require to resend it to another server, set succ to true and upper layer + * should be able to find out
[hbase] branch branch-2 updated: HBASE-21505 - proposal for a more consistent report on status
This is an automated email from the ASF dual-hosted git repository. tianjy pushed a commit to branch branch-2 in repository https://gitbox.apache.org/repos/asf/hbase.git The following commit(s) were added to refs/heads/branch-2 by this push: new a8af0e5 HBASE-21505 - proposal for a more consistent report on status a8af0e5 is described below commit a8af0e58942314ad4fd7837a5fafae440259eace Author: Wellington Chevreuil AuthorDate: Tue Feb 19 14:47:18 2019 + HBASE-21505 - proposal for a more consistent report on status Signed-off-by: Jingyun Tian --- .../java/org/apache/hadoop/hbase/ServerLoad.java | 9 + .../org/apache/hadoop/hbase/ServerMetrics.java | 6 + .../apache/hadoop/hbase/ServerMetricsBuilder.java | 15 +- .../hbase/replication/ReplicationLoadSource.java | 142 +- .../hadoop/hbase/shaded/protobuf/ProtobufUtil.java | 23 ++- .../MetricsReplicationSourceSource.java| 3 + .../MetricsReplicationGlobalSourceSource.java | 21 ++- .../MetricsReplicationSourceSourceImpl.java| 18 +- .../src/main/protobuf/ClusterStatus.proto | 7 + .../hadoop/hbase/regionserver/HRegionServer.java | 4 +- .../HBaseInterClusterReplicationEndpoint.java | 12 +- .../replication/regionserver/MetricsSource.java| 75 ++-- .../replication/regionserver/Replication.java | 20 +- .../replication/regionserver/ReplicationLoad.java | 85 +++-- .../regionserver/ReplicationSource.java| 38 +++- .../regionserver/ReplicationSourceManager.java | 17 +- .../regionserver/ReplicationSourceShipper.java | 23 +-- .../regionserver/ReplicationSourceWALReader.java | 8 +- .../replication/regionserver/WALEntryStream.java | 2 + .../hbase/master/TestGetReplicationLoad.java | 48 - .../hbase/replication/TestReplicationBase.java | 27 ++- .../hbase/replication/TestReplicationStatus.java | 203 - hbase-shell/src/main/ruby/hbase/admin.rb | 118 +--- 23 files changed, 735 insertions(+), 189 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java index 7a1019a..15c8e63 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java @@ -391,6 +391,15 @@ public class ServerLoad implements ServerMetrics { /** * Call directly from client such as hbase shell + * @return a map of ReplicationLoadSource list per peer id + */ + @Override + public Map> getReplicationLoadSourceMap() { +return metrics.getReplicationLoadSourceMap(); + } + + /** + * Call directly from client such as hbase shell * @return ReplicationLoadSink */ @Override diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java index 1e1d395..391e62f 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java @@ -77,6 +77,12 @@ public interface ServerMetrics { /** * Call directly from client such as hbase shell + * @return a map of ReplicationLoadSource list per peer id + */ + Map> getReplicationLoadSourceMap(); + + /** + * Call directly from client such as hbase shell * @return ReplicationLoadSink */ @Nullable diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java index 2a487d7..a22907b 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java @@ -18,8 +18,11 @@ package org.apache.hadoop.hbase; import edu.umd.cs.findbugs.annotations.Nullable; + +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -75,7 +78,7 @@ public final class ServerMetricsBuilder { .setRegionMetrics(serverLoadPB.getRegionLoadsList().stream() .map(RegionMetricsBuilder::toRegionMetrics).collect(Collectors.toList())) .setReplicationLoadSources(serverLoadPB.getReplLoadSourceList().stream() - .map(ProtobufUtil::toReplicationLoadSource).collect(Collectors.toList())) + .map(ProtobufUtil::toReplicationLoadSource).collect(Collectors.toList())) .setReplicationLoadSink(serverLoadPB.hasReplLoadSink() ? ProtobufUtil.toReplicationLoadSink(serverLoadPB.getReplLoadSink()) : null) @@ -302,6 +305,16 @@ public final class ServerMetricsBuilder { } @Override +public Map> getReplicationLoadSourceMap(){ + Map> sourcesMap =
[hbase] branch master updated: HBASE-21505 - proposal for a more consistent report on status
This is an automated email from the ASF dual-hosted git repository. tianjy 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 482b505 HBASE-21505 - proposal for a more consistent report on status 482b505 is described below commit 482b505796e1dfe33551c1d20af2ff9d1d6a38dc Author: Wellington Chevreuil AuthorDate: Mon Dec 10 10:10:36 2018 + HBASE-21505 - proposal for a more consistent report on status Signed-off-by: Jingyun Tian --- .../java/org/apache/hadoop/hbase/ServerLoad.java | 9 + .../org/apache/hadoop/hbase/ServerMetrics.java | 6 + .../apache/hadoop/hbase/ServerMetricsBuilder.java | 15 +- .../hbase/replication/ReplicationLoadSource.java | 142 +- .../hadoop/hbase/shaded/protobuf/ProtobufUtil.java | 23 ++- .../MetricsReplicationSourceSource.java| 3 + .../MetricsReplicationGlobalSourceSource.java | 21 ++- .../MetricsReplicationSourceSourceImpl.java| 18 +- .../src/main/protobuf/ClusterStatus.proto | 7 + .../hadoop/hbase/regionserver/HRegionServer.java | 4 +- .../HBaseInterClusterReplicationEndpoint.java | 12 +- .../replication/regionserver/MetricsSource.java| 75 ++-- .../replication/regionserver/Replication.java | 21 +-- .../replication/regionserver/ReplicationLoad.java | 85 +++-- .../regionserver/ReplicationSource.java| 37 +++- .../regionserver/ReplicationSourceManager.java | 5 + .../regionserver/ReplicationSourceShipper.java | 23 +-- .../regionserver/ReplicationSourceWALReader.java | 8 +- .../replication/regionserver/WALEntryStream.java | 2 + .../hbase/master/TestGetReplicationLoad.java | 48 - .../hbase/replication/TestReplicationBase.java | 27 ++- .../hbase/replication/TestReplicationStatus.java | 203 - hbase-shell/src/main/ruby/hbase/admin.rb | 118 +--- 23 files changed, 724 insertions(+), 188 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java index dbf0070..f7f3204 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java @@ -402,6 +402,15 @@ public class ServerLoad implements ServerMetrics { /** * Call directly from client such as hbase shell + * @return a map of ReplicationLoadSource list per peer id + */ + @Override + public Map> getReplicationLoadSourceMap() { +return metrics.getReplicationLoadSourceMap(); + } + + /** + * Call directly from client such as hbase shell * @return ReplicationLoadSink */ @Override diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java index 1e1d395..391e62f 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java @@ -77,6 +77,12 @@ public interface ServerMetrics { /** * Call directly from client such as hbase shell + * @return a map of ReplicationLoadSource list per peer id + */ + Map> getReplicationLoadSourceMap(); + + /** + * Call directly from client such as hbase shell * @return ReplicationLoadSink */ @Nullable diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java index 44b..5721660 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java @@ -18,8 +18,11 @@ package org.apache.hadoop.hbase; import edu.umd.cs.findbugs.annotations.Nullable; + +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -75,7 +78,7 @@ public final class ServerMetricsBuilder { .setRegionMetrics(serverLoadPB.getRegionLoadsList().stream() .map(RegionMetricsBuilder::toRegionMetrics).collect(Collectors.toList())) .setReplicationLoadSources(serverLoadPB.getReplLoadSourceList().stream() - .map(ProtobufUtil::toReplicationLoadSource).collect(Collectors.toList())) + .map(ProtobufUtil::toReplicationLoadSource).collect(Collectors.toList())) .setReplicationLoadSink(serverLoadPB.hasReplLoadSink() ? ProtobufUtil.toReplicationLoadSink(serverLoadPB.getReplLoadSink()) : null) @@ -302,6 +305,16 @@ public final class ServerMetricsBuilder { } @Override +public Map> getReplicationLoadSourceMap(){ + Map> sourcesMap =
[hbase] branch master updated: Revert "HBASE-21505 - proposal for a more consistent report on status"
This is an automated email from the ASF dual-hosted git repository. tianjy 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 eedc33d Revert "HBASE-21505 - proposal for a more consistent report on status" eedc33d is described below commit eedc33dfd277ce6b86a0ce626375e9f048c6a589 Author: Jingyun Tian AuthorDate: Wed Feb 20 18:06:42 2019 +0800 Revert "HBASE-21505 - proposal for a more consistent report on status" This reverts commit c57802058829daa6ab8c65fc9c388535bf187283. --- .../java/org/apache/hadoop/hbase/ServerLoad.java | 9 - .../org/apache/hadoop/hbase/ServerMetrics.java | 6 - .../apache/hadoop/hbase/ServerMetricsBuilder.java | 15 +- .../hbase/replication/ReplicationLoadSource.java | 142 +- .../hadoop/hbase/shaded/protobuf/ProtobufUtil.java | 23 +-- .../MetricsReplicationSourceSource.java| 3 - .../MetricsReplicationGlobalSourceSource.java | 21 +-- .../MetricsReplicationSourceSourceImpl.java| 18 +- .../src/main/protobuf/ClusterStatus.proto | 7 - .../hadoop/hbase/regionserver/HRegionServer.java | 4 +- .../HBaseInterClusterReplicationEndpoint.java | 12 +- .../replication/regionserver/MetricsSource.java| 75 ++-- .../replication/regionserver/Replication.java | 21 ++- .../replication/regionserver/ReplicationLoad.java | 85 ++--- .../regionserver/ReplicationSource.java| 37 +--- .../regionserver/ReplicationSourceManager.java | 5 - .../regionserver/ReplicationSourceShipper.java | 23 ++- .../regionserver/ReplicationSourceWALReader.java | 8 +- .../replication/regionserver/WALEntryStream.java | 2 - .../hbase/master/TestGetReplicationLoad.java | 48 + .../hbase/replication/TestReplicationBase.java | 27 +-- .../hbase/replication/TestReplicationStatus.java | 203 + hbase-shell/src/main/ruby/hbase/admin.rb | 119 +++- 23 files changed, 188 insertions(+), 725 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java index f7f3204..dbf0070 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java @@ -402,15 +402,6 @@ public class ServerLoad implements ServerMetrics { /** * Call directly from client such as hbase shell - * @return a map of ReplicationLoadSource list per peer id - */ - @Override - public Map> getReplicationLoadSourceMap() { -return metrics.getReplicationLoadSourceMap(); - } - - /** - * Call directly from client such as hbase shell * @return ReplicationLoadSink */ @Override diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java index 391e62f..1e1d395 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java @@ -77,12 +77,6 @@ public interface ServerMetrics { /** * Call directly from client such as hbase shell - * @return a map of ReplicationLoadSource list per peer id - */ - Map> getReplicationLoadSourceMap(); - - /** - * Call directly from client such as hbase shell * @return ReplicationLoadSink */ @Nullable diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java index 5721660..44b 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java @@ -18,11 +18,8 @@ package org.apache.hadoop.hbase; import edu.umd.cs.findbugs.annotations.Nullable; - -import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -78,7 +75,7 @@ public final class ServerMetricsBuilder { .setRegionMetrics(serverLoadPB.getRegionLoadsList().stream() .map(RegionMetricsBuilder::toRegionMetrics).collect(Collectors.toList())) .setReplicationLoadSources(serverLoadPB.getReplLoadSourceList().stream() - .map(ProtobufUtil::toReplicationLoadSource).collect(Collectors.toList())) + .map(ProtobufUtil::toReplicationLoadSource).collect(Collectors.toList())) .setReplicationLoadSink(serverLoadPB.hasReplLoadSink() ? ProtobufUtil.toReplicationLoadSink(serverLoadPB.getReplLoadSink()) : null) @@ -305,16 +302,6 @@ public final class ServerMetricsBuilder { } @Override -public Map>
[hbase] branch master updated: HBASE-21505 - proposal for a more consistent report on status
This is an automated email from the ASF dual-hosted git repository. tianjy 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 c578020 HBASE-21505 - proposal for a more consistent report on status c578020 is described below commit c57802058829daa6ab8c65fc9c388535bf187283 Author: Wellington Chevreuil AuthorDate: Mon Dec 10 10:10:36 2018 + HBASE-21505 - proposal for a more consistent report on status Signed-off-by: Jingyun Tian --- .../java/org/apache/hadoop/hbase/ServerLoad.java | 9 + .../org/apache/hadoop/hbase/ServerMetrics.java | 6 + .../apache/hadoop/hbase/ServerMetricsBuilder.java | 15 +- .../hbase/replication/ReplicationLoadSource.java | 142 +- .../hadoop/hbase/shaded/protobuf/ProtobufUtil.java | 23 ++- .../MetricsReplicationSourceSource.java| 3 + .../MetricsReplicationGlobalSourceSource.java | 21 ++- .../MetricsReplicationSourceSourceImpl.java| 18 +- .../src/main/protobuf/ClusterStatus.proto | 7 + .../hadoop/hbase/regionserver/HRegionServer.java | 4 +- .../HBaseInterClusterReplicationEndpoint.java | 12 +- .../replication/regionserver/MetricsSource.java| 75 ++-- .../replication/regionserver/Replication.java | 21 +-- .../replication/regionserver/ReplicationLoad.java | 85 +++-- .../regionserver/ReplicationSource.java| 37 +++- .../regionserver/ReplicationSourceManager.java | 5 + .../regionserver/ReplicationSourceShipper.java | 23 +-- .../regionserver/ReplicationSourceWALReader.java | 8 +- .../replication/regionserver/WALEntryStream.java | 2 + .../hbase/master/TestGetReplicationLoad.java | 48 - .../hbase/replication/TestReplicationBase.java | 27 ++- .../hbase/replication/TestReplicationStatus.java | 203 - hbase-shell/src/main/ruby/hbase/admin.rb | 119 +--- 23 files changed, 725 insertions(+), 188 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java index dbf0070..f7f3204 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerLoad.java @@ -402,6 +402,15 @@ public class ServerLoad implements ServerMetrics { /** * Call directly from client such as hbase shell + * @return a map of ReplicationLoadSource list per peer id + */ + @Override + public Map> getReplicationLoadSourceMap() { +return metrics.getReplicationLoadSourceMap(); + } + + /** + * Call directly from client such as hbase shell * @return ReplicationLoadSink */ @Override diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java index 1e1d395..391e62f 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java @@ -77,6 +77,12 @@ public interface ServerMetrics { /** * Call directly from client such as hbase shell + * @return a map of ReplicationLoadSource list per peer id + */ + Map> getReplicationLoadSourceMap(); + + /** + * Call directly from client such as hbase shell * @return ReplicationLoadSink */ @Nullable diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java index 44b..5721660 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java @@ -18,8 +18,11 @@ package org.apache.hadoop.hbase; import edu.umd.cs.findbugs.annotations.Nullable; + +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -75,7 +78,7 @@ public final class ServerMetricsBuilder { .setRegionMetrics(serverLoadPB.getRegionLoadsList().stream() .map(RegionMetricsBuilder::toRegionMetrics).collect(Collectors.toList())) .setReplicationLoadSources(serverLoadPB.getReplLoadSourceList().stream() - .map(ProtobufUtil::toReplicationLoadSource).collect(Collectors.toList())) + .map(ProtobufUtil::toReplicationLoadSource).collect(Collectors.toList())) .setReplicationLoadSink(serverLoadPB.hasReplLoadSink() ? ProtobufUtil.toReplicationLoadSink(serverLoadPB.getReplLoadSink()) : null) @@ -302,6 +305,16 @@ public final class ServerMetricsBuilder { } @Override +public Map> getReplicationLoadSourceMap(){ + Map> sourcesMap =
[hbase] branch branch-2 updated: HBASE-21404 Master/RS navbar active state does not work
This is an automated email from the ASF dual-hosted git repository. tianjy pushed a commit to branch branch-2 in repository https://gitbox.apache.org/repos/asf/hbase.git The following commit(s) were added to refs/heads/branch-2 by this push: new 3ef6366 HBASE-21404 Master/RS navbar active state does not work 3ef6366 is described below commit 3ef6366c4f07c76c1ea26b7a3cde214379afdd61 Author: Nihal Jain AuthorDate: Sun Jan 27 16:50:14 2019 +0530 HBASE-21404 Master/RS navbar active state does not work Signed-off-by: Jingyun Tian --- hbase-server/src/main/resources/hbase-webapps/master/footer.jsp | 6 ++ .../src/main/resources/hbase-webapps/regionserver/footer.jsp| 6 ++ 2 files changed, 12 insertions(+) diff --git a/hbase-server/src/main/resources/hbase-webapps/master/footer.jsp b/hbase-server/src/main/resources/hbase-webapps/master/footer.jsp index 1e078d6..53a7d0c 100644 --- a/hbase-server/src/main/resources/hbase-webapps/master/footer.jsp +++ b/hbase-server/src/main/resources/hbase-webapps/master/footer.jsp @@ -20,5 +20,11 @@ + + $(document).ready(function() { +$('li.active').removeClass('active'); +$('a[href="' + location.pathname + '"]').closest('li').addClass('active'); + }); + diff --git a/hbase-server/src/main/resources/hbase-webapps/regionserver/footer.jsp b/hbase-server/src/main/resources/hbase-webapps/regionserver/footer.jsp index 1e078d6..53a7d0c 100644 --- a/hbase-server/src/main/resources/hbase-webapps/regionserver/footer.jsp +++ b/hbase-server/src/main/resources/hbase-webapps/regionserver/footer.jsp @@ -20,5 +20,11 @@ + + $(document).ready(function() { +$('li.active').removeClass('active'); +$('a[href="' + location.pathname + '"]').closest('li').addClass('active'); + }); +
[hbase] branch master updated: HBASE-21404 Master/RS navbar active state does not work
This is an automated email from the ASF dual-hosted git repository. tianjy 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 1c71544 HBASE-21404 Master/RS navbar active state does not work 1c71544 is described below commit 1c71544497ace14e669141e925133aa358d89830 Author: Nihal Jain AuthorDate: Sun Jan 27 16:50:14 2019 +0530 HBASE-21404 Master/RS navbar active state does not work Signed-off-by: Jingyun Tian --- hbase-server/src/main/resources/hbase-webapps/master/footer.jsp | 6 ++ .../src/main/resources/hbase-webapps/regionserver/footer.jsp| 6 ++ 2 files changed, 12 insertions(+) diff --git a/hbase-server/src/main/resources/hbase-webapps/master/footer.jsp b/hbase-server/src/main/resources/hbase-webapps/master/footer.jsp index 1e078d6..53a7d0c 100644 --- a/hbase-server/src/main/resources/hbase-webapps/master/footer.jsp +++ b/hbase-server/src/main/resources/hbase-webapps/master/footer.jsp @@ -20,5 +20,11 @@ + + $(document).ready(function() { +$('li.active').removeClass('active'); +$('a[href="' + location.pathname + '"]').closest('li').addClass('active'); + }); + diff --git a/hbase-server/src/main/resources/hbase-webapps/regionserver/footer.jsp b/hbase-server/src/main/resources/hbase-webapps/regionserver/footer.jsp index 1e078d6..53a7d0c 100644 --- a/hbase-server/src/main/resources/hbase-webapps/regionserver/footer.jsp +++ b/hbase-server/src/main/resources/hbase-webapps/regionserver/footer.jsp @@ -20,5 +20,11 @@ + + $(document).ready(function() { +$('li.active').removeClass('active'); +$('a[href="' + location.pathname + '"]').closest('li').addClass('active'); + }); +
[hbase] branch branch-2 updated: HBASE-21729 Extract ProcedureCoordinatorRpcs and ProcedureMemberRpcs from CoordinatedStateManager
This is an automated email from the ASF dual-hosted git repository. tianjy pushed a commit to branch branch-2 in repository https://gitbox.apache.org/repos/asf/hbase.git The following commit(s) were added to refs/heads/branch-2 by this push: new 3e72cb7 HBASE-21729 Extract ProcedureCoordinatorRpcs and ProcedureMemberRpcs from CoordinatedStateManager 3e72cb7 is described below commit 3e72cb73ae46bd7a341288d12f06e1e42487d254 Author: Jingyun Tian AuthorDate: Fri Jan 25 11:22:56 2019 +0800 HBASE-21729 Extract ProcedureCoordinatorRpcs and ProcedureMemberRpcs from CoordinatedStateManager --- .../apache/hadoop/hbase/CoordinatedStateManager.java | 16 .../hbase/coordination/ZkCoordinatedStateManager.java | 18 -- 2 files changed, 34 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/CoordinatedStateManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/CoordinatedStateManager.java index ab146e7..1f351c5 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/CoordinatedStateManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/CoordinatedStateManager.java @@ -19,12 +19,7 @@ package org.apache.hadoop.hbase; import org.apache.hadoop.hbase.coordination.SplitLogManagerCoordination; import org.apache.hadoop.hbase.coordination.SplitLogWorkerCoordination; -import org.apache.hadoop.hbase.procedure.ProcedureCoordinatorRpcs; -import org.apache.hadoop.hbase.procedure.ProcedureMemberRpcs; import org.apache.yetus.audience.InterfaceAudience; -import org.apache.zookeeper.KeeperException; - -import java.io.IOException; /** * Implementations of this interface will keep and return to clients @@ -47,15 +42,4 @@ public interface CoordinatedStateManager { * Method to retrieve coordination for split log manager */ SplitLogManagerCoordination getSplitLogManagerCoordination(); - /** - * Method to retrieve {@link org.apache.hadoop.hbase.procedure.ProcedureCoordinatorRpcs} - */ - ProcedureCoordinatorRpcs getProcedureCoordinatorRpcs(String procType, String coordNode) - throws IOException; - - /** - * Method to retrieve {@link org.apache.hadoop.hbase.procedure.ProcedureMemberRpcs} - */ - ProcedureMemberRpcs getProcedureMemberRpcs(String procType) throws KeeperException; - } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZkCoordinatedStateManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZkCoordinatedStateManager.java index 91b617f..ba73d53 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZkCoordinatedStateManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZkCoordinatedStateManager.java @@ -17,18 +17,11 @@ */ package org.apache.hadoop.hbase.coordination; -import java.io.IOException; - import org.apache.hadoop.hbase.CoordinatedStateManager; import org.apache.hadoop.hbase.HBaseInterfaceAudience; import org.apache.hadoop.hbase.Server; import org.apache.hadoop.hbase.zookeeper.ZKWatcher; import org.apache.yetus.audience.InterfaceAudience; -import org.apache.hadoop.hbase.procedure.ProcedureCoordinatorRpcs; -import org.apache.hadoop.hbase.procedure.ProcedureMemberRpcs; -import org.apache.hadoop.hbase.procedure.ZKProcedureCoordinator; -import org.apache.hadoop.hbase.procedure.ZKProcedureMemberRpcs; -import org.apache.zookeeper.KeeperException; /** * ZooKeeper-based implementation of {@link org.apache.hadoop.hbase.CoordinatedStateManager}. @@ -55,15 +48,4 @@ public class ZkCoordinatedStateManager implements CoordinatedStateManager { public SplitLogManagerCoordination getSplitLogManagerCoordination() { return splitLogManagerCoordination; } - - @Override - public ProcedureCoordinatorRpcs getProcedureCoordinatorRpcs(String procType, String coordNode) - throws IOException { -return new ZKProcedureCoordinator(watcher, procType, coordNode); - } - - @Override - public ProcedureMemberRpcs getProcedureMemberRpcs(String procType) throws KeeperException { -return new ZKProcedureMemberRpcs(watcher, procType); - } }
[hbase] branch master updated: HBASE-21729 Extract ProcedureCoordinatorRpcs and ProcedureMemberRpcs from CoordinatedStateManager
This is an automated email from the ASF dual-hosted git repository. tianjy 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 91dffb0 HBASE-21729 Extract ProcedureCoordinatorRpcs and ProcedureMemberRpcs from CoordinatedStateManager 91dffb0 is described below commit 91dffb043a2d854d22f78d4be7847e6fb10e931c Author: Jingyun Tian AuthorDate: Thu Jan 24 19:30:52 2019 +0800 HBASE-21729 Extract ProcedureCoordinatorRpcs and ProcedureMemberRpcs from CoordinatedStateManager --- .../master/LogRollMasterProcedureManager.java | 6 ++-- .../LogRollRegionServerProcedureManager.java | 6 ++-- .../hadoop/hbase/CoordinatedStateManager.java | 16 - .../coordination/ZkCoordinatedStateManager.java| 18 -- .../procedure/ProcedureCoordinationManager.java| 35 ++ .../hbase/procedure/ProcedureCoordinator.java | 1 + .../hadoop/hbase/procedure/ProcedureMember.java| 1 + .../procedure/ZKProcedureCoordinationManager.java | 42 ++ 8 files changed, 85 insertions(+), 40 deletions(-) diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/master/LogRollMasterProcedureManager.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/master/LogRollMasterProcedureManager.java index d53b284..a3d5ce2 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/master/LogRollMasterProcedureManager.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/master/LogRollMasterProcedureManager.java @@ -24,20 +24,20 @@ import java.util.List; import java.util.concurrent.ThreadPoolExecutor; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hbase.CoordinatedStateManager; import org.apache.hadoop.hbase.ServerName; import org.apache.hadoop.hbase.backup.BackupRestoreConstants; import org.apache.hadoop.hbase.backup.impl.BackupManager; -import org.apache.hadoop.hbase.coordination.ZkCoordinatedStateManager; import org.apache.hadoop.hbase.errorhandling.ForeignException; import org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher; import org.apache.hadoop.hbase.master.MasterServices; import org.apache.hadoop.hbase.master.MetricsMaster; import org.apache.hadoop.hbase.procedure.MasterProcedureManager; import org.apache.hadoop.hbase.procedure.Procedure; +import org.apache.hadoop.hbase.procedure.ProcedureCoordinationManager; import org.apache.hadoop.hbase.procedure.ProcedureCoordinator; import org.apache.hadoop.hbase.procedure.ProcedureCoordinatorRpcs; import org.apache.hadoop.hbase.procedure.RegionServerProcedureManager; +import org.apache.hadoop.hbase.procedure.ZKProcedureCoordinationManager; import org.apache.hadoop.hbase.security.User; import org.apache.hadoop.hbase.security.access.AccessChecker; import org.apache.yetus.audience.InterfaceAudience; @@ -98,7 +98,7 @@ public class LogRollMasterProcedureManager extends MasterProcedureManager { // setup the default procedure coordinator ThreadPoolExecutor tpool = ProcedureCoordinator.defaultPool(name, opThreads); -CoordinatedStateManager coordManager = new ZkCoordinatedStateManager(master); +ProcedureCoordinationManager coordManager = new ZKProcedureCoordinationManager(master); ProcedureCoordinatorRpcs comms = coordManager.getProcedureCoordinatorRpcs(getProcedureSignature(), name); this.coordinator = new ProcedureCoordinator(comms, tpool, timeoutMillis, wakeFrequency); diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/regionserver/LogRollRegionServerProcedureManager.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/regionserver/LogRollRegionServerProcedureManager.java index 6c743a8..5d087a6 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/regionserver/LogRollRegionServerProcedureManager.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/regionserver/LogRollRegionServerProcedureManager.java @@ -22,17 +22,17 @@ import java.io.IOException; import java.util.concurrent.ThreadPoolExecutor; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hbase.CoordinatedStateManager; import org.apache.hadoop.hbase.backup.BackupRestoreConstants; import org.apache.hadoop.hbase.backup.impl.BackupManager; import org.apache.hadoop.hbase.backup.master.LogRollMasterProcedureManager; -import org.apache.hadoop.hbase.coordination.ZkCoordinatedStateManager; import org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher; +import org.apache.hadoop.hbase.procedure.ProcedureCoordinationManager; import org.apache.hadoop.hbase.procedure.ProcedureMember; import org.apache.hadoop.hbase.procedure.ProcedureMemberRpcs; import org.apache.hadoop.hbase.procedure.RegionServerProcedureManager; import org.apache.hadoop.hbase.procedure.Subprocedure; import
[1/2] hbase git commit: HBASE-21588 Procedure v2 wal splitting implementation
Repository: hbase Updated Branches: refs/heads/branch-2 348c2dfe9 -> f02ac310d http://git-wip-us.apache.org/repos/asf/hbase/blob/f02ac310/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.java -- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.java index af2076e..6751eaf 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.java @@ -21,6 +21,8 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.io.IOException; +import java.util.Arrays; +import java.util.Collection; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseClassTestRule; @@ -44,9 +46,13 @@ import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@RunWith(Parameterized.class) @Category({MasterTests.class, LargeTests.class}) public class TestServerCrashProcedure { @@ -58,6 +64,9 @@ public class TestServerCrashProcedure { protected HBaseTestingUtility util; + @Parameter + public boolean splitWALCoordinatedByZK; + private ProcedureMetrics serverCrashProcMetrics; private long serverCrashSubmittedCount = 0; private long serverCrashFailedCount = 0; @@ -67,6 +76,10 @@ public class TestServerCrashProcedure { conf.set("hbase.balancer.tablesOnMaster", "none"); conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 3); conf.setInt(HConstants.HBASE_CLIENT_SERVERSIDE_RETRIES_MULTIPLIER, 3); +conf.setBoolean("hbase.split.writer.creation.bounded", true); +conf.setInt("hbase.regionserver.hlog.splitlog.writer.threads", 8); +LOG.info("WAL splitting coordinated by zk? {}", splitWALCoordinatedByZK); +conf.setBoolean(HConstants.HBASE_SPLIT_WAL_COORDINATED_BY_ZK, splitWALCoordinatedByZK); } @Before @@ -173,7 +186,8 @@ public class TestServerCrashProcedure { @Test public void testConcurrentSCPForSameServer() throws Exception { -final TableName tableName = TableName.valueOf("testConcurrentSCPForSameServer"); +final TableName tableName = +TableName.valueOf("testConcurrentSCPForSameServer-" + splitWALCoordinatedByZK); try (Table t = createTable(tableName)) { // Load the table with a bit of data so some logs to split and some edits in each region. this.util.loadTable(t, HBaseTestingUtility.COLUMNS[0]); @@ -222,4 +236,9 @@ public class TestServerCrashProcedure { serverCrashSubmittedCount = serverCrashProcMetrics.getSubmittedCounter().getCount(); serverCrashFailedCount = serverCrashProcMetrics.getFailedCounter().getCount(); } + + @Parameterized.Parameters + public static Collection coordinatedByZK() { +return Arrays.asList(false, true); + } } http://git-wip-us.apache.org/repos/asf/hbase/blob/f02ac310/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestSplitWALProcedure.java -- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestSplitWALProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestSplitWALProcedure.java new file mode 100644 index 000..5c801c5 --- /dev/null +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestSplitWALProcedure.java @@ -0,0 +1,133 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.hbase.master.procedure; + +import static org.apache.hadoop.hbase.HConstants.HBASE_SPLIT_WAL_COORDINATED_BY_ZK; +import static org.apache.hadoop.hbase.HConstants.HBASE_SPLIT_WAL_MAX_SPLITTER; + +import java.ut
[2/2] hbase git commit: HBASE-21588 Procedure v2 wal splitting implementation
HBASE-21588 Procedure v2 wal splitting implementation Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/f02ac310 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/f02ac310 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/f02ac310 Branch: refs/heads/branch-2 Commit: f02ac310d249fb972705cd6621dfe495512d2d98 Parents: 348c2df Author: Jingyun Tian Authored: Tue Jan 8 09:49:13 2019 +0800 Committer: Jingyun Tian Committed: Tue Jan 8 17:26:58 2019 +0800 -- .../org/apache/hadoop/hbase/HConstants.java | 8 + .../src/main/protobuf/MasterProcedure.proto | 25 ++ .../SplitLogWorkerCoordination.java | 3 - .../ZkSplitLogWorkerCoordination.java | 6 +- .../org/apache/hadoop/hbase/master/HMaster.java | 18 + .../hadoop/hbase/master/MasterServices.java | 7 + .../hadoop/hbase/master/MasterWalManager.java | 6 +- .../hadoop/hbase/master/SplitWALManager.java| 239 .../master/procedure/ServerCrashProcedure.java | 76 +++- .../procedure/ServerProcedureInterface.java | 13 +- .../hbase/master/procedure/ServerQueue.java | 2 + .../master/procedure/SplitWALProcedure.java | 199 ++ .../procedure/SplitWALRemoteProcedure.java | 195 ++ .../hbase/regionserver/HRegionServer.java | 18 +- .../hbase/regionserver/SplitLogWorker.java | 99 ++--- .../hbase/regionserver/SplitWALCallable.java| 109 ++ .../hadoop/hbase/master/AbstractTestDLS.java| 3 +- .../hadoop/hbase/master/TestRestartCluster.java | 21 + .../hadoop/hbase/master/TestRollingRestart.java | 18 +- .../hbase/master/TestSplitWALManager.java | 383 +++ .../procedure/TestServerCrashProcedure.java | 21 +- .../master/procedure/TestSplitWALProcedure.java | 133 +++ .../hbase/regionserver/TestSplitLogWorker.java | 5 +- 23 files changed, 1537 insertions(+), 70 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/f02ac310/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java -- diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java index 7aa1494..bc184e5 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java @@ -1347,6 +1347,14 @@ public final class HConstants { public static final String HBASE_CLIENT_FAST_FAIL_INTERCEPTOR_IMPL = "hbase.client.fast.fail.interceptor.impl"; + public static final String HBASE_SPLIT_WAL_COORDINATED_BY_ZK = "hbase.split.wal.zk.coordinated"; + + public static final boolean DEFAULT_HBASE_SPLIT_COORDINATED_BY_ZK = true; + + public static final String HBASE_SPLIT_WAL_MAX_SPLITTER = "hbase.regionserver.wal.max.splitters"; + + public static final int DEFAULT_HBASE_SPLIT_WAL_MAX_SPLITTER = 2; + /** Config key for if the server should send backpressure and if the client should listen to * that backpressure from the server */ public static final String ENABLE_CLIENT_BACKPRESSURE = "hbase.client.backpressure.enabled"; http://git-wip-us.apache.org/repos/asf/hbase/blob/f02ac310/hbase-protocol-shaded/src/main/protobuf/MasterProcedure.proto -- diff --git a/hbase-protocol-shaded/src/main/protobuf/MasterProcedure.proto b/hbase-protocol-shaded/src/main/protobuf/MasterProcedure.proto index f96859c..1901282 100644 --- a/hbase-protocol-shaded/src/main/protobuf/MasterProcedure.proto +++ b/hbase-protocol-shaded/src/main/protobuf/MasterProcedure.proto @@ -308,6 +308,8 @@ enum ServerCrashState { SERVER_CRASH_WAIT_ON_ASSIGN = 9; SERVER_CRASH_SPLIT_META_LOGS = 10; SERVER_CRASH_ASSIGN_META = 11; + SERVER_CRASH_DELETE_SPLIT_META_WALS_DIR=12; + SERVER_CRASH_DELETE_SPLIT_WALS_DIR=13; SERVER_CRASH_HANDLE_RIT2 = 20[deprecated=true]; SERVER_CRASH_FINISH = 100; } @@ -502,4 +504,27 @@ message SwitchRpcThrottleStateData { message SwitchRpcThrottleRemoteStateData { required ServerName target_server = 1; required bool rpc_throttle_enabled = 2; +} + +message SplitWALParameter { + required string wal_path = 1; +} + + +message SplitWALData { + required string wal_path = 1; + required ServerName crashed_server = 2; + optional ServerName worker = 3; +} + +message SplitWALRemoteData { + required string wal_path = 1; + required ServerName crashed_server = 2; + required ServerName worker = 3; +} + +enum SplitWALState { + ACQUIRE_SPLIT_WAL_WORKER = 1; + DISPATCH_WAL_TO_WORKER = 2; + RELEASE_SPLIT_WORKER = 3; } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hbase/blob/f02ac310/hbas
[2/2] hbase git commit: HBASE-21588 Procedure v2 wal splitting implementation
HBASE-21588 Procedure v2 wal splitting implementation Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/281d6429 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/281d6429 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/281d6429 Branch: refs/heads/master Commit: 281d6429e55149cc4c05430dcc1d1dc136d8b245 Parents: 77db1fa Author: tianjingyun Authored: Sun Jan 6 01:31:59 2019 +0800 Committer: Jingyun Tian Committed: Mon Jan 7 15:58:15 2019 +0800 -- .../org/apache/hadoop/hbase/HConstants.java | 8 + .../src/main/protobuf/MasterProcedure.proto | 25 ++ .../SplitLogWorkerCoordination.java | 3 - .../ZkSplitLogWorkerCoordination.java | 6 +- .../org/apache/hadoop/hbase/master/HMaster.java | 18 + .../hadoop/hbase/master/MasterServices.java | 7 + .../hadoop/hbase/master/MasterWalManager.java | 6 +- .../hadoop/hbase/master/SplitWALManager.java| 239 .../master/procedure/ServerCrashProcedure.java | 76 +++- .../procedure/ServerProcedureInterface.java | 13 +- .../hbase/master/procedure/ServerQueue.java | 2 + .../master/procedure/SplitWALProcedure.java | 199 ++ .../procedure/SplitWALRemoteProcedure.java | 195 ++ .../hbase/regionserver/HRegionServer.java | 16 +- .../hbase/regionserver/SplitLogWorker.java | 10 +- .../hbase/regionserver/SplitWALCallable.java| 109 ++ .../hadoop/hbase/master/AbstractTestDLS.java| 3 +- .../hadoop/hbase/master/TestRestartCluster.java | 21 + .../hadoop/hbase/master/TestRollingRestart.java | 18 +- .../hbase/master/TestSplitWALManager.java | 383 +++ .../procedure/TestServerCrashProcedure.java | 21 +- .../master/procedure/TestSplitWALProcedure.java | 133 +++ .../hbase/regionserver/TestSplitLogWorker.java | 5 +- 23 files changed, 1491 insertions(+), 25 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/281d6429/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java -- diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java index fdc3d82..75ee687 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java @@ -1311,6 +1311,14 @@ public final class HConstants { public static final String HBASE_CLIENT_FAST_FAIL_INTERCEPTOR_IMPL = "hbase.client.fast.fail.interceptor.impl"; + public static final String HBASE_SPLIT_WAL_COORDINATED_BY_ZK = "hbase.split.wal.zk.coordinated"; + + public static final boolean DEFAULT_HBASE_SPLIT_COORDINATED_BY_ZK = true; + + public static final String HBASE_SPLIT_WAL_MAX_SPLITTER = "hbase.regionserver.wal.max.splitters"; + + public static final int DEFAULT_HBASE_SPLIT_WAL_MAX_SPLITTER = 2; + /** Config key for if the server should send backpressure and if the client should listen to * that backpressure from the server */ public static final String ENABLE_CLIENT_BACKPRESSURE = "hbase.client.backpressure.enabled"; http://git-wip-us.apache.org/repos/asf/hbase/blob/281d6429/hbase-protocol-shaded/src/main/protobuf/MasterProcedure.proto -- diff --git a/hbase-protocol-shaded/src/main/protobuf/MasterProcedure.proto b/hbase-protocol-shaded/src/main/protobuf/MasterProcedure.proto index b365373..59af722 100644 --- a/hbase-protocol-shaded/src/main/protobuf/MasterProcedure.proto +++ b/hbase-protocol-shaded/src/main/protobuf/MasterProcedure.proto @@ -308,6 +308,8 @@ enum ServerCrashState { SERVER_CRASH_WAIT_ON_ASSIGN = 9; SERVER_CRASH_SPLIT_META_LOGS = 10; SERVER_CRASH_ASSIGN_META = 11; + SERVER_CRASH_DELETE_SPLIT_META_WALS_DIR=12; + SERVER_CRASH_DELETE_SPLIT_WALS_DIR=13; SERVER_CRASH_HANDLE_RIT2 = 20[deprecated=true]; SERVER_CRASH_FINISH = 100; } @@ -565,4 +567,27 @@ message SwitchRpcThrottleStateData { message SwitchRpcThrottleRemoteStateData { required ServerName target_server = 1; required bool rpc_throttle_enabled = 2; +} + +message SplitWALParameter { + required string wal_path = 1; +} + + +message SplitWALData{ + required string wal_path = 1; + required ServerName crashed_server=2; + optional ServerName worker = 3; +} + +message SplitWALRemoteData{ + required string wal_path = 1; + required ServerName crashed_server=2; + required ServerName worker = 3; +} + +enum SplitWALState{ + ACQUIRE_SPLIT_WAL_WORKER = 1; + DISPATCH_WAL_TO_WORKER = 2; + RELEASE_SPLIT_WORKER = 3; } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hbase/blob/281d6429/hbase-server/src/
[1/2] hbase git commit: HBASE-21588 Procedure v2 wal splitting implementation
Repository: hbase Updated Branches: refs/heads/master 77db1fae0 -> 281d6429e http://git-wip-us.apache.org/repos/asf/hbase/blob/281d6429/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestSplitWALProcedure.java -- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestSplitWALProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestSplitWALProcedure.java new file mode 100644 index 000..5c801c5 --- /dev/null +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestSplitWALProcedure.java @@ -0,0 +1,133 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.hbase.master.procedure; + +import static org.apache.hadoop.hbase.HConstants.HBASE_SPLIT_WAL_COORDINATED_BY_ZK; +import static org.apache.hadoop.hbase.HConstants.HBASE_SPLIT_WAL_MAX_SPLITTER; + +import java.util.List; +import java.util.Optional; + +import org.apache.hadoop.fs.FileStatus; +import org.apache.hadoop.hbase.HBaseClassTestRule; +import org.apache.hadoop.hbase.HBaseTestingUtility; +import org.apache.hadoop.hbase.HConstants; +import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.client.Table; +import org.apache.hadoop.hbase.master.HMaster; +import org.apache.hadoop.hbase.master.SplitWALManager; +import org.apache.hadoop.hbase.procedure2.Procedure; +import org.apache.hadoop.hbase.procedure2.ProcedureExecutor; +import org.apache.hadoop.hbase.procedure2.ProcedureTestingUtility; +import org.apache.hadoop.hbase.regionserver.HRegionServer; +import org.apache.hadoop.hbase.testclassification.MasterTests; +import org.apache.hadoop.hbase.testclassification.MediumTests; +import org.apache.hadoop.hbase.util.Bytes; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Test; +import org.junit.experimental.categories.Category; + +@Category({ MasterTests.class, MediumTests.class }) +public class TestSplitWALProcedure { + @ClassRule + public static final HBaseClassTestRule CLASS_RULE = + HBaseClassTestRule.forClass(TestSplitWALProcedure.class); + + private static HBaseTestingUtility TEST_UTIL; + private HMaster master; + private TableName TABLE_NAME; + private SplitWALManager splitWALManager; + private byte[] FAMILY; + + @Before + public void setup() throws Exception { +TEST_UTIL = new HBaseTestingUtility(); +TEST_UTIL.getConfiguration().setBoolean(HBASE_SPLIT_WAL_COORDINATED_BY_ZK, false); +TEST_UTIL.getConfiguration().setInt(HBASE_SPLIT_WAL_MAX_SPLITTER, 1); +TEST_UTIL.startMiniCluster(3); +master = TEST_UTIL.getHBaseCluster().getMaster(); +splitWALManager = master.getSplitWALManager(); +TABLE_NAME = TableName.valueOf(Bytes.toBytes("TestSplitWALProcedure")); +FAMILY = Bytes.toBytes("test"); + } + + @After + public void teardown() throws Exception { +ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate( +master.getMasterProcedureExecutor(), false); +TEST_UTIL.shutdownMiniCluster(); + } + + @Test + public void testHandleDeadWorker() throws Exception { +Table table = TEST_UTIL.createTable(TABLE_NAME, FAMILY, TEST_UTIL.KEYS_FOR_HBA_CREATE_TABLE); +for (int i = 0; i < 10; i++) { + TEST_UTIL.loadTable(table, FAMILY); +} +HRegionServer testServer = TEST_UTIL.getHBaseCluster().getRegionServer(0); +ProcedureExecutor masterPE = master.getMasterProcedureExecutor(); +List wals = splitWALManager.getWALsToSplit(testServer.getServerName(), false); +Assert.assertEquals(1, wals.size()); +TEST_UTIL.getHBaseCluster().killRegionServer(testServer.getServerName()); +TEST_UTIL.waitFor(3, () -> master.getProcedures().stream() +.anyMatch(procedure -> procedure instanceof SplitWALProcedure)); +Procedure splitWALProcedure = master.getProcedures().stream() +.filter(procedure -> procedure instanceof SplitWALProcedure).findAny().get(); +Assert.assertNotNull(splitWALProcedure); +TEST_UTIL.waitFor(5000, () -> ((SplitWALProcedure) splitWALProcedure).getWorker() != null); +TEST_UTIL.getH
hbase git commit: HBASE-21565 Delete dead server from dead server list too early leads to concurrent Server Crash Procedures(SCP) for a same server
Repository: hbase Updated Branches: refs/heads/branch-2 d2832c170 -> 83e12153d HBASE-21565 Delete dead server from dead server list too early leads to concurrent Server Crash Procedures(SCP) for a same server Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/83e12153 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/83e12153 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/83e12153 Branch: refs/heads/branch-2 Commit: 83e12153d1c418072dc2eee3ead59011059901c8 Parents: d2832c1 Author: Jingyun Tian Authored: Tue Dec 18 17:12:12 2018 +0800 Committer: Jingyun Tian Committed: Wed Dec 19 18:42:23 2018 +0800 -- .../hbase/master/RegionServerTracker.java | 3 + .../hadoop/hbase/master/ServerManager.java | 17 ++--- .../master/assignment/AssignmentManager.java| 28 ++--- .../hbase/master/assignment/RegionStates.java | 3 +- .../hbase/master/assignment/ServerState.java| 2 +- .../master/assignment/ServerStateNode.java | 2 +- .../master/procedure/ServerCrashProcedure.java | 16 ++--- .../hadoop/hbase/HBaseTestingUtility.java | 7 ++- .../hadoop/hbase/master/TestRestartCluster.java | 65 .../procedure/TestServerCrashProcedure.java | 38 10 files changed, 151 insertions(+), 30 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/83e12153/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionServerTracker.java -- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionServerTracker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionServerTracker.java index f419732..9d33a21 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionServerTracker.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionServerTracker.java @@ -128,6 +128,9 @@ public class RegionServerTracker extends ZKListener { // '-SPLITTING'. Each splitting server should have a corresponding SCP. Log if not. splittingServersFromWALDir.stream().filter(s -> !deadServersFromPE.contains(s)). forEach(s -> LOG.error("{} has no matching ServerCrashProcedure", s)); +//create ServerNode for all possible live servers from wal directory +liveServersFromWALDir.stream() +.forEach(sn -> server.getAssignmentManager().getRegionStates().getOrCreateServer(sn)); watcher.registerListener(this); synchronized (this) { List servers = http://git-wip-us.apache.org/repos/asf/hbase/blob/83e12153/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java -- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java index e1ffda3..b4c4747 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java @@ -560,15 +560,18 @@ public class ServerManager { return false; } LOG.info("Processing expiration of " + serverName + " on " + this.master.getServerName()); -master.getAssignmentManager().submitServerCrash(serverName, true); - -// Tell our listeners that a server was removed -if (!this.listeners.isEmpty()) { - for (ServerListener listener : this.listeners) { -listener.serverRemoved(serverName); +long pid = master.getAssignmentManager().submitServerCrash(serverName, true); +if (pid <= 0) { + return false; +} else { + // Tell our listeners that a server was removed + if (!this.listeners.isEmpty()) { +for (ServerListener listener : this.listeners) { + listener.serverRemoved(serverName); +} } + return true; } -return true; } @VisibleForTesting http://git-wip-us.apache.org/repos/asf/hbase/blob/83e12153/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java -- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java index a564ea9..b7c2203 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java @@ -1343,24 +1343,36 @@ public class AssignmentManager { public long submitServerCrash(ServerName serverName, boolean shouldSplitWal) { boolean ca
hbase git commit: HBASE-21565 Delete dead server from dead server list too early leads to concurrent Server Crash Procedures(SCP) for a same server
Repository: hbase Updated Branches: refs/heads/master f78284685 -> c448604ce HBASE-21565 Delete dead server from dead server list too early leads to concurrent Server Crash Procedures(SCP) for a same server Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/c448604c Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/c448604c Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/c448604c Branch: refs/heads/master Commit: c448604ceb987d113913f0583452b2abce04db0d Parents: f782846 Author: Jingyun Tian Authored: Mon Dec 17 19:32:23 2018 +0800 Committer: Jingyun Tian Committed: Tue Dec 18 16:57:11 2018 +0800 -- .../hbase/master/RegionServerTracker.java | 3 + .../hadoop/hbase/master/ServerManager.java | 25 .../master/assignment/AssignmentManager.java| 28 ++--- .../hbase/master/assignment/RegionStates.java | 3 +- .../hbase/master/assignment/ServerState.java| 2 +- .../master/assignment/ServerStateNode.java | 2 +- .../master/procedure/ServerCrashProcedure.java | 16 ++--- .../hadoop/hbase/HBaseTestingUtility.java | 7 ++- .../hadoop/hbase/master/TestRestartCluster.java | 65 .../procedure/TestServerCrashProcedure.java | 38 10 files changed, 155 insertions(+), 34 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/c448604c/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionServerTracker.java -- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionServerTracker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionServerTracker.java index f419732..9d33a21 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionServerTracker.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionServerTracker.java @@ -128,6 +128,9 @@ public class RegionServerTracker extends ZKListener { // '-SPLITTING'. Each splitting server should have a corresponding SCP. Log if not. splittingServersFromWALDir.stream().filter(s -> !deadServersFromPE.contains(s)). forEach(s -> LOG.error("{} has no matching ServerCrashProcedure", s)); +//create ServerNode for all possible live servers from wal directory +liveServersFromWALDir.stream() +.forEach(sn -> server.getAssignmentManager().getRegionStates().getOrCreateServer(sn)); watcher.registerListener(this); synchronized (this) { List servers = http://git-wip-us.apache.org/repos/asf/hbase/blob/c448604c/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java -- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java index dc76d72..86d72d1 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java @@ -602,19 +602,22 @@ public class ServerManager { return false; } LOG.info("Processing expiration of " + serverName + " on " + this.master.getServerName()); -master.getAssignmentManager().submitServerCrash(serverName, true); - -// Tell our listeners that a server was removed -if (!this.listeners.isEmpty()) { - for (ServerListener listener : this.listeners) { -listener.serverRemoved(serverName); +long pid = master.getAssignmentManager().submitServerCrash(serverName, true); +if(pid <= 0) { + return false; +} else { + // Tell our listeners that a server was removed + if (!this.listeners.isEmpty()) { +for (ServerListener listener : this.listeners) { + listener.serverRemoved(serverName); +} } + // trigger a persist of flushedSeqId + if (flushedSeqIdFlusher != null) { +flushedSeqIdFlusher.triggerNow(); + } + return true; } -// trigger a persist of flushedSeqId -if (flushedSeqIdFlusher != null) { - flushedSeqIdFlusher.triggerNow(); -} -return true; } @VisibleForTesting http://git-wip-us.apache.org/repos/asf/hbase/blob/c448604c/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java -- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java index a564ea9..b7c2203 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentM
hbase git commit: add Jingyun Tian as a committer to the pom file
Repository: hbase Updated Branches: refs/heads/master 114377d42 -> 6e1ba39e3 add Jingyun Tian as a committer to the pom file Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/6e1ba39e Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/6e1ba39e Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/6e1ba39e Branch: refs/heads/master Commit: 6e1ba39e30e6662cdef7d8244176c8f42b213b24 Parents: 114377d Author: mi Authored: Tue Nov 13 15:09:16 2018 +0800 Committer: mi Committed: Tue Nov 13 15:09:16 2018 +0800 -- pom.xml | 5 + 1 file changed, 5 insertions(+) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/6e1ba39e/pom.xml -- diff --git a/pom.xml b/pom.xml index 3ace2e0..ebd97f7 100755 --- a/pom.xml +++ b/pom.xml @@ -552,6 +552,11 @@ yuzhih...@gmail.com -8 + + tianjy + tia...@apache.org + +8 + todd Todd Lipcon
hbase git commit: HBASE-21410 A helper page that help find all problematic regions and procedures
Repository: hbase Updated Branches: refs/heads/branch-2.1 e9e9d0dce -> c95832159 HBASE-21410 A helper page that help find all problematic regions and procedures Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/c9583215 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/c9583215 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/c9583215 Branch: refs/heads/branch-2.1 Commit: c95832159f74e0d4e6c9f067fbbeed15c05685de Parents: e9e9d0d Author: jingyuntian Authored: Fri Nov 9 15:43:21 2018 +0800 Committer: Jingyun Tian Committed: Tue Nov 13 11:11:36 2018 +0800 -- .../master/AssignmentManagerStatusTmpl.jamon| 2 +- .../hbase/tmpl/master/MasterStatusTmpl.jamon| 10 +- .../resources/hbase-webapps/master/rits.jsp | 120 +++ 3 files changed, 126 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/c9583215/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/AssignmentManagerStatusTmpl.jamon -- diff --git a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/AssignmentManagerStatusTmpl.jamon b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/AssignmentManagerStatusTmpl.jamon index 9c335dc..9f31483 100644 --- a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/AssignmentManagerStatusTmpl.jamon +++ b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/AssignmentManagerStatusTmpl.jamon @@ -50,7 +50,7 @@ int numOfPages = (int) Math.ceil(numOfRITs * 1.0 / ritsPerPage); Regions in Transition - <% numOfRITs %> region(s) in transition. + <% numOfRITs %> region(s) in transition. <%if ritStat.hasRegionsTwiceOverThreshold() %> <%elseif ritStat.hasRegionsOverThreshold() %> http://git-wip-us.apache.org/repos/asf/hbase/blob/c9583215/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon -- diff --git a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon index 3180c56..87e07b3 100644 --- a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon +++ b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon @@ -215,6 +215,9 @@ AssignmentManager assignmentManager = master.getAssignmentManager(); or re-run HBCK in repair mode. +<%if master.getAssignmentManager() != null %> + <& AssignmentManagerStatusTmpl; assignmentManager=master.getAssignmentManager()&> + <%if master.getMasterCoprocessorHost().findCoprocessor("RSGroupAdminEndpoint") != null %> RSGroup @@ -267,9 +270,6 @@ AssignmentManager assignmentManager = master.getAssignmentManager(); Peers <& peerConfigs &> -<%if master.getAssignmentManager() != null %> -<& AssignmentManagerStatusTmpl; assignmentManager=master.getAssignmentManager()&> - <%else> <& BackupMasterStatusTmpl; master = master &> @@ -534,9 +534,9 @@ AssignmentManager assignmentManager = master.getAssignmentManager(); <% tableState.getState() %> <% openRegionsCount %> -<% openingRegionsCount %> +<%if (openingRegionsCount > 0) %> <% openingRegionsCount %> <%else><% openingRegionsCount %> <% closedRegionsCount %> -<% closingRegionsCount %> +<%if (closingRegionsCount > 0) %> <% closingRegionsCount %> <%else><% closingRegionsCount %> <% offlineRegionsCount %> <% failedRegionsCount %> <% splitRegionsCount %> http://git-wip-us.apache.org/repos/asf/hbase/blob/c9583215/hbase-server/src/main/resources/hbase-webapps/master/rits.jsp -- diff --git a/hbase-server/src/main/resources/hbase-webapps/master/rits.jsp b/hbase-server/src/main/resources/hbase-webapps/master/rits.jsp new file mode 100644 index 000..e9566eb --- /dev/null +++ b/hbase-server/src/main/resources/hbase-webapps/master/rits.jsp @@ -0,0 +1,120 @@ +<%-- +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a cop