hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rob Vesse (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HADOOP-13824) FsShell can suppress the real error if no error message is present
Date Mon, 21 Nov 2016 14:34:58 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-13824?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15683714#comment-15683714
] 

Rob Vesse commented on HADOOP-13824:
------------------------------------

Yes this patch worked for me, I was able to see the underlying error which was the following:

{noformat}
16/11/21 06:16:41 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your
platform... using builtin-java classes where applicable
-cat: Caught exception without message
java.nio.channels.UnresolvedAddressException
	at sun.nio.ch.Net.checkAddress(Net.java:157)
	at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:703)
	at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:192)
	at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531)
	at org.apache.hadoop.hdfs.DFSClient.newConnectedPeer(DFSClient.java:3436)
	at org.apache.hadoop.hdfs.BlockReaderFactory.nextTcpPeer(BlockReaderFactory.java:777)
	at org.apache.hadoop.hdfs.BlockReaderFactory.getRemoteBlockReaderFromTcp(BlockReaderFactory.java:694)
	at org.apache.hadoop.hdfs.BlockReaderFactory.build(BlockReaderFactory.java:355)
	at org.apache.hadoop.hdfs.DFSInputStream.blockSeekTo(DFSInputStream.java:656)
	at org.apache.hadoop.hdfs.DFSInputStream.readWithStrategy(DFSInputStream.java:882)
	at org.apache.hadoop.hdfs.DFSInputStream.read(DFSInputStream.java:934)
	at java.io.DataInputStream.read(DataInputStream.java:111)
	at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:85)
	at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:59)
	at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:119)
	at org.apache.hadoop.fs.shell.Display$Cat.printToStdout(Display.java:107)
	at org.apache.hadoop.fs.shell.Display$Cat.processPath(Display.java:102)
	at org.apache.hadoop.fs.shell.Command.processPaths(Command.java:317)
	at org.apache.hadoop.fs.shell.Command.processPathArgument(Command.java:289)
	at org.apache.hadoop.fs.shell.Command.processArgument(Command.java:271)
	at org.apache.hadoop.fs.shell.Command.processArguments(Command.java:255)
	at org.apache.hadoop.fs.shell.Command.processRawArguments(Command.java:201)
	at org.apache.hadoop.fs.shell.Command.run(Command.java:165)
	at org.apache.hadoop.fs.FsShell.run(FsShell.java:287)
	at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
	at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
	at org.apache.hadoop.fs.FsShell.main(FsShell.java:345)
Usage: hadoop fs [generic options] -cat [-ignoreCrc] <src> ...
{noformat}

This was the actual error I was expecting to see

> FsShell can suppress the real error if no error message is present
> ------------------------------------------------------------------
>
>                 Key: HADOOP-13824
>                 URL: https://issues.apache.org/jira/browse/HADOOP-13824
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: fs
>    Affects Versions: 2.7.1, 2.7.3
>            Reporter: Rob Vesse
>            Assignee: John Zhuge
>              Labels: supportability
>         Attachments: HADOOP-13824.001.patch
>
>
> The {{FsShell}} error handling assumes in {{displayError()}} that the {{message}} argument
is not {{null}}. However in the case where it is this leads to a NPE which results in suppressing
the actual error information since a higher level of error handling kicks in and just dumps
the stack trace of the NPE instead.
> e.g.
> {noformat}
> Exception in thread "main" java.lang.NullPointerException
> 	at org.apache.hadoop.fs.FsShell.displayError(FsShell.java:304)
> 	at org.apache.hadoop.fs.FsShell.run(FsShell.java:289)
> 	at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
> 	at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
> 	at org.apache.hadoop.fs.FsShell.main(FsShell.java:340)
> {noformat}
> This is deeply unhelpful because depending on what the underlying error was there may
be no stack dumped/logged for it (as HADOOP-7114 provides) since {{FsShell}} doesn't explicitly
dump traces for {{IllegalArgumentException}} which appears to be the underlying cause of my
issue.  Line 289 is where {{displayError()}} is called for {{IllegalArgumentException}} handling
and that catch clause does not log the error.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-issues-help@hadoop.apache.org


Mime
View raw message