You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by vi...@apache.org on 2020/10/23 06:16:30 UTC
[hadoop] branch branch-3.2 updated: HADOOP-17306.
RawLocalFileSystem's lastModifiedTime() looses milli seconds in JDK <
10.b09 (#2387)
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 <vi...@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-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org