HADOOP-14065. AliyunOSS: oss directory filestatus should use meta time. Contributed by Fei Hui

This commit is contained in:
Kai Zheng 2017-02-09 18:00:22 +08:00
parent 37b4acf7ce
commit a8a594b4c8
2 changed files with 11 additions and 1 deletions

View File

@ -218,7 +218,8 @@ public class AliyunOSSFileSystem extends FileSystem {
throw new FileNotFoundException(path + ": No such file or directory!");
}
} else if (objectRepresentsDirectory(key, meta.getContentLength())) {
return new FileStatus(0, true, 1, 0, 0, qualifiedPath);
return new FileStatus(0, true, 1, 0, meta.getLastModified().getTime(),
qualifiedPath);
} else {
return new FileStatus(meta.getContentLength(), false, 1,
getDefaultBlockSize(path), meta.getLastModified().getTime(),

View File

@ -24,6 +24,7 @@ import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.contract.ContractTestUtils;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.fs.FileStatus;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
@ -142,4 +143,12 @@ public class TestAliyunOSSInputStream {
assertTrue(instream.available() == 0);
IOUtils.closeStream(instream);
}
@Test
public void testDirectoryModifiedTime() throws Exception {
Path emptyDirPath = setPath("/test/emptyDirectory");
fs.mkdirs(emptyDirPath);
FileStatus dirFileStatus = fs.getFileStatus(emptyDirPath);
assertTrue("expected the empty dir is new",
dirFileStatus.getModificationTime() > 0L);
}
}