[hbase] branch master updated: HBASE-22234 Fix flaky TestHbck#testRecoverSplitAfterMetaUpdated

2019-04-14 Thread tianjy
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

2019-04-09 Thread tianjy
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

2019-04-09 Thread tianjy
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

2019-03-22 Thread tianjy
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

2019-03-22 Thread tianjy
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

2019-03-19 Thread tianjy
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

2019-03-19 Thread tianjy
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

2019-03-19 Thread tianjy
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

2019-03-04 Thread tianjy
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

2019-03-01 Thread tianjy
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

2019-03-01 Thread tianjy
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)

2019-03-01 Thread tianjy
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

2019-02-28 Thread tianjy
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

2019-02-24 Thread tianjy
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

2019-02-21 Thread tianjy
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"

2019-02-20 Thread tianjy
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

2019-02-18 Thread tianjy
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

2019-01-31 Thread tianjy
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

2019-01-31 Thread tianjy
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

2019-01-24 Thread tianjy
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

2019-01-24 Thread tianjy
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

2019-01-08 Thread tianjy
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

2019-01-08 Thread tianjy
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

2019-01-06 Thread tianjy
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

2019-01-06 Thread tianjy
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

2018-12-19 Thread tianjy
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

2018-12-18 Thread tianjy
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

2018-11-12 Thread tianjy
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

2018-11-12 Thread tianjy
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