HDFS-15557. Log the reason why a storage log file can't be deleted (#2274)
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/util/AtomicFileOutputStream.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/util/AtomicFileOutputStream.java
index 33f976a..c6003e8 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/util/AtomicFileOutputStream.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/util/AtomicFileOutputStream.java
@@ -22,6 +22,7 @@
import java.io.FileOutputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
+import java.nio.file.Files;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -75,8 +76,12 @@
boolean renamed = tmpFile.renameTo(origFile);
if (!renamed) {
// On windows, renameTo does not replace.
- if (origFile.exists() && !origFile.delete()) {
- throw new IOException("Could not delete original file " + origFile);
+ if (origFile.exists()) {
+ try {
+ Files.delete(origFile.toPath());
+ } catch (IOException e) {
+ throw new IOException("Could not delete original file " + origFile, e);
+ }
}
try {
NativeIO.renameTo(tmpFile, origFile);