diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/sftp/SFTPFileSystem.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/sftp/SFTPFileSystem.java index 8b6267a6a18..e4e7bbf4da5 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/sftp/SFTPFileSystem.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/sftp/SFTPFileSystem.java @@ -279,7 +279,7 @@ public class SFTPFileSystem extends FileSystem { // block sizes on server. The assumption could be less than ideal. long blockSize = DEFAULT_BLOCK_SIZE; long modTime = attr.getMTime() * 1000; // convert to milliseconds - long accessTime = 0; + long accessTime = attr.getATime() * 1000L; FsPermission permission = getPermissions(sftpFile); // not be able to get the real user group name, just use the user and group // id diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/sftp/TestSFTPFileSystem.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/sftp/TestSFTPFileSystem.java index 36aaceed11c..ad54dc05213 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/sftp/TestSFTPFileSystem.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/sftp/TestSFTPFileSystem.java @@ -19,6 +19,8 @@ package org.apache.hadoop.fs.sftp; import java.io.IOException; import java.net.URI; +import java.nio.file.Files; +import java.nio.file.attribute.BasicFileAttributes; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -28,6 +30,7 @@ import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.LocalFileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.test.GenericTestUtils; import org.apache.hadoop.util.Shell; @@ -306,4 +309,15 @@ public class TestSFTPFileSystem { sftpFs.rename(file1, file2); } + @Test + public void testGetAccessTime() throws IOException { + Path file = touch(localFs, name.getMethodName().toLowerCase()); + LocalFileSystem local = (LocalFileSystem)localFs; + java.nio.file.Path path = (local).pathToFile(file).toPath(); + long accessTime1 = Files.readAttributes(path, BasicFileAttributes.class) + .lastAccessTime().toMillis(); + long accessTime2 = sftpFs.getFileStatus(file).getAccessTime(); + assertEquals(accessTime1, accessTime2); + } + }