This is an automated email from the ASF dual-hosted git repository. vinayakumarb pushed a commit to branch branch-3.2 in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/branch-3.2 by this push: new 8c6478b HADOOP-17306. RawLocalFileSystem's lastModifiedTime() looses milli seconds in JDK < 10.b09 (#2387) 8c6478b is described below commit 8c6478b4058025e01e81a6c372ec3e9dfa36f196 Author: Vinayakumar B <vinayakum...@apache.org> AuthorDate: Fri Oct 23 11:30:02 2020 +0530 HADOOP-17306. RawLocalFileSystem's lastModifiedTime() looses milli seconds in JDK < 10.b09 (#2387) --- .../org/apache/hadoop/fs/RawLocalFileSystem.java | 11 +++++++--- .../hadoop/fs/TestRawLocalFileSystemContract.java | 25 ++++++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java index cf22105..5a9a44a 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java @@ -71,7 +71,12 @@ public class RawLocalFileSystem extends FileSystem { public static void useStatIfAvailable() { useDeprecatedFileStatus = !Stat.isAvailable(); } - + + @VisibleForTesting + static void setUseDeprecatedFileStatus(boolean useDeprecatedFileStatus) { + RawLocalFileSystem.useDeprecatedFileStatus = useDeprecatedFileStatus; + } + public RawLocalFileSystem() { workingDir = getInitialWorkingDirectory(); } @@ -693,8 +698,8 @@ public class RawLocalFileSystem extends FileSystem { DeprecatedRawLocalFileStatus(File f, long defaultBlockSize, FileSystem fs) throws IOException { super(f.length(), f.isDirectory(), 1, defaultBlockSize, - f.lastModified(), getLastAccessTime(f), - null, null, null, + Files.getLastModifiedTime(f.toPath()).toMillis(), + getLastAccessTime(f),null, null, null, new Path(f.getPath()).makeQualified(fs.getUri(), fs.getWorkingDirectory())); } diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestRawLocalFileSystemContract.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestRawLocalFileSystemContract.java index 3892f16..0d57e8f 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestRawLocalFileSystemContract.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestRawLocalFileSystemContract.java @@ -18,6 +18,7 @@ package org.apache.hadoop.fs; import java.io.File; +import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.test.GenericTestUtils; @@ -167,4 +168,28 @@ public class TestRawLocalFileSystemContract extends FileSystemContractBaseTest { } } + @Test + public void testMTimeAtime() throws IOException { + RawLocalFileSystem.setUseDeprecatedFileStatus(true); + try { + Path testDir = getTestBaseDir(); + String testFilename = "testmtime"; + Path path = new Path(testDir, testFilename); + Path file = new Path(path, "file"); + fs.create(file); + long now = System.currentTimeMillis(); + long mtime = (now % 1000 == 0) ? now + 1 : now; + long atime = (now % 1000 == 0) ? now + 2 : now; + fs.setTimes(file, mtime, atime); + FileStatus fileStatus = fs.getFileStatus(file); + if (!Shell.MAC) { + // HADOOP-17306 ; Skip MacOS because HFS+ does not support + // milliseconds for mtime. + assertEquals(mtime, fileStatus.getModificationTime()); + } + assertEquals(atime, fileStatus.getAccessTime()); + } finally { + RawLocalFileSystem.useStatIfAvailable(); + } + } } --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org