[
https://issues.apache.org/jira/browse/HBASE-4754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13146077#comment-13146077
]
stack commented on HBASE-4754:
------------------------------
+1 on patch, thats good how you kept the change in one place over in FSUtils.,
and on getting it in so Roman can continue his testing. This will do for now.
Later we can let go of this modified listStatus symantec.
> FSTableDescriptors.getTableInfoPath() should handle FileNotFoundException
> -------------------------------------------------------------------------
>
> Key: HBASE-4754
> URL: https://issues.apache.org/jira/browse/HBASE-4754
> Project: HBase
> Issue Type: Bug
> Affects Versions: 0.92.0
> Reporter: Ted Yu
> Assignee: Ted Yu
> Priority: Blocker
> Fix For: 0.92.0
>
> Attachments: 4754-0.92.txt, 4754-v2.txt, 4754.txt
>
>
> As reported by Roman in the thread entitled 'HBase 0.92/Hadoop 0.22 test
> results', table creation would result in the following if hadoop 0.22 is the
> underlying platform:
> {code}
> 11/11/05 19:08:48 INFO handler.CreateTableHandler: Attemping to create
> the table b
> 11/11/05 19:08:48 ERROR handler.CreateTableHandler: Error trying to
> create the table b
> java.io.FileNotFoundException: File
> hdfs://ip-10-110-254-200.ec2.internal:17020/hbase/b does not exist.
> at
> org.apache.hadoop.hdfs.DistributedFileSystem.listStatus(DistributedFileSystem.java:387)
> at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:1085)
> at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:1110)
> at
> org.apache.hadoop.hbase.util.FSTableDescriptors.getTableInfoPath(FSTableDescriptors.java:257)
> at
> org.apache.hadoop.hbase.util.FSTableDescriptors.getTableInfoPath(FSTableDescriptors.java:243)
> at
> org.apache.hadoop.hbase.util.FSTableDescriptors.createTableDescriptor(FSTableDescriptors.java:566)
> at
> org.apache.hadoop.hbase.util.FSTableDescriptors.createTableDescriptor(FSTableDescriptors.java:535)
> at
> org.apache.hadoop.hbase.util.FSTableDescriptors.createTableDescriptor(FSTableDescriptors.java:519)
> at
> org.apache.hadoop.hbase.master.handler.CreateTableHandler.handleCreateTable(CreateTableHandler.java:140)
> at
> org.apache.hadoop.hbase.master.handler.CreateTableHandler.process(CreateTableHandler.java:126)
> at
> org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:168)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:619)
> {code}
> This was due to how DistributedFileSystem.listStatus() in 0.22 handles
> non-existent directory:
> {code}
> @Override
> public FileStatus[] listStatus(Path p) throws IOException {
> String src = getPathName(p);
> // fetch the first batch of entries in the directory
> DirectoryListing thisListing = dfs.listPaths(
> src, HdfsFileStatus.EMPTY_NAME);
> if (thisListing == null) { // the directory does not exist
> throw new FileNotFoundException("File " + p + " does not exist.");
> }
> {code}
> So in FSTableDescriptors.getTableInfoPath(), we should catch
> FileNotFoundException and treat it the same way as status being null.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira