HDFS-13586. Fsync fails on directories on Windows. Contributed by Lukas Majercack.

This commit is contained in:
Inigo Goiri 2018-05-17 19:26:44 -07:00
parent 2f2dd22aad
commit 8783613696

View File

@ -414,6 +414,13 @@ public static void fsync(File fileToSync) throws IOException {
"File/Directory " + fileToSync.getAbsolutePath() + " does not exist"); "File/Directory " + fileToSync.getAbsolutePath() + " does not exist");
} }
boolean isDir = fileToSync.isDirectory(); boolean isDir = fileToSync.isDirectory();
// HDFS-13586, FileChannel.open fails with AccessDeniedException
// for any directory, ignore.
if (isDir && Shell.WINDOWS) {
return;
}
// If the file is a directory we have to open read-only, for regular files // If the file is a directory we have to open read-only, for regular files
// we must open r/w for the fsync to have an effect. See // we must open r/w for the fsync to have an effect. See
// http://blog.httrack.com/blog/2013/11/15/ // http://blog.httrack.com/blog/2013/11/15/