diff --git a/CHANGES.txt b/CHANGES.txt index bf474d47165..5f4b7aca3b6 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -798,6 +798,7 @@ Release 0.21.0 - Unreleased other times its sequence id, etc. HBASE-2873 Minor clean up in basescanner; fix a log and make deletes of region processing run in order + HBASE-2830 NotServingRegionException shouldn't log a stack trace NEW FEATURES HBASE-1961 HBase EC2 scripts diff --git a/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java b/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java index 9a22464518f..8a264e7e263 100644 --- a/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java +++ b/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java @@ -31,6 +31,7 @@ import org.apache.hadoop.hbase.HServerAddress; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.MasterNotRunningException; +import org.apache.hadoop.hbase.NotServingRegionException; import org.apache.hadoop.hbase.RemoteExceptionHandler; import org.apache.hadoop.hbase.TableNotFoundException; import org.apache.hadoop.hbase.client.MetaScanner.MetaScannerVisitor; @@ -1474,8 +1475,21 @@ public class HConnectionManager { LOG.debug("Failed all from " + request.address, e); failed.addAll(request.allPuts()); } catch (ExecutionException e) { - // all go into the failed list. - LOG.debug("Failed all from " + request.address, e); + Throwable cause = e.getCause(); + // Don't print stack trace if NSRE; NSRE is 'normal' operation. + if (cause instanceof NotServingRegionException) { + String msg = cause.getMessage(); + if (msg != null && msg.length() > 0) { + // msg is the exception as a String... we just want first line. + msg = msg.split("[\\n\\r]+\\s*at")[0]; + } + LOG.debug("Failed execution of all on " + request.address + + " because: " + msg); + } else { + // all go into the failed list. + LOG.debug("Failed execution of all on " + request.address, + e.getCause()); + } failed.addAll(request.allPuts()); // Just give up, leaving the batch put list in an untouched/semi-committed state diff --git a/src/main/java/org/apache/hadoop/hbase/ipc/HBaseServer.java b/src/main/java/org/apache/hadoop/hbase/ipc/HBaseServer.java index 6c517814406..d3c6c2169c5 100644 --- a/src/main/java/org/apache/hadoop/hbase/ipc/HBaseServer.java +++ b/src/main/java/org/apache/hadoop/hbase/ipc/HBaseServer.java @@ -918,7 +918,7 @@ public abstract class HBaseServer { try { value = call(call.param, call.timestamp); // make the call } catch (Throwable e) { - LOG.info(getName()+", call "+call+": error: " + e, e); + LOG.debug(getName()+", call "+call+": error: " + e, e); errorClass = e.getClass().getName(); error = StringUtils.stringifyException(e); } diff --git a/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 592e17bbd95..6a54736e0fb 100644 --- a/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -811,6 +811,11 @@ public class HRegionServer implements HRegionInterface, * @return Throwable converted to an IOE; methods can only let out IOEs. */ private Throwable cleanup(final Throwable t, final String msg) { + // Don't log as error if NSRE; NSRE is 'normal' operation. + if (t instanceof NotServingRegionException) { + LOG.debug("NotServingRegionException; " + t.getMessage()); + return t; + } if (msg == null) { LOG.error("", RemoteExceptionHandler.checkThrowable(t)); } else {