Hi Enis, I guess the reason your patch fails is because the name returned for all inodes (except the root) will have two "/" in the beginning, e.g. //user/dhruba.
Thanks, dhruba -----Original Message----- From: Enis Soztutar [mailto:[EMAIL PROTECTED] Sent: Friday, July 27, 2007 7:38 AM To: [email protected] Subject: Re: [jira] Commented: (HADOOP-1647) DistributedFileSystem.getFileStatus() fails for path "/" Dhruba, your version fixes the problem and passes the unit tests, However I also wonder why my version does not pass the tests. Maybe there are some assumptions that are wrong. I think we may benefit by examining the cause. My patch fails in org.apache.hadoop.dfs.TestCheckpoint org.apache.hadoop.dfs.TestDFSFinalize org.apache.hadoop.dfs.TestDFSShell org.apache.hadoop.dfs.TestFsck org.apache.hadoop.dfs.TestRestartDFS org.apache.hadoop.fs.TestCopyFiles org.apache.hadoop.mapred.TestMiniMRClasspath org.apache.hadoop.mapred.TestMiniMRDFSCaching org.apache.hadoop.mapred.TestMiniMRWithDFS quite an success for a line liner *smile*. Anyhow i will not be around for a while so i cannot pursue this further. Other than that +1 for Dhruba's patch to be applied both 0.14 and 0.15. Raghu Angadi (JIRA) wrote: > [ https://issues.apache.org/jira/browse/HADOOP-1647?page=com.atlassian.jira.pl ugin.system.issuetabpanels:comment-tabpanel#action_12515905 ] > > Raghu Angadi commented on HADOOP-1647: > -------------------------------------- > > I am curious how Enis' patch above is functionally different? Is there any case where rootDir has non null parent? > > >> DistributedFileSystem.getFileStatus() fails for path "/" >> -------------------------------------------------------- >> >> Key: HADOOP-1647 >> URL: https://issues.apache.org/jira/browse/HADOOP-1647 >> Project: Hadoop >> Issue Type: Bug >> Components: dfs >> Affects Versions: 0.14.0, 0.15.0 >> Reporter: Enis Soztutar >> Assignee: dhruba borthakur >> Priority: Blocker >> Fix For: 0.14.0, 0.15.0 >> >> Attachments: fileStatus.patch, getFileStatusJavadoc.patch >> >> >> DistributedFileSystem#getFileStatus throws the following exception when invoked with new Path("/"). LocalFileSystem does not. The code to produce this error is >> {code} >> public static void main(String[] args) throws Exception{ >> Configuration conf = new Configuration(); >> FileSystem fs = FileSystem.get(conf); >> Path path = new Path("/"); >> System.out.println("Path : \"" + path.toString() + "\""); >> System.out.println(fs.isDirectory(path)); >> System.out.println(fs.getFileStatus(path).isDir()); >> } >> {code} >> for Local configuration the code prints : >> {code} >> Path : "/" >> true >> true >> {code} >> For a new formatted dfs with only one file /user/enis/file.txt, Path could not be created. >> {code} >> Path : "/" >> false >> Exception in thread "main" org.apache.hadoop.ipc.RemoteException: java.io.IOException: java.lang.IllegalArgumentException: Can not create a Path from an empty string >> at org.apache.hadoop.fs.Path.checkPathArg(Path.java:82) >> at org.apache.hadoop.fs.Path.<init>(Path.java:90) >> at org.apache.hadoop.dfs.DFSFileInfo.<init>(DFSFileInfo.java:59) >> at org.apache.hadoop.dfs.FSDirectory.getFileInfo(FSDirectory.java:729) >> at org.apache.hadoop.dfs.FSNamesystem.getFileInfo(FSNamesystem.java:1301) >> at org.apache.hadoop.dfs.NameNode.getFileInfo(NameNode.java:488) >> at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) >> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl .java:25) >> at java.lang.reflect.Method.invoke(Method.java:585) >> at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:340) >> at org.apache.hadoop.ipc.Server$Handler.run(Server.java:566) >> at org.apache.hadoop.ipc.Client.call(Client.java:470) >> at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:165) >> at org.apache.hadoop.dfs.$Proxy0.getFileInfo(Unknown Source) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39 ) >> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl .java:25) >> at java.lang.reflect.Method.invoke(Method.java:585) >> at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocati onHandler.java:82) >> at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHand ler.java:59) >> at org.apache.hadoop.dfs.$Proxy0.getFileInfo(Unknown Source) >> at org.apache.hadoop.dfs.DFSClient.getFileInfo(DFSClient.java:430) >> at org.apache.hadoop.dfs.DistributedFileSystem.getFileStatus(DistributedFileSys tem.java:319) >> at org.apache.hadoop.util.TestIsDir.main(TestIsDir.java:38) >> {code} >> > >
