HDFS-3390. DFSAdmin should print full stack traces of errors when DEBUG logging is enabled. Contributed by Aaron T. Myers.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1336327 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Aaron Myers 2012-05-09 18:21:38 +00:00
parent c581de57a6
commit 34b9bc4e7f
2 changed files with 17 additions and 2 deletions

View File

@ -296,6 +296,9 @@ Release 2.0.0 - UNRELEASED
so that INodeFile and INodeFileUnderConstruction do not have to be used in so that INodeFile and INodeFileUnderConstruction do not have to be used in
block management. (John George via szetszwo) block management. (John George via szetszwo)
HDFS-3390. DFSAdmin should print full stack traces of errors when DEBUG
logging is enabled. (atm)
OPTIMIZATIONS OPTIMIZATIONS
HDFS-2477. Optimize computing the diff between a block report and the HDFS-2477. Optimize computing the diff between a block report and the

View File

@ -26,6 +26,8 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.TreeSet; import java.util.TreeSet;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.CommonConfigurationKeys; import org.apache.hadoop.fs.CommonConfigurationKeys;
@ -64,10 +66,12 @@ import org.apache.hadoop.util.ToolRunner;
@InterfaceAudience.Private @InterfaceAudience.Private
public class DFSAdmin extends FsShell { public class DFSAdmin extends FsShell {
static{ static {
HdfsConfiguration.init(); HdfsConfiguration.init();
} }
private static final Log LOG = LogFactory.getLog(DFSAdmin.class);
/** /**
* An abstract class for the execution of a file system command * An abstract class for the execution of a file system command
*/ */
@ -1089,6 +1093,7 @@ public class DFSAdmin extends FsShell {
return exitCode; return exitCode;
} }
Exception debugException = null;
exitCode = 0; exitCode = 0;
try { try {
if ("-report".equals(cmd)) { if ("-report".equals(cmd)) {
@ -1143,6 +1148,7 @@ public class DFSAdmin extends FsShell {
printUsage(""); printUsage("");
} }
} catch (IllegalArgumentException arge) { } catch (IllegalArgumentException arge) {
debugException = arge;
exitCode = -1; exitCode = -1;
System.err.println(cmd.substring(1) + ": " + arge.getLocalizedMessage()); System.err.println(cmd.substring(1) + ": " + arge.getLocalizedMessage());
printUsage(cmd); printUsage(cmd);
@ -1151,6 +1157,7 @@ public class DFSAdmin extends FsShell {
// This is a error returned by hadoop server. Print // This is a error returned by hadoop server. Print
// out the first line of the error message, ignore the stack trace. // out the first line of the error message, ignore the stack trace.
exitCode = -1; exitCode = -1;
debugException = e;
try { try {
String[] content; String[] content;
content = e.getLocalizedMessage().split("\n"); content = e.getLocalizedMessage().split("\n");
@ -1159,12 +1166,17 @@ public class DFSAdmin extends FsShell {
} catch (Exception ex) { } catch (Exception ex) {
System.err.println(cmd.substring(1) + ": " System.err.println(cmd.substring(1) + ": "
+ ex.getLocalizedMessage()); + ex.getLocalizedMessage());
debugException = ex;
} }
} catch (Exception e) { } catch (Exception e) {
exitCode = -1; exitCode = -1;
debugException = e;
System.err.println(cmd.substring(1) + ": " System.err.println(cmd.substring(1) + ": "
+ e.getLocalizedMessage()); + e.getLocalizedMessage());
} }
if (LOG.isDebugEnabled()) {
LOG.debug("Exception encountered:", debugException);
}
return exitCode; return exitCode;
} }