diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/ResourceLocalizationService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/ResourceLocalizationService.java index 4236392..5d38797 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/ResourceLocalizationService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/ResourceLocalizationService.java @@ -1288,8 +1288,13 @@ private void cleanUpLocalDir(FileContext lfs, DeletionService del, private void renameLocalDir(FileContext lfs, String localDir, String localSubDir, long currentTimeStamp) { try { - lfs.rename(new Path(localDir, localSubDir), new Path( - localDir, localSubDir + "_DEL_" + currentTimeStamp)); + Path subDirPath = new Path(localDir, localSubDir); + RemoteIterator subDirStatus = lfs.listStatus(subDirPath); + if (subDirStatus != null && subDirStatus.hasNext()) { + // Renaming only when the given localSubDir is not empty + lfs.rename(subDirPath, new Path( + localDir, localSubDir + "_DEL_" + currentTimeStamp)); + } } catch (FileNotFoundException ex) { // No need to handle this exception // localSubDir may not be exist