You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mb...@apache.org on 2016/08/17 21:42:30 UTC

hbase git commit: HBASE-16378 Procedure v2 - Make ProcedureException extend HBaseException

Repository: hbase
Updated Branches:
  refs/heads/master 7999bb9bd -> e637a61e2


HBASE-16378 Procedure v2 - Make ProcedureException extend HBaseException


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/e637a61e
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/e637a61e
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/e637a61e

Branch: refs/heads/master
Commit: e637a61e26aeb442ea1c1593fdbd0b15b48f5642
Parents: 7999bb9
Author: Matteo Bertozzi <ma...@cloudera.com>
Authored: Wed Aug 17 14:31:08 2016 -0700
Committer: Matteo Bertozzi <ma...@cloudera.com>
Committed: Wed Aug 17 14:31:08 2016 -0700

----------------------------------------------------------------------
 .../hadoop/hbase/util/ForeignExceptionUtil.java  | 19 +++++++++++++++++++
 .../hbase/procedure2/ProcedureException.java     |  5 ++---
 .../procedure2/RemoteProcedureException.java     |  2 +-
 .../master/procedure/ServerCrashProcedure.java   |  4 ----
 4 files changed, 22 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/e637a61e/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ForeignExceptionUtil.java
----------------------------------------------------------------------
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ForeignExceptionUtil.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ForeignExceptionUtil.java
index a0006ed..f9aa531 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ForeignExceptionUtil.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ForeignExceptionUtil.java
@@ -18,6 +18,7 @@
 package org.apache.hadoop.hbase.util;
 
 import java.io.IOException;
+import java.lang.reflect.Constructor;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -37,6 +38,24 @@ import org.apache.hadoop.hbase.protobuf.generated.ErrorHandlingProtos.StackTrace
 public final class ForeignExceptionUtil {
   private ForeignExceptionUtil() { }
 
+  public static Exception toException(final ForeignExceptionMessage eem) {
+    final GenericExceptionMessage gem = eem.getGenericException();
+    final StackTraceElement[] trace = toStackTrace(gem.getTraceList());
+    try {
+      Class<?> realClass = Class.forName(gem.getClassName());
+      Class<? extends Exception> cls = realClass.asSubclass(Exception.class);
+      Constructor<? extends Exception> cn = cls.getConstructor(String.class);
+      cn.setAccessible(true);
+      Exception re = cn.newInstance(gem.getMessage());
+      re.setStackTrace(trace);
+      return re;
+    } catch (Throwable e) {
+      Exception re = new Exception(gem.getMessage());
+      re.setStackTrace(trace);
+      return re;
+    }
+  }
+
   public static IOException toIOException(final ForeignExceptionMessage eem) {
     GenericExceptionMessage gem = eem.getGenericException();
     StackTraceElement[] trace = toStackTrace(gem.getTraceList());

http://git-wip-us.apache.org/repos/asf/hbase/blob/e637a61e/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureException.java
----------------------------------------------------------------------
diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureException.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureException.java
index 551a708..b640547 100644
--- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureException.java
+++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureException.java
@@ -18,14 +18,13 @@
 
 package org.apache.hadoop.hbase.procedure2;
 
-import java.io.IOException;
-
 import org.apache.hadoop.hbase.classification.InterfaceAudience;
 import org.apache.hadoop.hbase.classification.InterfaceStability;
+import org.apache.hadoop.hbase.exceptions.HBaseException;
 
 @InterfaceAudience.Private
 @InterfaceStability.Stable
-public class ProcedureException extends IOException {
+public class ProcedureException extends HBaseException {
   /** default constructor */
   public ProcedureException() {
     super();

http://git-wip-us.apache.org/repos/asf/hbase/blob/e637a61e/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureException.java
----------------------------------------------------------------------
diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureException.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureException.java
index 71aae84..456f83d 100644
--- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureException.java
+++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureException.java
@@ -111,6 +111,6 @@ public class RemoteProcedureException extends ProcedureException {
   }
 
   public static RemoteProcedureException fromProto(final ForeignExceptionMessage eem) {
-    return new RemoteProcedureException(eem.getSource(), ForeignExceptionUtil.toIOException(eem));
+    return new RemoteProcedureException(eem.getSource(), ForeignExceptionUtil.toException(eem));
   }
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/e637a61e/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java
index 2fbb559..0c38be7 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java
@@ -300,10 +300,6 @@ implements ServerProcedureInterface {
       default:
         throw new UnsupportedOperationException("unhandled state=" + state);
       }
-    } catch (ProcedureYieldException e) {
-      LOG.warn("Failed serverName=" + this.serverName + ", state=" + state + "; retry "
-          + e.getMessage());
-      throw e;
     } catch (IOException e) {
       LOG.warn("Failed serverName=" + this.serverName + ", state=" + state + "; retry", e);
     } catch (InterruptedException e) {