Browse Source

MAPREDUCE-6621. Memory Leak in JobClient#submitJobInternal(). Contributed by Xuan Gong
(cherry picked from commit 43e669b22d9ac0b81ab8cc397c5d6d92bac986c6)

Conflicts:

hadoop-mapreduce-project/CHANGES.txt

Jason Lowe 9 năm trước cách đây
mục cha
commit
fc01ec866a

+ 3 - 0
hadoop-mapreduce-project/CHANGES.txt

@@ -33,6 +33,9 @@ Release 2.6.4 - UNRELEASED
     MAPREDUCE-6618. YarnClientProtocolProvider leaking the YarnClient thread.
     (Xuan Gong via jlowe)
 
+    MAPREDUCE-6621. Memory Leak in JobClient#submitJobInternal() (Xuan Gong
+    via jlowe)
+
 Release 2.6.3 - 2015-12-17
 
   INCOMPATIBLE CHANGES

+ 8 - 0
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/JobClient.java

@@ -563,10 +563,18 @@ public class JobClient extends CLI {
           return job;
         }
       });
+
+      Cluster prev = cluster;
       // update our Cluster instance with the one created by Job for submission
       // (we can't pass our Cluster instance to Job, since Job wraps the config
       // instance, and the two configs would then diverge)
       cluster = job.getCluster();
+
+      // It is important to close the previous cluster instance
+      // to cleanup resources.
+      if (prev != null) {
+        prev.close();
+      }
       return new NetworkedJob(job);
     } catch (InterruptedException ie) {
       throw new IOException("interrupted", ie);