Просмотр исходного кода

YARN-3594. WintuilsProcessStubExecutor.startStreamReader leaks streams. Contributed by Lars Francke.
(cherry picked from commit 132d909d4a6509af9e63e24cbb719be10006b6cd)

Junping Du 10 лет назад
Родитель
Сommit
5fb61d71b1

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

@@ -211,6 +211,9 @@ Release 2.8.0 - UNRELEASED
     YARN-3684. Changed ContainerExecutor's primary lifecycle methods to use a more
     YARN-3684. Changed ContainerExecutor's primary lifecycle methods to use a more
     extensible mechanism of context objects. (Sidharta Seethana via vinodkv)
     extensible mechanism of context objects. (Sidharta Seethana via vinodkv)
 
 
+    YARN-3594. WintuilsProcessStubExecutor.startStreamReader leaks streams.
+    (Lars Francke via junping_du)
+
   OPTIMIZATIONS
   OPTIMIZATIONS
 
 
     YARN-3339. TestDockerContainerExecutor should pull a single image and not
     YARN-3339. TestDockerContainerExecutor should pull a single image and not

+ 3 - 6
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/WindowsSecureContainerExecutor.java

@@ -501,17 +501,14 @@ public class WindowsSecureContainerExecutor extends DefaultContainerExecutor {
         
         
         @Override
         @Override
         public void run() {
         public void run() {
-          try
-          {
-            BufferedReader lines = new BufferedReader(
-                new InputStreamReader(stream, Charset.forName("UTF-8")));
+          try (BufferedReader lines = new BufferedReader(
+                   new InputStreamReader(stream, Charset.forName("UTF-8")))) {
             char[] buf = new char[512];
             char[] buf = new char[512];
             int nRead;
             int nRead;
             while ((nRead = lines.read(buf, 0, buf.length)) > 0) {
             while ((nRead = lines.read(buf, 0, buf.length)) > 0) {
               output.append(buf, 0, nRead);
               output.append(buf, 0, nRead);
             }
             }
-          }
-          catch(Throwable t) {
+          } catch (Throwable t) {
             LOG.error("Error occured reading the process stdout", t);
             LOG.error("Error occured reading the process stdout", t);
           }
           }
         }
         }