瀏覽代碼

HADOOP-15789. DistCp does not clean staging folder if class extends DistCp. Contributed by Lawrence Andrews. (#4534)

Signed-off-by: Ayush Saxena <ayushsaxena@apache.org>
Ayush Saxena 2 年之前
父節點
當前提交
96f8e5b6f4
共有 1 個文件被更改,包括 9 次插入4 次删除
  1. 9 4
      hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/DistCp.java

+ 9 - 4
hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/DistCp.java

@@ -473,13 +473,18 @@ public class DistCp extends Configured implements Tool {
     return config;
   }
 
-  private synchronized void cleanup() {
+  /**
+   * Clean the staging folder created by distcp.
+   */
+  protected synchronized void cleanup() {
     try {
       if (metaFolder != null) {
-        if (jobFS != null) {
-          jobFS.delete(metaFolder, true);
+        synchronized (this) {
+          if (jobFS != null) {
+            jobFS.delete(metaFolder, true);
+          }
+          metaFolder = null;
         }
-        metaFolder = null;
       }
     } catch (IOException e) {
       LOG.error("Unable to cleanup meta folder: " + metaFolder, e);