From 2a418dce82b61126749e29ea6e42c741e25d43ea Mon Sep 17 00:00:00 2001 From: zhanghaobo Date: Thu, 9 Jan 2025 17:03:56 +0800 Subject: [PATCH] HDFS-17707. Optimize WithExistsCheck methods in concurrent scenario. --- .../apache/hadoop/hdfs/server/datanode/FileIoProvider.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/FileIoProvider.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/FileIoProvider.java index 552f5199f1d3a..21afbebaed71a 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/FileIoProvider.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/FileIoProvider.java @@ -243,7 +243,7 @@ public boolean deleteWithExistsCheck(@Nullable FsVolumeSpi volume, File f) { final long begin = profilingEventHook.beforeMetadataOp(volume, DELETE); try { faultInjectorEventHook.beforeMetadataOp(volume, DELETE); - boolean deleted = !f.exists() || f.delete(); + boolean deleted = !f.exists() || f.delete() || !f.exists(); profilingEventHook.afterMetadataOp(volume, DELETE, begin); if (!deleted) { LOG.warn("Failed to delete file {}", f); @@ -686,7 +686,7 @@ public void mkdirsWithExistsCheck( boolean succeeded = false; try { faultInjectorEventHook.beforeMetadataOp(volume, MKDIRS); - succeeded = dir.isDirectory() || dir.mkdirs(); + succeeded = dir.isDirectory() || dir.mkdirs() || dir.isDirectory(); profilingEventHook.afterMetadataOp(volume, MKDIRS, begin); } catch(Exception e) { onFailure(volume, begin);