[ https://issues.apache.org/jira/browse/HADOOP-12603?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15037764#comment-15037764 ]
Alan Burlison commented on HADOOP-12603: ---------------------------------------- [~cnauroth] thanks for the detailed explanation of the background, that has clarified the issues. No, Solaris does not have {{futimes()}} but it does have both {{futimens()}} and {{utimensat()}} which are both POSIX functions, and are both available on Linux. The closes match for {{futimes()}} is {{futimens()}}, the only difference being that {{futimes()}} takes a {{struct timeval}} as a parameter and {{futimens()}} takes a {{struct timespec}}. If you are looking at a JNI solution then {{futimens()}} looks like it is the better option. However I think NIO will work just fine on Solaris for updating file times, if I trace the operation of {{java.nio.file.attribute.BasicFileAttributeView.setTimes()}} I see this: {code} /2: openat(AT_FDCWD, "/tmp/l", O_RDONLY) = 47 /2: uucopy(0xFFFF80FFBCDFC970, 0xFFFF80FFBCDFC910, 32) = 0 /2: utimensat(47, NULL, 0xFFFF80FFBCDFC930, 0) = 0 /2: close(47) = 0 {code} So it is already using {{utimensat()}}. > TestSymlinkLocalFSFileContext#testSetTimesSymlinkToDir occasionally fail > ------------------------------------------------------------------------ > > Key: HADOOP-12603 > URL: https://issues.apache.org/jira/browse/HADOOP-12603 > Project: Hadoop Common > Issue Type: Bug > Reporter: Wei-Chiu Chuang > Assignee: Wei-Chiu Chuang > Labels: solaris, windows > Attachments: HADOOP-12603.001.patch, HADOOP-12603.002.patch > > > I have observed this test failure a few times in the past. When it fails, the > expected access time (of the file link) is always 1000 less than the actual > access time. > Error Message > {noformat} > expected:<1448478654000> but was:<1448478655000> > {noformat} > Stacktrace > {noformat} > java.lang.AssertionError: expected:<1448478654000> but was:<1448478655000> > at org.junit.Assert.fail(Assert.java:88) > at org.junit.Assert.failNotEquals(Assert.java:743) > at org.junit.Assert.assertEquals(Assert.java:118) > at org.junit.Assert.assertEquals(Assert.java:555) > at org.junit.Assert.assertEquals(Assert.java:542) > at > org.apache.hadoop.fs.SymlinkBaseTest.testSetTimesSymlinkToDir(SymlinkBaseTest.java:1391) > at > org.apache.hadoop.fs.TestSymlinkLocalFS.testSetTimesSymlinkToDir(TestSymlinkLocalFS.java:233) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) > at > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) > at > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) > at > org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) > at > org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:74) > {noformat} > Standard Output > {noformat} > 2015-11-25 19:10:55,231 WARN fs.FileUtil (FileUtil.java:symLink(813)) - > Command 'ln -s > /testptch/hadoop/hadoop-common-project/hadoop-common/target/test/data/4/vae1ng5t75/test1/file > > /testptch/hadoop/hadoop-common-project/hadoop-common/target/test/data/4/vae1ng5t75/test2/linkToFile' > failed 1 with: ln: failed to create symbolic link > '/testptch/hadoop/hadoop-common-project/hadoop-common/target/test/data/4/vae1ng5t75/test2/linkToFile': > No such file or directory > 2015-11-25 19:10:56,212 WARN fs.FileUtil (FileUtil.java:symLink(813)) - > Command 'ln -s > /testptch/hadoop/hadoop-common-project/hadoop-common/target/test/data/4/vae1ng5t75/test1/file > > /testptch/hadoop/hadoop-common-project/hadoop-common/target/test/data/4/vae1ng5t75/test1/linkToFile' > failed 1 with: ln: failed to create symbolic link > '/testptch/hadoop/hadoop-common-project/hadoop-common/target/test/data/4/vae1ng5t75/test1/linkToFile': > File exists > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)