You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "Stephen Chu (JIRA)" <ji...@apache.org> on 2013/05/25 02:18:20 UTC
[jira] [Created] (HDFS-4850) OfflineImageViewer fails on fsimage
with empty file because of NegativeArraySizeException
Stephen Chu created HDFS-4850:
---------------------------------
Summary: OfflineImageViewer fails on fsimage with empty file because of NegativeArraySizeException
Key: HDFS-4850
URL: https://issues.apache.org/jira/browse/HDFS-4850
Project: Hadoop HDFS
Issue Type: Bug
Components: tools
Affects Versions: 3.0.0
Reporter: Stephen Chu
I deployed hadoop-trunk HDFS and created _/user/schu/_. I then forced a checkpoint, fetched the fsimage, and ran the default OfflineImageViewer successfully on the fsimage.
{code}
schu-mbp:~ schu$ hdfs oiv -i fsimage_0000000000000000004 -o oiv_out_1
schu-mbp:~ schu$ cat oiv_out_1
drwxr-xr-x - schu supergroup 0 2013-05-24 16:59 /
drwxr-xr-x - schu supergroup 0 2013-05-24 16:59 /user
drwxr-xr-x - schu supergroup 0 2013-05-24 16:59 /user/schu
schu-mbp:~ schu$
{code}
I then touched an empty file _/user/schu/testFile1_
{code}
schu-mbp:~ schu$ hadoop fs -lsr /
lsr: DEPRECATED: Please use 'ls -R' instead.
drwxr-xr-x - schu supergroup 0 2013-05-24 16:59 /user
drwxr-xr-x - schu supergroup 0 2013-05-24 17:00 /user/schu
-rw-r--r-- 1 schu supergroup 0 2013-05-24 17:00 /user/schu/testFile1
{code}
and forced another checkpoint, fetched the fsimage, and reran the OfflineImageViewer. I encountered a NegativeArraySizeException:
{code}
schu-mbp:~ schu$ hdfs oiv -i fsimage_0000000000000000008 -o oiv_out_2
Input ended unexpectedly.
2013-05-24 17:01:13,622 ERROR [main] offlineImageViewer.OfflineImageViewer (OfflineImageViewer.java:go(140)) - image loading failed at offset 402
Exception in thread "main" java.lang.NegativeArraySizeException
at org.apache.hadoop.io.Text.readString(Text.java:458)
at org.apache.hadoop.hdfs.tools.offlineImageViewer.ImageLoaderCurrent.processPermission(ImageLoaderCurrent.java:370)
at org.apache.hadoop.hdfs.tools.offlineImageViewer.ImageLoaderCurrent.processINode(ImageLoaderCurrent.java:671)
at org.apache.hadoop.hdfs.tools.offlineImageViewer.ImageLoaderCurrent.processChildren(ImageLoaderCurrent.java:557)
at org.apache.hadoop.hdfs.tools.offlineImageViewer.ImageLoaderCurrent.processDirectoryWithSnapshot(ImageLoaderCurrent.java:464)
at org.apache.hadoop.hdfs.tools.offlineImageViewer.ImageLoaderCurrent.processDirectoryWithSnapshot(ImageLoaderCurrent.java:470)
at org.apache.hadoop.hdfs.tools.offlineImageViewer.ImageLoaderCurrent.processDirectoryWithSnapshot(ImageLoaderCurrent.java:470)
at org.apache.hadoop.hdfs.tools.offlineImageViewer.ImageLoaderCurrent.processLocalNameINodesWithSnapshot(ImageLoaderCurrent.java:444)
at org.apache.hadoop.hdfs.tools.offlineImageViewer.ImageLoaderCurrent.processINodes(ImageLoaderCurrent.java:398)
at org.apache.hadoop.hdfs.tools.offlineImageViewer.ImageLoaderCurrent.loadImage(ImageLoaderCurrent.java:199)
at org.apache.hadoop.hdfs.tools.offlineImageViewer.OfflineImageViewer.go(OfflineImageViewer.java:136)
at org.apache.hadoop.hdfs.tools.offlineImageViewer.OfflineImageViewer.main(OfflineImageViewer.java:260)
{code}
I've reproduced this scenario after formatting HDFS and restarting.
Attached are the data dirs, the fsimage before creating the empty file (fsimage_0000000000000000004) and the fsimage afterwards (fsimage_0000000000000000004) and their outputs, oiv_out_1 and oiv_out_2 respectively.
The oiv_out_2 does not include the empty _/user/schu/testFile1_.
I haven't checked this on branch-2 but if I have time I will.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira