Uma Maheswara Rao G created HDFS-15532:
------------------------------------------

             Summary: listFiles on root will fail if fallback root has file
                 Key: HDFS-15532
                 URL: https://issues.apache.org/jira/browse/HDFS-15532
             Project: Hadoop HDFS
          Issue Type: Sub-task
            Reporter: Uma Maheswara Rao G
            Assignee: Uma Maheswara Rao G


listFiles implementation gets the RemoteIterator created in InternalViewFSDirFs 
as the root is an InternalViewFSDir.  

If there is a fallback and a file exist at root level, it would have collected 
when collecting locatedStatuses. 

When its iterating over to that fallbacks file from  RemoteIterator (which was 
returned from InternalViewFSDirFs ), iterator's next will will call 
getFileBlockLocations if it's a file.


{code:java}
@Override
public LocatedFileStatus next() throws IOException {
 System.out.println(this);
 if (!hasNext()) {
 throw new NoSuchElementException("No more entries in " + f);
 }
 FileStatus result = stats[i++];
 // for files, use getBlockLocations(FileStatus, int, int) to avoid
 // calling getFileStatus(Path) to load the FileStatus again
 BlockLocation[] locs = result.isFile() ?
 getFileBlockLocations(result, 0, result.getLen()) :
 null;
 return new LocatedFileStatus(result, locs);
}{code}
 

this getFileBlockLocations will be made on InternalViewFSDirFs, as that 
Iterator created originally from that fs. 

InternalViewFSDirFs#getFileBlockLocations does not handle fallback cases. It's 
always expecting "/", this means it always assuming the dir.
But with the fallback and returning Iterator from InternalViewFSDirFs, will 
create problems.

Probably we need to handle fallback case in getFileBlockLocations as well.( 
Fallback only should be the reason for call coming to InternalViewFSDirFs with 
other than "/")

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to